- 5
- 0
- 约3.61千字
- 约 3页
- 2019-11-11 发布于广东
- 举报
第2章 Bootloader 启动流程分析
2.1 Bootloader 启动的两个阶段
从操作系统的角度看,Bootloader 的总目标就是正确地调用内核来执行。另
外,由于 Bootloader 的实现依赖于 CPU 的体系结构,因此大多数Bootloader
都分为stage1 和stage2 两大部分,以便使Bootloader 的功能更加强大和提供
更加良好的移植性能。
stage1 主要是一些依赖于CPU 体系结构的代码,比如硬件设备初始化代码等。
这一阶段的代码主要是通过汇编来实现的,已达到短小精悍和高效的目的。
stage1 为位置无关代码,通常在Flash 中运行。所以有的指令为相对寻址,可
以在任何位置运行。
stage1 负责的主要任务有:
① 硬件设备初始化包括:关闭Watchdog、关闭中断、设置CPU 的速度和时钟频
率、配置SDRAM 存储控制器及IO、关闭处理器内部指令/数据Cache 等;
② 为加载Bootloader 的stage2 代码准备RAM 空间(这个地址由链接脚本指定
为运行域地址,通常为RAM 的高端地址)测试内存空间是否有效;
③ 复制Bootloader 的stage2 代码到RAM 空间中;
④ 设置好堆栈;
⑤ 跳转到stage2 的C 函数入口点。
stage2 则是通常用C 语言来实现,这样可以实现更复杂的功能,而且代码会
具有更好的可读性和可移植性。
stage2 负责的主要任务有:
① 初始化本阶段要使到的硬件设备(如串口、Flash 和网卡等);
② 检测系统内存映射;
③ 没有用户干预时将内核映像从Flash 读到RAM 空间中;
④ 为内核设置启动参数;
⑤ 调用内核。
2.2 Bootloader 的内核调用
操作系统的内核映像一般是存储在 Flash 上的,当Bootloader 将内核复制
到 RAM 里之后可能还需要解压。但是对于有自解压能力的内核而言是不需要
Bootloader 来解压的。
而 Bootloader 调用内核的方法就是直接跳转到内核的第一条指令处。在调
170
用内核之前下列的条件必须要满足:
1.CPU 寄存器的设置
① R0 为0;
② R1 为机器码;
③ R2 为启动参数,标记列表在RAM 中的起始基地址。
2.CPU 工作模式
① 必须禁止中断(IRQ 和FIQ);
② CPU 必须设置为SVC 模式。
3.Cache 和MMU 的设置
① MMU 必须关闭;
② 指令Cache 可以打开或关闭;
③ 数据Cache 必须关闭。
2.2.1 Bootloader 与内核的交互
当内核启动时,启动参数一般是从 Bootloader 中传递而来的。那么
Bootloader 传递参数的存放地址和参数的数据结构就都是需要关心的。
由于Bootloader 和内核不是同时启动运行的,因此Bootloader 要向内核传
递参数只有将参数存放在一个指定的地址,然后内核再从这个地址中读取启动参
数。
在 U-Boot 中,传递参数的数据结构是以标记的形式来体现的。而参数的传
递通过标记列表的形式来实现。标记列表由ATAG_CORE 开始,以ATAG_NONE 标记
结束。这里的ATAG_CORE,ATAG_NONE 是各个参数的标记,本身是一个32 位值。
标记的数据结构为 tag,它由一个 tag_header 结构体和一个联合体组成。
tag_header 结构体表示标记的长度和类型,比如是表示内存还是命令行参数。
对于不同类型的标记使用不同的联合体。对于tag 和tag_header 的定义可以在
网蜂提供的U-Boot 的源码中arch/arm/include/asm/setup.h 文件中找到,即:
struct tag
{
struct tag_header hdr;
union {
struct tag_core core;
struct tag_mem32 mem;
struct tag_videotext videotext;
struct tag_ramdisk ramdisk;
struct
您可能关注的文档
- 心房颤动合并心力衰竭的治疗发展方向.pdf
- 基于移动互联网的医院后勤信息化平台建设研究.pdf
- 中东19世纪的经济改革与早期现代化的启动.pdf
- Oracle 数据库 11g:在 Oracle Spatial 网络数据模型中处理大型网络的一种按需加载方法.pdf
- 近十年国际景观规划研究动向及启示对景观与城市规划载文关键词的分析.pdf
- 本雅明式的寓言_福克纳_喧哗与骚动_的艺术特色.pdf
- 一种基于物联网技术的移动通信铁塔性能预警系统.pdf
- SWAT模型中天气发生器与数据库构建及其验证.pdf
- 中国电信移动终端需求规范-BREW分册2009.V1.pdf
- 史荣昌魏丰版矩阵分析第二章.pdf
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 部编版(26春)小学语文一年级下册教学设计全册.docx VIP
- 春节复工煤矿工人培训教案.pptx VIP
- Haier海尔蒸箱ST450-30S说明书.pdf
- Joyoung九阳电饭煲F30S-S160使用说明书.pdf
- 2025年新疆中考物理试题(含答案详解)原卷.pdf
- 79博客-目录书签跳转版.pdf VIP
- 计算智能 课件全套 第1--11章 绪论、模糊系统理论---新型群智能优化算法.pptx
- 2025年国庆节后煤矿复产复工'六个一'安全资料汇编.docx VIP
- 2023中国生物材料大会会议手册-ok.pdf VIP
- Midea 美的 ET1065QL-01SE嵌入式电烤箱 说明书.pdf
原创力文档

文档评论(0)