一、嵌入式系统
1.概念
嵌入式系统是以应用为中心,以计算机技术为基础,软件(例如四轴飞行器没有常用的office软件或各种输入法)硬件(例如四轴飞行器没有大的显示屏,键盘)可裁减,适于应用系统对功能、可靠性、成本、体积、功耗(大部分嵌入式系统都采用电池供电)严格要求的专用计算机系统(例如四轴飞行器只能飞起来和拍照,但没有打游戏等的功能)。
2.举例
(1)工业:汽车电子、智能仪表、工业控制装备等。
(2)军事:军事电子,(一个导弹想要追踪一个飞机,必须要有导航系统,导弹根据导航系统调整自己的姿态都是由嵌入式计算机控制的)。
(3)网络:网络设备,电子商务设备等。
(4)消费电子:智能家居(智能洗衣机等,可以通过手机进行远程控制),智能玩具,通信设备,移动存储设备等。
3.组成
(1)硬件:由嵌入式处理器和外围电路组成。
(2)软件:嵌入式操作系统,嵌入式图形系统(可选),嵌入式应用软件。
嵌入式软件采用固化存储的方式,即软件存储在flash存储器中,掉电以后信息不会丢失;它具有实时性的要求,嵌入式软件的反应必须是非常快的,例如飞机转弯时,导弹必须同时转弯,对它的时间有非常严格的要求;并且嵌入式软件的可靠性和稳定性必须要高,例如一个嵌入式软件控制一个核电站的运行,那么它对嵌入式软件的可靠性和稳定性的要求就非常高了。
4.开发面临的挑战
(1)应该使用多少硬件?
在开发时我们需要在开发成本和开发周期之间获取一个平衡点,如果使用硬件,开发成本就会高,如果使用软件,我们需要设计这个软件,成本降低,但开发周期就会延长。
(2)系统的设计指标是多少?
例如设计一个温度控制系统,保证温度在1度以内,比较容易,但如果保证温度在1%度以内,就非常难了,确定系统的设计指标对经验的要求是很高的。
(3)最小化电力的要求
很多嵌入式系统都使用电池供电,如果功耗较低,那么使用时间就会更长,如果一个设备只能使用电池供电,我们希望能使用更长的时间。
(4)升级考虑
一般嵌入式设备有固件升级功能,可以直接在网上下载最新的程序,完成在线升级,就不需要把设备寄回厂商,进行手工的升级了。
(5)可靠性和稳定性
嵌入式软件的可靠性和稳定性必须要高,一些非常重要的领域使用嵌入式软件,要求的可靠性和稳定性相当高。
(6)完整测试困难
有些嵌入式设备要在一些极端环境下工作,比如在南极工作,在实验室设计时很难完全模仿出它的实际的工作环境。
(7)难以观察与控制
嵌入式设备没有比较大的显示屏(很难观察内部的工作状态),没有键盘(很难控制嵌入式设备)。
(8)开发环境苛刻
不像在PC机开发时有集成开发环境,可以设置断点,可以单步执行等等,嵌入式计算机往往没有很多方便的调试手段。
5.开发语言
(1)汇编语言:是执行效率最高的一种语言,它的程序的执行速度最快,可以对时序进行精确的控制(因为每一条指令的执行时间都是确定的,所以我们能精确的计算出一段指令的执行时间),便于调试(执行的语言就是这句指令,不需要编译器,编译器会往可执行程序中插入很多东西),但它的开发效率比较低,如果用汇编语言开发就会比较累。
(2)C语言:开发效率高,执行速度快(比汇编语言略慢,但还是很快的),它具有低级语言特性(利用指针的特性直接对内存进行操作),有很多丰富的库进行支持。
(3)C++语言:功能强大但对资源的消耗比较大。
(4)JAVA语言:Android手机开发。
(5)Objective C/Swift:iOS开发。
(6)C#:WP开发。
6.开发模式
(1)利用C、汇编等语言工具,直接在硬件上编程,用在硬件资源有限的场合。
(2)基于某个操作系统编程,用在硬件资源充裕、设备繁多的场合。