作为当今最热门最有发展前途的IT应用领域之一,如何学习嵌入式开发?

嵌入式操作系统简介

嵌入式操作系统(EmbeddedSystem)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用 VCD 机或手机,甚至组成普通 PC 终端设备的键盘、鼠标、硬盘、Modem 等均是由嵌入式处理器控制的。

嵌入式系统无疑是当前最热门最有发展前途的 IT 应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set TopBox)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。

为什么要学嵌入式软件开发?好处是什么?

(1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业 IT 人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如 ARM 处理器、嵌入式操作系统、MPEG 技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。

(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的 IT 企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11 等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。

(3)哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程 e”的掌上 PDA(南校区门口有广告),施工技术人员用该 PDA 可当场进行土木概预算和其它土木计算,据说销路特好。我认识的某大学老师,他开发的饭馆用的点菜 PDA(WinCE 平台,可无线连网和上网),据他说销路不错,饭馆点点 PDA 让客户点菜,多显派头档次。我记得 00 级 2 2 班当年有一组同学在学 Windows 程序设计课程时用 VC 设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成 PDA,估计会有些销路(上海火车站南广场的 Macdonald 便使用很漂亮的 PDA 给用户点食品,像摸像样的)。这些 PDA 的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

作为当今最热门最有发展前途的IT应用领域之一,如何学习嵌入式开发?

八大入门的知识点

1、C 语言

嵌入式 Linux 工程师的学习需要具备一定的 C 语言基础,C 语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解 C 语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。

2、Linux 基础

Linux 操作系统的概念、安装方法,详细了解 Linux 下的目录结构、基本命令、编辑器 VI ,编译器 GCC,调试器 GDB 和 Make 项目管理工具, Shell Makefile 脚本编写等知识,嵌入式开发环境的搭建。

3、Linux 系统编程

重点学习标准 I/O 库,Linux 多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对 Linux 应用开发的理解和代码调试的能力。

4、Linux 网络编程

计算机网络在嵌入式 Linux 系统应用开发过程中使用非常广泛,通过 Linux 网络发展、TCP/IP 协议、socket 编程、TCP 网络编程、UDP 网络编程、Web 编程开发等方面入手,全面了解 Linux 网络应用程序开发。重点学习网络编程相关 API,熟练掌握 TCP 协议服务器的编程方法和并发服务器的实现,了解 HTTP 协议及其实现方法,熟悉 UDP 广播、多播的原理及编程方法,掌握混合 C/S 架构网络通信系统的设计,熟悉 HTML,Javascript 等 Web 编程技术及实现方法。

5、数据结构与算法

数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其 C 语言实现过程。

6、C 、QT

C 是 Linux 应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及 C 的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于 QT 具有跨平台、面向对象、丰富 API、支持 2D/3D 渲染、支持 XML、多国语等强大功能,在嵌入式领域的 GUI 开发中得到了广范的应用,在本阶段通过基于 QT 图形库的学习使学员可以熟练编写 GUI 程序,并移植 QT 应用程序到 Cortex-A8 平台。包括 IDE 使用、QT 部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

7、Cortex A8 、Linux 平台开发

通过基于 ARM Cortex-A8 处理 s5pv210 了解芯片手册的基本阅读技巧,掌握 s5pv210 系统资源、时钟控制器、电源管理、异常中断控制器、nand flash 控制器等模块,为底层平台搭建做好准备。Linux 平台包括内核裁减、内核移植、交叉编译、GNU 工具使用、内核调试、Bootloader 介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在 s5pv210 实验平台上运行自己制作的 Linux 系统,集成部署 Linux 系统整个流程。同时了解 Android 操作系统开发流程。Android 系统是基于 Linux 平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA 等消费类电子产品。

8、驱动开发

驱动程序设计是嵌入式 Linux 开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉 Linux 的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备 ARM 硬件接口的基础知识,熟悉 ARM Cortex-A8 处理器 s5pv210 各资源、掌握 Linux 设备驱动原理框架,熟悉工程中常见 Linux 高级字符设备、块设备、网络设备、USB 设备等驱动开发,在工作中能独立胜任底层驱动开发。

作为当今最热门最有发展前途的IT应用领域之一,如何学习嵌入式开发?

十大课本上学不到的妙招

1、离开舒适圈

虽然当了多年的工程师、但自认是系统与软件技术“通才”的 DSP 与嵌入式软件开发顾问公司 Jetperch 创办人 MattLiberty 建议,不断更新并提升原本擅长的技术虽然很重要,但嵌入式工程师若能扩展自己的知识领域会更有益。走出舒适圈,挑战自我、去学习原本不熟悉的东西,包括工程以外的知识,例如与客户、同事之间的互动,将会收获良多。

2、学习利用搜索引擎

当了多年工程师、自认是“看得懂系统架构的软件人”的 PTRGroup 首席科学家 MichaelAnderson 认为,不要闭门造车,要善用开放源码世界的信息,很多常见的设计问题其实透过因特网就能找到同领域菁英贡献的程序代码;嵌入式工程师们要走出自己的小世界拥抱社群,与同领域的其他工程师们相互交流、互相帮助,而这也是开放源码世界的精神。

3、学习那些让因特网实现的技术

具备多年嵌入式工程师经验的独立产品设计与顾问公司 AuriumTechnologies 总经理 KenWada 认为,多数嵌入式领域工程师都知道如何撰写 C 或 C 语言程序,但有时候这样的技能是不够的;他建议嵌入式工程师学习因特网有关的技术,对职业生涯发展会有加分效果,例如他目前负责的几个开发案,都是在嵌入式系统中嵌入虚拟(virtual)的 XML,好让一些小型连网设备能具备“即插即用”的运作模式。

4、熟悉实时操作系统(RTOS)

在工程人才招募机构 RandstadTechnologies 负责嵌入式产业领域的解决方案经理 HenryWintz 表示,目前产业界对于熟悉 RTOS 的工程师需求很高,也愿意提供更高的薪资水平;因此他鼓励没有接触过 RTOS 的嵌入式工程师从一些较小型的系统着手,累积相关技术经验。此外他也发现产业界对嵌入式 Linux 人才有不少需求,主要是因为这种操作系统具备较大的设计弹性。

5、了解最新的处理器

有超过多年嵌入式软件工程师经验的 Embedded.fm 工程师 EleciaWhite 表示,除了要深入了解 C 或 C 等基本程序语言,有时也要认识一些热门的新程序语言以因应特殊设计需求,但更重要的是了解最新的处理器技术;处理器才是嵌入式系统的本质。因为我们的系统资源有限,我们需要了解可用的资源有哪些。

作为当今最热门最有发展前途的IT应用领域之一,如何学习嵌入式开发?

6、培养多元化技能与系统观

担任近多年工程师、具备许多不同领域技术经验的技术顾问公司 Rebelbot 顾问 JenCostillo 建议,原本从事较小型系统架构(例如 MCU)开发的工程师,可以开始去熟悉更大的系统(例如 Linux 驱动程序),反之亦然。尝试着去开发手机应用程序、或者是学习后端服务器的相关技术,能让你开启完全不同的观点;他并建议工程师去熟悉开放性硬件,现在市面上有不少现成的开发板,能让工程师专注于学习独特算法的开发。

7、要能熟悉开放源码软件

拥有多年工程师经验的 FreescaleSemiconductor 数字网络全球软件开发部门总监 RobOshana 表示,客户往往会要求在系统中整合一大堆软件,因此所有的嵌入式工程师需要熟悉各种软件;他建议工程师避免只专长单一领域,因为那可能会阻碍你的成长。对嵌入式工程师来说,确保自己对软硬件技术都很了解,是非常宝贵的价值。

8、建立系统级的工程思维

自诩为高信赖度嵌入式系统专家、担任了多年工程师的 E2V 电子系统总工程师 AdamTaylor 认为,嵌入式工程师拥有系统导向的思维是很重要的,有不少开发案遇到问题,就是因为没有在开发初期充分考虑基准、验证策略以及兼容性验证计划等项目;此外每个嵌入式工程师都应该具备优良的项目管理技巧,力求准时完成负责的项目。具备能明智因应技术与项目风险的能力,对职业生涯发展会很有帮助。

9、学习无线连结技术

自认是低阶嵌入式工程师、有多年工作经验的 iRobot 资深首席软件工程师 ChrisSvec 建议,嵌入式工程师需要在接下来 1~3 年学习无线连结技术,特别是 Wi-Fi 与蓝牙低功耗(BLE);因为现在的嵌入式设备(至少各种消费性电子都是)与使用者智能手机连结的主要(或唯一)方式,就是透过这些无线技术,虽然 Wi-Fi 与 BLE 不一定会是嵌入式系统的标准配备,但熟悉这些技术对嵌入式工程师来说会很实用。

10、要能明确表达自己的想法与意见透过文字或绘图

Micrum 总裁 JeanLaBrosse 认为,无论是哪一种工程师,都需要能有效表达自己的想法与意见;往往有些菜鸟工程师无法清晰表达自己的想法,因为抓不到重点,而最好的解决方法是练习将之图形化,例如画出流程图。这听起来好像有点过时,但有时利用各种图框组合来整理自己的思绪、表达想法会是很有用的,例如 iPad 的 iThoughts 应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月19日 下午9:34
下一篇 2024年5月19日 下午9:46

相关推荐

  • 株洲市智慧党建平台

    株洲市智慧党建平台 株洲市智慧党建平台是株洲市委政府为了提高党建工作水平,推动党建工作与智慧城市建设相结合而推出的一项创新性举措。该平台通过整合各种资源,为党建工作提供了更加全面、…

    科研百科 2024年11月5日
    18
  • 软件开发 团队建设

    软件开发是一个复杂而又充满挑战的过程,而团队建设则是确保软件开发团队高效运作的关键。在如今竞争激烈的市场中,一个强大的团队可以为企业带来巨大的竞争优势。本文将探讨软件开发团队建设的…

    科研百科 2023年7月23日
    180
  • 大学科研项目好做吗

    大学科研项目好做吗? 大学科研项目是许多学生和研究人员梦寐以求的机会。它们提供了许多挑战和机会,可以帮助自己提高自己的学术水平,并为未来的职业道路打下坚实的基础。但是,对于许多人来…

    科研百科 2025年4月5日
    1
  • 韶关项目绩效管理系统

    韶关项目绩效管理系统 随着项目管理的日益复杂和全球化,项目绩效管理已经成为了项目管理中不可或缺的一部分。而韶关项目的绩效管理系统则是一个典型的例子,展示了如何通过有效的绩效管理来提…

    科研百科 2024年12月20日
    0
  • 海文进度计划软件

    海文进度计划软件: 实现高效项目管理的利器 海文进度计划软件是一款功能强大的项目管理工具,可以帮助用户轻松地实现进度管理、任务分配、团队协作等功能。随着现代信息技术的不断发展,项目…

    科研百科 2024年5月29日
    89
  • 3款最好用的甘特图软件有哪些?(3款最好用的甘特图软件有哪些呢)

    1.worktile 主要做的是项目,系统分为:消息,项目,日历,网盘,应用,应用里包括简报,考勤,审批,销售,门户,公告,考核等。项目里面有一点非常好,可以置顶处理,个人觉得这个…

    科研百科 2023年4月11日
    484
  • 成都理工大学科研成果奖励办法(成都理工大学科研项目成果)

    成都理工大学科研项目成果 近年来,成都理工大学在科技创新方面取得了显著进展,特别是在材料科学、信息技术、能源技术等领域。作为一所综合性大学,成都理工大学一直注重科学研究和技术创新,…

    科研百科 2024年8月3日
    52
  • 健康管理风险评估|赶走亚健康,为你的健康保驾护航(健康风险评估与管理)

    全国卫生健康大会上,中共中央、国务院发布了《“健康中国2030”规划纲要》“把健康融入所有政策”;“健康优先,把健康摆在优先发展的战略地位”。说明“健康中国”将逐渐从顶层设计,走入…

    科研百科 2022年11月3日
    262
  • 【高质量发展】五项大奖!以科研为龙头打造高品质课程!(高质量科研成果)

    五大奖项揭晓 30门课程受表彰 在北京现代音乐研修学院庆祝第39个教师节表彰大会上,五大项科研类奖项现场揭晓:15门“教学公开课”、8门“云喜课”、4门“校级一门好课”、1门“校级…

    科研百科 2024年4月19日
    92
  • 档案管理的方法与步骤

    档案管理的方法与步骤 档案管理是一个非常重要的工作,可以帮助我们保存和管理我们的文件和资料。一个有效的档案管理方法可以帮助我们更好地组织和管理我们的文件和资料,从而提高工作效率和文…

    科研百科 2024年8月30日
    38