Skip to content

嵌入式启动

存储器相关知识 (xusenfeng.github.io)

启动方式

首先执行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外部设备和寄存器内存共享地址,按照读取内存的方法管理操作外部地址