☞嵌入式软件组件
· 系统软件鼻祖——ROM Monitor监控程序(固件)
- 存储在非易失性存储设备中的组件称之为固件。
- ROM Monitor 是运行在嵌入式系统中的一段代码,具有管理系统资源与用户进行交互的功能,具有操作系统内核的一小部分功能。
- 嵌入式系统正式运行时,通常不需要监控程序的干预,发生故障时,可以作为恢复系统的接口和手段。
- 只负责监控硬件。
· Boot Loader
- Boot Loader 与硬件密切相关,但是不完全通用;
- Boot Loader 是驻留在嵌入式处理器的片上ROM或板上Flash存储区保留分区中的与具体处理器和硬件特性密切相关的一段可启动代码;
- 应具有最小功能要求,即至少驱动一个外部的数据通信接口,且应该提供至少一种读、写、擦除Flash的方法;
- 不含应用功能,但具备与外界通信的能力,支持UART、I2C、SPI、Ethernet、CAN等通信接口和协议;(非应用软件)
- 应该非常清楚系统内存的映射模型;
- 由特定的IO驱动、通信协议或协议栈、文件系统、用户交互接口、内存映射配置表以及操作系统引导组件等构成;
启动过程:
- 预启动,通常是指ROM的执行阶段,为 Boot Loader运行做准备;
- 第一启动阶段(Stage1):Boot Loader 执行基本的初始化代码,初始化堆栈,准备RAM空间,并将下一阶段代码拷贝到RAM特定位置后,跳转至下一阶段的代码入口点执行;
- 第二启动阶段(Stage2):Stage2的代码在内存中运行,无内存容量限制,可设计复杂功能;
· BSP——板级支持包
- 与硬件密切相关的功能软件包;
- 系统上电时,对硬件初始化功能;
- 为操作系统提供访问硬件所需要的驱动程序以及中断服务程序;
- 集成的硬件相关/无关的操作系统所需要的引导模块;
· 嵌入式虚拟化技术
虚拟机:零型虚拟机、轻量级虚拟机。
☞嵌入式系统经典架构
软件移植时,只需要改动操作系统适配层即可,比如说微信APP既可以运行于安卓又可以运行于苹果系统等。
☞存储器分类
· 易失性存储器
- RAM:Random Access Memory,随机存储器,随机存储是指当存储器中的数据被读取或者写入时,所需要的时间与这段数据所在的位置无关(区别于顺序存储)。
- DRAM:动态随机存储器,存储单元以电容的电荷表示数据,有电荷为1,无电荷为0。但是这种状态不能长久保持,因为电量为1时会释放电荷,为0时会吸收电荷,所以需要定时来刷新。速度慢、集成度高、成本低、用于CPU外部扩展内存。
- SDRAM:可同步通讯(需要时钟),上升沿有效。
- DDR SDRAM:Double Data Rate SDRAM,边沿有效(上升沿和下降沿都有效),一个周期内可以表示两个数据,时钟频率高,速度快。
- SRAM:静态随机存储器,存储单元使用锁存器存储数据。速度快、集成度低、成本高、用于CPU内部高速缓存Cache。
- SSRAM:同步通讯静态随机存储器。
· 非易失性存储器
- ROM:非易失性半导体存储器,现在也有可以写入的ROM,所以ROM并非是只读存储器。
- MASK ROM:只读存储器,成本低。
- OTPROM:One Time Programmable ROM,一次可编程存储器,只能写入一次,可以用来存储密钥,使用专用编程器写入。
- EPROM:Erasable Programmable ROM,可重复擦写存储器,可以重复擦除写入,需要专用设备写入和擦除。
- EEPROM:Electrically Erasable Programmable ROM,电可擦除,使用电路控制写入擦除,并且按照字节来修改数据,无需擦除整个芯片。(主流)
- FLASH:闪存,可以重复擦写,按照扇区进行擦除。
- NOR FLASH:价格贵、集成度低、随机存取,地址线与数据线独立分开,以扇区或块进行擦除,可基于字节读写,读取速度快,但是写入速度慢,支持XIP,坏块较少。在写入数据前需要先擦除,一般用于存储代码,比如嵌入式控制器内部程序存储空间。
NAND FLASH:价格便宜、集成度高、连续存储,地址线和数据线共用,以扇区或块进行擦除,以块为单位进行读写,读取速度慢,写入速度快,不支持XIP,坏块较多。写入前需要先擦除,一般用于存储大量数据,比如SD卡、U盘、固态硬盘等。