No os hardware boot
来自百问网嵌入式Linux wiki
第01节_XIP的概念
who runs programe? 我们常说运行程序,程序通过cpu运行,保存在存储设备上。
存储设备有多种,如下分类
|----hard dsik
|----sd card
|----Flash
|----Nor Flash
|----Nand FLash
无论是哪一种存储设备,内部的抽象结构是一样的,如下图所示
图1
比如,第0个存储空间存放的0x31这个数据,第一个存储空间存放的0x30这个数据
如何访问存储空间,通过访问每行左上角的编号去访问里面的数据,称这些编号为地址,而编号对应的数值,称为数据
如何访问存储设备(就是为了读写某一个存储空间)?
- 发出地址
- 读数据(从设备里面范围给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