U-Boot启动过程完全分析

看完《Uboot中start.S源码的指令级的详尽解析_v1.6》,《U-Boot启动过程完全分析》,《lowlevel_Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解)》这三篇文章,再参考下《嵌入式Linux应用开发完全手册》(韦东山著),你将会对ARM系统结构及U-boot移植有一个清晰的框架。 ### U-Boot启动过程完全分析 #### U-Boot工作过程概览 U-Boot作为一款广泛应用于嵌入式系统的引导加载程序,在启动过程中扮演着关键角色。它主要负责硬件初始化、加载操作系统内核以及传递必要的启动参数等工作。U-Boot的启动过程大致可以分为两个阶段: 1. **第一阶段**:此阶段主要负责硬件设备的基本初始化,包括但不限于设置异常向量、配置寄存器等。完成这些基础任务之后,第一阶段会将U-Boot的第二阶段代码加载到RAM中并设置好栈,最后跳转到第二阶段的代码入口处继续执行。 2. **第二阶段**:这一阶段则进一步初始化所需的硬件资源,检测系统内存映射情况,从非易失性存储器(通常是Flash)中读取操作系统内核到RAM中,并为内核设置启动参数,最终调用内核启动操作系统。 #### 第一阶段代码分析 ##### 文件结构 U-Boot的第一阶段主要涉及两个文件:`cpu/arm920t/start.S` 和 `board/samsung/mini2440/lowlevel_init.S`。这两部分代码紧密相连,共同完成了U-Boot启动初期的任务。 ##### 硬件设备初始化 - **设置异常向量** - 在 `cpu/arm920t/start.S` 的开头,我们可以看到一系列设置异常向量的代码。这些异常向量表对应了不同类型的异常事件及其处理程序的地址。例如,复位异常向量指向 `_start` 标签处的 `start_code` 函数,未定义指令异常向量指向 `_undefined_instruction` 等。 - 异常向量表包括但不限于: - 复位异常 (地址:0x00000000):当系统上电复位时,CPU会跳转至复位处理程序执行。 - 未定义指令异常 (地址:0x00000004):遇到无法处理的指令时触发。 - 软件中断 (地址:0x00000008):通过 SWI 指令触发,主要用于用户模式下的程序调用特权操作指令。 - 预取指令异常 (地址:0x0000000c):当处理器试图从无效地址获取指令时触发。 - 数据操作异常 (地址:0x00000010):当处理器试图访问无效地址的数据时触发。 - IRQ 中断 (地址:0x00000018):外部中断请求有效时触发。 - FIQ 中断 (地址:0x0000001c):快速中断请求有效时触发。 - **CPU进入SVC模式** - 在 `start_code` 函数中,我们可以通过一系列指令实现将 CPU 工作模式切换至 SVC 模式(即管理模式)。具体的步骤如下: - 使用 `mrs r0, cpsr` 获取当前的程序状态寄存器值到寄存器 r0。 - 使用 `bic r0, r0, #0x1f` 清除工作模式位。 - 使用 `orr r0, r0, #0xd3` 设置工作模式位为 “10011”,即 SVC 模式,并确保中断被禁止。 - 最后使用 `msr cpsr, r0` 将新的 CPSR 值写回寄存器。 #### 第二阶段功能概述 在第一阶段成功执行后,U-Boot会进入第二阶段。第二阶段的主要任务包括: 1. **初始化硬件资源**:进一步初始化那些在第一阶段没有被初始化的硬件设备。 2. **检测系统内存映射**:确定可用的内存范围及其属性,这对于后续的操作至关重要。 3. **读取内核到RAM**:将内核从 Flash 存储器复制到 RAM 中。 4. **设置启动参数**:为内核设置必要的启动参数,比如内存大小、启动命令行等。 5. **调用内核**:启动操作系统内核。 通过以上分析可以看出,U-Boot的启动过程是高度模块化和分阶段进行的,每一步都经过精心设计以确保整个过程的稳定性和可靠性。理解这些细节对于深入掌握U-Boot的内部机制及其在嵌入式系统中的应用至关重要。




























剩余33页未读,继续阅读

- 紫红枫2014-04-16很不错的资料,谢谢分享。
- datou1582013-05-24很好,对UBOOT初学者很有帮助

- 粉丝: 24
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电网企业大数据的价值实现探析.docx
- 基本台账-安全生产网络组织台帐.doc
- 扩频通信抗干扰系统分析大学本科方案设计书.doc
- 机械设计制造及其自动化-外文翻译-外文文献-英文文献-液压支架的最优化设计.doc
- 油气勘探项目管理的探讨.docx
- 智能家居中家庭总体布线实战技术解析.docx
- 数字图像处理锐化技术的原理与实现.docx
- 计算机软件的安全检测技术分析.docx
- 51单片机的多路温度采集控制系统方案设计书.doc
- 上海XX有限公司网络安全解决方案.ppt
- 基于网络经济时代下市场营销策略的转变.docx
- 从全球视角看中国移动互联网产业发展现状及地位.docx
- 最新家庭医疗网络救护医疗保健ppt模板.pptx
- 《电气控制与PLC应用》课程整体设计措施.doc
- 国内外工程项目管理现状比较与探讨80801.doc
- 第一章旅游网站基于营销优化的内容建设.docx


