目录
嵌入式软件和桌面软件的对比
- 内存:有限,影响编程语言的选择以及开发工具的使用(例如编译器优化)
- CPU处理能力:出于成本和功耗考虑,不得不选择保守的设计方案,CPU只是恰好满足要求
- 操作系统:OS(Windows、Linux)、RTOS、专有OS或裸机
- 实时行为
- 实时系统需要保证确定性
- 实时性的要求对OS的选择和程序设计都有影响
- 开发流程
- 嵌入式系统没有足够的资源进行软件开发。交叉开发对于工具的选择有很大影响
- 执行程序非常复杂,需要把代码移植到目标机或者在某种环境上运行
- 执行流程:多数嵌入式设备从开机开始就会运行某个程序,该程序会一直运行到系统关机。这个程序可能存储在ROM,也可能从非易失存储器转移到RAM执行。
- 每一个嵌入式设备都是不同的
- 嵌入式软件工具和组件
- 开发工具:
- 交叉编译器
- 有时嵌入式应用直接包含汇编代码
- 嵌入式系统的内存映射是否复杂,对精确性要求很严格,对链接器有很高要求
- 嵌入式测试器是一系列对应不同运行环境的工具
- 其他一些更有针对性的工具,例如性能分析等
- 软件组件
- 适合嵌入式环境的库:可以重入、可以存在ROM中
- 其他可用的库,如STL,在使用时需特别小心
- OS内部设备驱动提供的硬件交互接口
- ES的互联性提高需要的网络支持:TCP/IP或总线CAN\I2C,其他网络技术SNMP、Zigbee、Bluetooth、WiFi和USB等
- 有组织的数据存储需求,要能应对电源故障和多线程
- LCD的广泛引入提出了对复杂图像和用户界面软件的要求