Appearance
嵌入式启动
启动方式
首先执行CPU芯片内部固化的一小片代码ROMCODE,初始化存储器的接口,建立存储的映射,根据CPU的引脚确定启动方式
如果初始的地址是在SARM和NOR Flash可以随机读写,直接运行代码,其他的需要先复制到内存运行,因为这个时候DDR SDARM还没有初始化,所以会先复制到芯片内部集成的SRAM中进行,完成初始化之后进入DDR SDRAM中
内存与外部设备
计算机的存储设备按照读取速度:
- 寄存器
- 缓存
- 内存
- 外存
CPU内部:寄存器、Cache ==> 物理实现SRAM电路复杂物力成本高
内存(主存):可以直接寻址RAM、ROM、NOR Flash
外存(辅存):磁盘、SD卡等
外部设备
和内存相对的外部设备
在一个嵌入式芯片之中存在各种控制IP
- 设备控制:打开关闭、运行
- 协议控制:在电气层面实现各种通讯协议
- 数据转换:序列流、字节流
- 数据缓冲:缓冲区、FIFO、发送接收数据缓冲区
通讯模式:
- 轮询
- 中断
- DMA
在进行设备通讯的时候接收到的数据会暂时存放在FIFO之中,当数据达到一个阈值之后会产生中断,CPU进入处理函数,读取FIFIO中的数据,发送时正好相反。
DMA:自动发送接收数据
I/O端口、内存
CPU控制外部设备,把外部设备控制器的寄存器称为I/O端口,每个寄存器对应一个端口,给这些I/O分配地址
- 独立编址:x86内核为他们分配16位的地址,和内存地址无关通过IN/OUT命令读取
- 统一编址:ARM外部设备和寄存器内存共享地址,按照读取内存的方法管理操作外部地址