嵌入式学习笔记(43)S5PV210的SD卡启动详解

嵌入式学习笔记(43)S5PV210的SD卡启动详解_第1张图片

8.4.1 SoC为何要支持SD卡启动

(1)一个普遍性的原则就是:SoC支持的启动方式越多,将来使用时就越方便,用户的可选择性就越大,SoC的适用面就越广。

(2)SD卡有一些好处:譬如可以在不借用专用烧录工具(类似Jlink)的情况下对SD卡进行刷机,然后刷机后的SD卡插入卡槽,SoC即可启动;譬如可以用SD卡启动进行量产刷机(量产卡)。像我们x210开发板,板子贴片好的时候,内部inand是空的,此时直接启动无启动,因为此时inand是空的,所以第一启动失败,会转入第二启动,就从外部SD2通道的SD卡启动了。启动后会执行刷机操作对iNand进行刷机,刷机完成后自动重启(这回重启时iNand中已经有image可,所以可以启动了)。刷机完成后SD量产卡拔掉,烧机48小时,无死机即可装箱待发货。

8.4.2 SD卡启动的难点在哪里(SRAM、DDR、SDcard)

(1)SRAM、DDR都是总线式访问的,SRAM不需要初始化即可直接使用,而DDR需要初始化后才能使用,但是总之CPU可以直接和SRAM和DDR打交道;而SD卡需要时序访问,CPU不能直接和SD卡打交道;NorFlash读取时可以总线式访问,所以NorFlash启动非常简单,可以直接启动,但是SD/NandFlash不行。

(2)以前只有NorFlash可以作为启动介质,台式机笔记本的BIOS就是NorFlash做的介质。后来三星2440中使用了SteppingStone的技术,让NandFlash也可以作为启动介质。SteppingStone(启动基石)技术就是在SoC内部内置4KB的SRAM,然后开机时SoC根据OMPin判断用户设置的启动方式,如果是NandFlash启动,则Soc的启动部分的硬件直接从外部NandFlash中读取开头的4KB到内部SRAM作为启动内容。

(3)启动基石技术进一步发展,在6410芯片中得到完善,在210芯片时已经完全成熟。210中有96KB的SRAM,并且有一段iROM代码作为BL0,BL0再去启动BL1(210中的BL0做的事情在2440中也有,只不过那时候是硬件自动完成的,而且体系没有210中这么详细)。

8.4.3 S5PV210的启动过程回顾

(1)210启动首先执行内部的iROM(也就是BL0),BL0会判断OMPin来决定从哪个设备启动,如果启动设备是SD卡,则BL0会从SD卡读取前16KB到iSRAM中去启动执行(这部分就是BL1,这就是SteppingStone技术)

(2)BL1执行之后剩下的就是软件的事情了,SoC就不用再去操心了。

8.4.4 SD卡启动流程(bin文件小于16KB时和大于16KB时)

(1)启动的第一种情况是整个镜像大小小于16KB。这时候相当于我的整个镜像作为BL1被SteppingStone直接硬件加载执行了而已。

(2)启动的第二种情况就是整个镜像大小大于16KB。(只要大于16KB,哪怕是17KB,或者是700MB都是一样的)这时候就要把整个镜像分为2部分:第一部分16KB大小,第二部分是剩下的大小。然后第一部分作为启动介质,负责去初始化DRAM并且将第二部分加载到DRAM中去执行(uboot就是这样做的)。

 嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。在评论区输入“嵌入式”,即可0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

你可能感兴趣的:(嵌入式,嵌入式学习笔记,编程,学习,笔记,单片机,嵌入式硬件,stm32)