嵌入式软件与系统

嵌入式软件开发分为裸机程序和带操作系统的软件开发。

嵌入式系统以应用为中心,计算机技术为基础,软硬件可裁剪。

适用:系统对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统。

一般构成

嵌入式系统一般由嵌入式微处理器(微控制器)、外围硬件设备、嵌入式操作系统(可选)以及用户的应用程序等四个部分构成。

嵌入系统层级

如果将嵌入式系统分为四层:硬件层、驱动层、操作系统层和用户层,那系统学习这这四个层级的相关知识是非常必要的。一个知识全面的嵌入式系统工程师在职业发展的过程中不断加深这四个层级的认识、学习和理解。

以下内容引用自《百度百科》,有部分改编

1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。

硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言

2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。

驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得几百人年才能搞定。

4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂,并且有难度了。

补充—— 常见外围设备:

串行端口: RS-232、RS-422、RS-485

同步串行口: I2C、SPI等

USB

多媒体卡: SD卡,CF卡等

网络:以太网、LonWorks等

现场总线:CAN总线、LIN总线、PROFIBUS等

定时器:PLL、捕获比较模块和时间处理单元等

分立IO: GPIO

模拟-数字/数字-模拟转换(ADC/DAC)

调试接口: JTAG、ISP、IAP、ICSP等

学习框架

嵌入式系统学习框架

最后更新:2019-11-13