S5PV210启动过程分析

       刚刚接触S5PV210,看了官方的数据手册感觉跟以前用的STM32单片机根本不在一个层面上,当然两者的用途不同,不具备可比性。

       可能之前习惯使用STM32等单片机,现在接触S5PV210还有点不太适应,尤其搞不懂S5PV210为什么还要有引导启动的过程,网上百度了很久找到一点靠谱的,因为NorFlash很贵,所以现在很多的嵌入式系统倾向于不使用NorFlash,直接用NandFlash+DRAM+SoC内置SRAM

直接进入主题看看S5PV210的启动过程。

首次看一张图

首先解释一下我认为的BL0、BL1、BL2:

(1)BL0:是指S5PV210的IROM中固化的启动代码;
(2)BL1:是指在IRAM自动从外扩存储器(nand /sd/usb)中拷贝的uboot.bin二进制文件的头代码;

(3)BL2:是指在代码重定向后在内存中执行的的UBOOT的完整代码;

(4)三者之间关系是:(Interal ROM固话代码)BL0将BL1(bootloader的前16kB)加载到iRAM;BL1然后在iRAM中运行将BL2(其实整个bootloader)加载到SDRAM(DDR);BL2加载内核;BL就是bootloader的简写;

注意这里的BL1/BL2的大小是有限制的,由内部SRAM决定,也就是图中的96KB,而BL1的大小是16KB,而BL2的最大值为80KB

官方推荐的启动过程分为五步:

第一步iROM可以做最初的启动:初始化系统时钟,驱动特殊控制器和启动设备(MMC/OneNand/Nand/eSSD/NOR)。        

第二步iROM可以引导代码可以把boot-loader载入到SRAM,这个boot-loader被称为BL1。之后iROM会在安全启动(引导)的模式下检查验证BL1的完整性。

第三步BL1将被执行:BL1会载入剩下的叫做BL2boot-loader。之后BL1会在安全模式下检查验证BL2的完整性。

第四步BL2将被执行:BL2在初始化DRAM(内存)控制器后把OS数据载入到SDRAM

第五步:最终,跳转到操作系统开始的地址。会给使用系统创建良好的环境。

 

接下来是对BL0工作内容的介绍,官方的文档如下

BL0引导启动的顺序:

(1). 关看门狗

(2). 初始化指令告诉缓冲存储器

(3).初始化栈区域

(4).初始化堆区域

(5).初始化块设备复制函数

(6).初始化PLL锁相环和设置SoC系统时钟

(7).复制BL1到内部的SRAM16KB

(8).核查BL1的校验和,如果检查错误,iROM将会尝试第二个启动(从二通道)

(9).检查是否为安全启动模式,如果安全关键值已经写在S5PV210,那么就是安全启动模式,如果是安全启动模式,核查BL1的完整性。

(10).跳转到BL1执行

看了以上的说明可以看出BL0内的固化代码其实还有一个很重要的作用就是识别启动介质,这个识别就用到了芯片的OM pin,所以再看一下启动说明


从流程图可以看到上电后执行内部SRAM的代码,做出各种初始化动作,接下来判断芯片是否处于睡眠状态,这个主要和芯片的低功耗有关,之后在经过一轮初始化后根据OM pin识别介质,并开始第一次引导,如果失败会进行第二次引导也就是图中的Go to 2nd boot,进入通道2了继续执行,假设成功了,就顺利跑到BL1部分,BL1主要是初始化板子与加载BL2的代码,然后运行BL2的代码。BL2主要是初始化SDRAM然后引导内核。这就是整个boot的流程。

上面没有第一次引导失败怎么办,官方给出了很详细的流程,上图。

在第一个引导失败后,会进行第二次引导,例如sd卡有两个通道,通道0用于1st boot,通道2用于 2nd boots5pv210有多个SD卡控制接口,也就是所谓的通道),如果第二次引导都失败的话,就会尝试通过串口和USB进行引导,如果还是引导失败的话则终止引导过程(估计是板子要假死了)QAQ。这就是s5pv210boot基本情况。对于使用MMC设备(SD卡)启动的的,要在特定位置设置MMC卡的数据信息,主要是三个全局变量,如下表所示(一般来说不设置也没有多大问题,不用rom内部的函数就是了):



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值