ARM处理器启动流程
s3c2440支持启动方式:1:norflash启动,一般2MB,2:nandflash启动,通常256MB,内核重要的文件系统都放入nandflash中,开发板从nandflash开始启动, nandflash地址布局
左边为当选择norflash启动时地址的布局,右边为当选择nandflash启动时地址的布局,当处理器上电时会从0地址处取第一条指令开始运行,如果从norflash启动0地址处安排norflash,代码放在norflash最前端。Nandflash启动时不能像内存直接访问,必须要通过相应的寄存器不能通过ARM处理器的统一编址,0地址处为BootSRAM片内ram大小4KB,
BootSRAM也称stepping stone,CPU上电后第一条指令从steppingstone获取,CPU会把nandflash最前端的4K复制到stepping stone,CPU间接运行nandflash前4K,但是bootload不止4K,那么剩下的就要依靠steppingstone复制到内存,4K运行完后跳转到内存继续运行。
S3c2440 P213
为了支持nandflash启动,s3c2440装备一个interna SRAM buffer叫做stepping stone,在nandflash最前端4K数据将会被加载到steppingstone,然后运行steppingstone的4K代码,这4K有个重要工作就是把剩余代码就会被复制到SDRAM内存,当这4K运行完后就跳转到内存中接着运行剩下的bootload。
S3c6410
从表中可以看到6410启动方式,SROM,ONELAND,MODEM,IROM(internal ROM)(包括nandflash,SD卡),通过设置引脚设置启动方式。
地址布局:0地址由XOM决定的设备启动区域,注释Mirrored region(镜像区域)用来映射。
如果选择IROM会把IROM映射到镜像区域,一上电就运行IROM,所以根据不同启动方式选择,然后镜像区域映射到不同设备。接下来分析如果从nandflash启动,启动流程:
打开:S3C6410_Internal_ROM_Booting手册
nandflash启动是IROM一种,当上电之后IROM被映射到0地址,CPU先从IROM取第一条指令, IROM里是芯片厂商固化好的软件通常为BL0(bootload0),它除了硬件初始化以外还会把我们放在nandflash里最前面的8K的bootload1(BL1)拷贝到stepping stone,BL1在stepping stone里运行,BL1就把nandflash剩余的bootload拷贝到SDRAM运行,完成整个bootload运行,对比:2440CPU直接把数据拷贝stepping stone(4K)到上电后运行stepping stone里(4K)数据,而6410会运行固定的irom代码,把用户编好的bootload复制到stepping stone运行。如果由剩余的复制到SDRAM继续运行。
210(cortex--A8)启动流程
S5PV210_UM_REV1.1用户手册
210启动模式:支持IROM,UART
210处理器地址映射表,IROM大小64KB,0xD002开始的地方为垫脚石,0地址处boot area
注释mirrored region depend on the boot mode。
S5PV210_iROM_ApplicationNote_Preliminary文档
上电后,IROM被映射到0地址处,CPU会从IROM取第一条指令,IROM固化软件(BL0)由芯片厂商提供,做一些硬件初始化,会把BL1拷贝到Internal SRAM中作为stepping stone(96K),由于stepping stone增大,就把bootload剩余部分拷贝到stepping stone,如果stepping stone还存不下bootload,这时考虑往内存中拷贝,210规定BL1大小16KB,BL2最大80KB,如果BL2超过80KB,BL1就把BL2复制到内存,完成bootload拷贝后,BL2就在IRAM或SDRAM运行。