第三章——Exynos 4412的启动过程分析
来源:互联网 发布:编程软件app 编辑:程序博客网 时间:2024/05/02 00:42
参考网上大牛的文章http://www.techbulo.com/1335.html
固化在芯片内部ROM上的代码iROM把启动设备上特定位置处的程序BL1读入片内存 (iRAM) ,并执行它。BL1 是三星公司提供的,无源码。
BL1又把启动设备上另一个特定位置处的程序BL2读入片内内存,并执行它。BL1是我们编写的源码。
(1) 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 。
(2) BL1 :下图是 BL1 的启动过程
简单地说,也是设置程序运行环境(初始化中断、设置栈等 );然后从启动设备上把 BL2读入iRAM;最后启动它。
BL1、BL2在SD卡上的存储位置
BL1、BL2在iRam中的存储位置
- 第三章——Exynos 4412的启动过程分析
- Exynos 4412的启动过程分析
- Exynos 4412启动流程分析
- Exynos 4412 bootloader分析
- 【ARM】Exynos 4412 中断理论分析
- exynos 4412
- 跟踪分析Linux内核的启动过程|Linux内核分析 第三周作业 - 网易云课堂
- Exynos 4412 u-boot-2010.03移植过程(一)
- Android4.4 Framework分析——PackageManangerService的启动过程
- fl2440——u-boot启动过程的简要分析
- Android源码分析——Activity的启动过程
- exynos SOC 平台的openmax component 运行分析
- Dubbo——服务端启动过程分析
- Launcher3源码分析 — 启动过程
- Launcher3源码分析 — 启动过程
- BootLoader的启动过程分析
- activity的启动过程分析
- PackageManagerService的启动过程分析
- ②细化需求
- 将博客搬至CSDN
- SPOJ 1811-LCS POJ 2774
- vs2010中的ipch和sdf文件
- 第十三周项目四(1) 冒泡法排序
- 第三章——Exynos 4412的启动过程分析
- 【LeetCode】Minimum Path Sum
- HDU 1003 Max Sum
- NOIP2002 产生数
- 金融业转型移动互联网划分未来格局:Testin云测保驾护航
- VFS文件系统结构分析 与socket
- 第十三周OJ项目A
- $(function(){ })或$(document).ready(function(){ })的理解
- OI知识点