学习Exynos4412启动流程前,我们先看看三星4412芯片启动框图:
我们从图中可以看到4412内部有64K的ROM和256K SRAM,在ROM中已经固化好了一段代码,当硬件上电后首先运行的就是这段代码,这段代码三星起名为BLO(iROM BOOT 代码)。其作用是初始化SRAM,并将eMMC中256k代码拷贝到SRAM中,进行初始化DRAM。在图中我们很清楚看到这一个运行过程。
1、在芯片的iROM中已经固化一个代码,当硬件上电后就读取OM电平从而确定硬件设置的启动模式:0110为从eMMC启动,1000位SD卡启动;
2、把已经设置启动存储单元代码复制到内部RAM中并跳转到RAM运行;
3、运行OS;
一、iROM
iROM把启动设备上特定位置处的程序读入片内存 (iRAM) ,并执行它。这个程序被称为 BL1(Bootloader 1) ,BL1 是三星公司提供的,无源码。
BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个被称为 BL2(Bootloader 2) ,是我们编写的源码。
下图是 iROM 启动流程图:
由上图可以看出,首先关闭看门狗,关闭中断及MMU,关闭数据缓存,打开指令缓存,清除TLB,然后将其他核进入IDLE模式,只留CPU0,这里有了第一个跳转分支,IROM判断当前启动模式,是冷启动还是唤醒,如果是唤醒模式,那么就是直接跳转到BL1,在BL1里面我们会再次判断是否是唤醒模式,如果是就直接跳转到唤醒函数,一般都是linux内核的唤醒句柄。当然在裸机里都是冷启动的,休眠唤醒一般是不需要关注的,当然如果你的裸机程序需要支持休眠唤醒,就需要增加相应的代码了。
继续分析,设置IRQ及SVC模式的栈空间,这个时间,栈地址是其内部的一片IRAM,这小片RAM是IROM运行的外部随机存储器,没有这片小内存,IROM是无法运行的。接下了就是初始化IROM里面所使用的各种变量,初始化只读数据段,未初始化数据段清零,导出部分核心函数,这个函数可以在BL1中使用,获取当前复位的状态,设置系统时钟分频,获取OM管脚配置模式,这里可以从多种外设启动,具体启动模式如下表:
简单地说,iROM就是先设置程序运行环境 (比如关看门狗、关中断、关MMU 、设置栈 、设置栈 、启动 PLL 等 );然后根据OM引脚确定启动设备 (NAND Flash/SD 卡/其他 ),把 BL1 从里面读出存入iRAM;最后启动 BL1 。
二、BL1
下图是 BL1 的启动过程
单地说,也是设置程序运行环境(初始化中断、设置栈等 );然后从启动设备上把 BL2读入iRAM;最后启动它。
三、SD卡作为启动方式
BL1 位于SD卡偏移地址 512字节处(即从第一个扇区开始,前面有一个扇区保留,每个扇区512字节,为什么保留第一个扇区,如果有同学对DOS分区表有过研究,就能明白其中的道理了,第一个扇区是分区表的配置区),iROM从这个位置读入8K 字节的数据,存在iRAM地址 0x02021400位置处。 所以 BL1不能大于8K 。
IROM计算校验和且验证通过后并解密BL1成功后就可以跳转到BL1了,至此IROM已执行完备,权限已交由BL1了,补充说明一下,解密BL1是加密模式启动时才需要的,非加密模式启动是无需解密BL1的。
BL2 位于 SD 卡偏移地址 (512 +8K)字节处,BL1从这个位置读入14K 字节的数据,存在iRAM 地址 0x02023400 处。 BL2 不能大于(14K – 4) 字节,最后 4字节用于存放较验码(在汇编流水灯试验中我们用mkbl2工具制作的BL2,其中mkbl2工具最主要的作用就是计算出校验码)。
如果我们的程序大于 (14K – 4) 字节,那么需要截取前面 (14K – 4) 字节用来制作BL2并烧入SD卡偏移地址 (512 +8K) 字节处。当BL2启动后,由它来将存放在SD卡另外位置的、完整程序读入内存。
上一篇:exynos 4412 时钟配置
下一篇:Exynos4412 内核移植(七)—— 内核相关知识补充
推荐阅读最新更新时间:2024-11-06 11:36
设计资源 培训 开发板 精华推荐
- 山雀模拟_电阻箱
- RDR-942 - 65 W USB PD 3.0 + PPS 电源,带 ZVS,使用 InnoSwitch4-Pro PowiGaN、ClampZero 和英集芯 USB Type-C PD 控制器
- 基于STSPIN32F0B BLDC控制器应用的六步无刷电机驱动器评估板
- LT4276CIUFD 25.5W(类型 2)PoE+ 和 9V-57V 辅助输入电源在反激模式下的典型应用电路,具有 12V、1.9A 输出
- RT8463 高压多拓扑 LED 驱动器通过 ACTL 引脚的典型应用 PWM 调光降压配置
- SILINKPS-EVB,用于电缆调制解调器应用的 Si3220 用户线接口的评估板
- 使用 Analog Devices 的 LTC3725EMSE 的参考设计
- AM2G-2409SZ 9V 2 瓦 DC-DC 转换器的典型应用
- 四弦八音电吉他
- LTC3878 的典型应用 - 快速、宽工作范围无 RSENSE 降压型 DC/DC 控制器
- 分分钟完成电子设计的奥秘—2015WEBENCH邀你共同见证!
- 看专题答题赢好礼!PI 稳定可靠的TOPSwitch-JX开关电源IC
- 2020 STM32全国研讨会火热报名中,新技术新方案等你收获,还有好礼拿!
- 我与BeagleBone 有个约会!
- 免费测评TI LAUNCHXL-CC2650
- #micropython大作战#多种参与姿势,大家一起来玩micropython!
- 泰科电子工业事业部邀您云逛展 ——打破时间、空间的限制,TE Connectivity 线上工博会为您带来沉浸式VR观展体验
- 幸运十一月,器件购买e问e答!
- 免费申请TI 样片,晒单赢好礼!
- 点评《与Atmel SAM D21/R21的相遇、相识、相知(上)》,赢温暖新春礼