一步一步学ARM。bootload分块介绍
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
### ARM Bootload 分块介绍与知识点详解 #### 一、ARM处理器基础知识 ##### 1.1 缩写解析 - **ARM**: Advanced RISCMachines(高级精简指令集计算机) - **RISC**: Reduced Instruction Set Computer(精简指令集计算机) ##### 1.2 处理器模式与寄存器 ARM处理器支持多种处理器模式,每种模式对应不同的寄存器组,用于处理不同的执行环境。主要包括以下六种模式: 1. **用户模式** (usr):正常程序执行模式。 - 寄存器组:`r0-r15, CPSR` 2. **快速中断模式** (fiq):用于高速数据传送或通道处理。 - 寄存器组:除了常规寄存器外还包括一组专门的FIQ寄存器如`r8_frq-r14_frq, CPSR` 3. **中断模式** (irq):用于处理通用中断。 - 寄存器组:包括一组中断专用寄存器如`r13_irq, r14_irq, CPSR` 4. **管理模式** (svc):操作系统保护模式。 - 寄存器组:包括一组管理专用寄存器如`r13_svc, r14_svc, CPSR` 5. **中止模式** (abt):用于存储器保护。 - 寄存器组:包括一组中止专用寄存器如`r13_abt, r14_abt, CPSR` 6. **未定义模式** (und):处理未定义指令。 - 寄存器组:包括一组未定义专用寄存器如`r13_und, r14_und, CPSR` ##### 1.3 ARM寄存器总结 - **R15**(PC):程序计数器,指向当前正在执行指令的地址。 - **CPSR**(Current Program Status Register):当前程序状态寄存器,包含了关于当前处理器状态的信息,例如条件标志位。 #### 二、ARM指令集概述 ##### 2.1 指令集概述 ARM指令集设计简洁高效,分为两大类:Thumb指令集和ARM指令集。其中: - **Thumb指令集**:主要用于节省空间的应用场景,每条指令长度固定为16位。 - **ARM指令集**:适用于性能要求较高的应用,指令长度为32位。 ##### 2.2 指令的条件执行 ARM指令支持条件执行特性,允许根据CPSR中的条件码决定指令是否被执行。这极大地增强了代码的灵活性和效率。 ##### 2.3 程序分支 程序分支指令允许根据条件跳转到指定位置执行代码,是控制流的关键部分。 ##### 2.4 数据移动和内存引用指令 这类指令用于进行数据的移动操作以及内存访问,如加载/存储指令等。 #### 三、Bootload 移植分析 ##### 3.1 引导代码分析 - **硬件关联**:与Boot相关的硬件通常包括Flash ROM等。 - **主要功能**: - 初始化系统参数; - 设置中断控制器; - 跳转到C语言程序,继续执行后续初始化和系统引导过程。 ##### 3.2 执行流程 - **参数初始化**:设置基本硬件配置,如时钟、复位等。 - **中断设置**:配置中断控制器,使能外部中断等。 - **硬件初始化**:对特定硬件设备进行初始化。 - **跳转至C程序**:完成汇编级别的初始化后,跳转到C语言程序继续执行。 #### 四、中断服务程序编写 ##### 4.1 变量定义 - **服务程序地址**:定义中断服务程序的入口地址。 - **I/O端口**:用于访问硬件设备的端口地址。 - **INTERRUPT控制寄存器**:配置中断使能和优先级。 - **EINT4567的Pending位**:表示中断请求的状态。 ##### 4.2 中断服务程序实现 - **定义中断服务程序**:编写具体的中断处理逻辑。 - **主程序**:配置中断并启动系统。 - **关键变量类型**:确定中断服务程序中使用的变量类型。 - **运行流程图**:绘制中断服务程序的执行流程。 #### 五、BOOT流程图 Bootload的流程图展示了从上电到系统启动整个过程的步骤,有助于理解系统的启动顺序。 #### 六、BOOT程序源代码 通过查看实际的Bootload源代码,可以更深入地了解各个阶段的具体实现细节,这对于理解和调试Bootload至关重要。 从ARM处理器的基础知识到Bootload的具体实现,本篇文档提供了全面且详细的介绍。通过对这些内容的学习,可以帮助读者更好地理解ARM系统的工作原理,并掌握Bootload开发的核心技术。
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- hanyy19882012-04-19很好的代码,讲解的很清楚,谢谢
- cc3701022012-09-19对BOOTLOAD 的讲解很到位
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 1
- 资源: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)