S5PV210的启动流程解读

第二部分 ARM裸机之体系架构——系统启动过程解读
一、关于系统如何进行启动这个话题
1、不同平台的的存储器配置介绍
主要是PC平台、单片机和嵌入式系统的这三种启动方式对比:
(1)PC平台:小容量的BIOS+大容量硬盘+大容量的DRAM
可以这么理解:BIOS实质是NorFlash,硬盘可以是nandflash,DRAM就是我们所说的内存条DDR。
(2)单片机平台:小的Norflash+小的SRAM
(3)嵌入式平台:Soc内置SRAM+外置大的DRAM+外接大NAND
2、 S5PV210的启动方式解读:(内置了一块96KB的SRAM(也就是IRAM)和一块64KB的NorFlash(IROM))
第一步:
CPU上电从内部的IROM读取三星厂商预先设置的代码BL0(Bootloader0),但是不会初始化DRAM的,因为外接什么样的内存三星是预先不知道的。那么这段代码是干啥呢?主要是进行基本的时钟、看门狗初始化,最重要的是会判断我们板子上的OMPIN引脚电平——决定了SOC启动模式(假设启动模式是外部存储器)。然后从对应的外部存储器读取第一部分启动代码(BL1 16KB大小)到内部的SRAM。为什么CPU能够读取外部存储器的读取BL1呢?是因为三星预先设置了几个固定的接口函数去初始化了外部flash(nand mmc)。
第二步:
从IRAM中运行读取到的BL1(16K),然后执行。这段代码是初始化整个nandflsh,将BL2读取到IRAM(剩余的80KB)中运行。
第三步:
从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。来个官方数据手册图。

这里写图片描述
这里写图片描述
二、您会有这样一些问题吗?
(1)为什么分为两个步骤,这样是不是很繁琐?
* 个人认为有以下几个要点:
*各个公司的启动代码的大小不确定。所以分为两个bootloader(BL0和BL1)去加载.
*还有一个原因是IROM无法读取96KB的BL这么大空间,所以分为2部分去实现。
(2)在BL0中主要完成什么功能:
关看门狗
初始化指令cache
初始化栈
初始化堆
初始化块设备复制函数device copy function
设置SoC时钟系统
复制BL1到内部IRAM(16KB)
检查BL1的校验和
跳转到BL1去执行
(3)个人任务Bootloader最大只能是96KB,不然加载不了。
(4)S5PV210的启动方式(这个以后会讲解到):
先1st启动,通过OMpin选择启动介质
再2nd启动,从SD2
再Uart启动
再USB启动
例如:从SD0的eMMC启动 则OM5-OM0配置为001101 。
这里写图片描述
三、为什么要搞一块IROM?:
(1)启动一般是从NORFlash中启动,IROM的方式可以使得SOC从外设进行启动
(2)支持Nand的多种校验
(3)在产品量产的模式下,九鼎创展是这么批次生产的:
首先:eMMC内部是空的,插入烧录了程序和系统的SD卡
其次:启动运行将程序加载并复制到eMMC中。
最后:掉电,拔下卡,将启动方式设置成1st从eMMC启动,这样第二次启动就是从eMMC开始启动。
四、备注:
具体如何进行启动,大家可以参考下面这个英文手册。
参考资料:《S5PV210_iROM_ApplicationNote_Preliminary_20091126》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值