您的位置:首页 > 其它

s5pv210 IROM启动流程详解

2016-12-01 15:22 295 查看
还是那句老话,用最原始的资料,那么去哪找呢?当然是三星了,s5pv210是三星做的嘛,去网上下载S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf 
讲到启动系统,那么需要哪些存储介质才行呢?首先得有启动介质,也就是掉电后代码不会丢失并且上电后就能运行(不需要初始化,否则怎么运行呢),我们知道内存是不行的,内存掉电后数据就清空了。norflash就能掉电后数据不丢失,并且可以总线式访问(挂在总线上就可以使用,不需要初始化)。所以norflash可以作为启动介质,但这家伙一般比较小,因为贵嘛,所以代码一般运行在内存,容量大,便宜。现在一般开发板内容都用DDR2. 理论上
有NORFLASH和DDR2就可以了,但三星还另外加了一块SRAM。为什么要加SRAM呢?因为NORFLASH只能读,不能写,那么就不能进行数据交换,而DDR2此时还不能用,那么只能用SRAM来保存全局数据和设置栈空间。所以210的存储结构为IROM(类似于NORFLASH)+SRAM+DDR2的结构。 


 
这里以sd卡启动为例来讲,系统一上电检测OM引脚的电平情况,所以上电前你得将开关打到需要的启动模式。手册上有说明,自己去看看就清楚了。注意上图的标号,一上电首先从iROM(这段代码通常称为BL0)开始运行代码,然后根据OM引脚电平情况去初始化启动介质控制器(sd启动为HS-MMC Controller),从sd卡的第一个扇区开始复制16k代码(这16k代码通常称为BL1)到SRAM(通常称为Stepping Stone,sd卡启动的话,图上的Booting
Device就是sd卡) 
为什么是从第一个扇区开始复制呢?看手册 


 
还是有问题,复制到SRAM哪里呢?SRAM本身又在哪个地址呢?SRAM能直接用吗,要不要初始化?SRAM是不需要初始化的,不信可以百度。SRAM的地址看手册,0xD0020000。 


 
看到BL1起始地址为0xD0020010,下面多了一节东西,BL Header Info 4 WORD。按理说不应该啊,BL1应该复制到SRAM起始地址才对呀。接着看手册,发现手册上说 
The BL1 must have header data. The header data is used for being copied to internal SRAM by iROM code.The header data has two information. One is size of BL1 and Another is checksum data of BL1.When loading BL1, iROM
check size of BL1 in header data and copy BL1 to internal SRAM. 
After coping BL1, iROM sum data of copied BL1 and compare it to checksum data in header data of BL1. 
If it is success, BL1 start. otherwise iROM will try second boot(4-bit SD/MMC) from SDMMC channel 2 port. 
大概意思是说,这个BL Header包含两个信息,第一:BL1的大小。第二:checksum data。为了安全考虑,这里设置了checksum data去控制是充SDMMC的哪个通道启动。BL1的大小好理解,只需搞清楚单位就行了,一般是字节为单位。那么checksum data具体是指什么呢? 接往下看 


 
其实就是统计BL1的二进制文件包含多少个1的个数。 
iROM干了些啥,手册上有说 


 
接下来将sd中剩下的代码复制到SRAM中,然后将OS(操作系统)复制到内存运行。不过先得初始化DDR2,呵呵这是BL2干的事情了不说了。
其实uboot中不是这么做的,因为uboot远不止96k,一般是160k到200k左右。SRAM放不下,所以uboot不是将BL2复制到SRAM,而是直接复制到DDR2,这样的话BL1就得要初始化DDR2了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  S5PV210 启动