No os hardware boot

来自百问网嵌入式Linux wiki
Wiki讨论 | 贡献2019年4月10日 (三) 14:43的版本

第01节_XIP的概念

who runs programe? 我们常说运行程序,程序通过cpu运行,保存在存储设备上。

存储设备有多种,如下分类

 
|----hard dsik
|----sd card
|----Flash
	|----Nor Flash
	|----Nand FLash

无论是哪一种存储设备,内部的抽象结构是一样的,如下图所示

图1


比如,第0个存储空间存放的0x31这个数据,第一个存储空间存放的0x30这个数据

如何访问存储空间,通过访问每行左上角的编号去访问里面的数据,称这些编号为地址,而编号对应的数值,称为数据


如何访问存储设备(就是为了读写某一个存储空间)?

  1. 发出地址
  2. 读数据(从设备里面范围给CPU)/写数据(从CPU发给存储设备)

地址和数据如何传输?
如果地址和数据直接来自CPU,或者说数据直接发给CPU,那么这个存储设备,我们就称为XIP device(cpu可以直接访问存储设备)


图2

按照正常的执行流程,cpu和存储设备之间还会有内存控制器

U盘的内部存储结构

如何访问U盘的内部存储结构 U盘对外只有5条线,cpu不可能直接发数据给u盘的,中间需要引入一个USB控制器 cpu可以直接访问到usb控制器,通过usb控制器发送符合U盘传输协议的信息,间接的访问U盘数据。所以usb设备不是XIP device

如何识别一个存储设备是否是XIP设备? 1.CPU可以直接寻址的设备。 2.看是否有分开的地址总线和数据总线。


CPU通过SPI控制器才能得到spiflash中的数据,所以,spi flash不是XIP device



图3 13.09

对于SD card也是类似的,CPU需要通过SD/MMC Controller才能把地址发给SD card,也必须通过SD/MMC Controller得到里面的数据并执行,所以SDcard不是XIP device

第02节_嵌入式系统硬件组成

第03节_SOC框架

第04节_具体单板的启动流程