ARM u-boot 初始化流程1
需积分: 0 191 浏览量
更新于2022-08-03
收藏 34KB PDF 举报
ARM架构的启动过程通常涉及到多个步骤,特别是在使用u-boot引导加载程序时。u-boot是一个流行的开源固件项目,用于初始化和管理嵌入式系统,尤其是基于ARM处理器的系统。以下是对ARM u-boot初始化流程的详细解释:
1. **启动过程**:当系统上电后,CPU的第一个指令是从预设地址(Addr123)读取的。因此,u-boot的可执行文件必须位于这个地址。
2. **进入SVC模式**:第一个执行的指令通常是一个跳转操作,它将ARM CPU切换到服务模式(Supervisor Mode),这是系统初始化过程的安全模式。
3. **中断和看门狗禁用**:在SVC模式下,u-boot会立即禁用所有中断和看门狗,以防止在初始化阶段被打断或发生未预期的操作。
4. **MMU、D/I缓存禁用**:为了安全和效率,u-boot会关闭内存管理单元(MMU)以及数据/指令缓存(D/I Cache)。这有助于简化内存操作并防止潜在的数据不一致问题。
5. **内存配置**:接着,u-boot调用MEMSETUP函数来配置RAM。此步骤可能还包括初始化其他内存芯片,如静态存储器控制器(SMC)或双倍数据速率同步动态随机访问内存(DDR)。
6. **代码重定位**:如果u-boot的执行代码存储在闪存中,如NAND Flash,u-boot会将自身复制到RAM中的预定地址。如果u-boot已经在RAM中运行,则跳过此步骤。
7. **栈指针设置**:在这一阶段,栈指针(SP)会被设定,为后续调用"C"语言代码做好准备。
8. **清除BSS段**:BSS段是未初始化的全局变量和静态变量的内存区域,初始化时通常会被清零。
9. **执行`start_armboot`**:PC指针被设置为"C"代码中的`start_armboot`函数地址,这是u-boot初始化流程的关键部分。
10. **初始化序列**:`init_sequence`函数执行一系列初始化任务,包括:
- `cpu_init`:配置CPU,例如分配IRQ和FIQ堆栈内存。
- `board_init`:初始化GPIO,开启LED,以及其他板级初始化工作。
- `interrupt_init`:初始化定时器控制器,以处理中断。
- `env_init`:初始化环境变量的存储位置。
- `init_baudrate`:设置串口波特率。
- `serial_init`:配置串行通信接口。
11. **闪存和NAND初始化**:根据需要初始化闪存设备,如NAND Flash,以便读取和操作存储在其中的u-boot或系统映像。
12. **系统信息显示**:在完成这些初始化步骤后,u-boot通常会在控制台上打印一些系统配置信息,以便用户了解系统的状态。
13. **主要循环**:初始化完成后,u-boot进入主循环(`Main loop()`),在这里等待进一步的命令或操作,如加载操作系统映像或执行用户交互。
这个流程概括了u-boot在ARM系统上启动的基本步骤,但具体实现可能会因平台和需求的不同而有所差异。在实际应用中,可能还会包括设备驱动初始化、网络配置、电源管理等更多复杂的初始化步骤。

赵小杏儿
- 粉丝: 26
最新资源
- 基于PLC技术龙门式精密油压机电气设计方案探讨.doc
- (源码)基于Win32 API的试制小游戏.zip
- 互联网+背景下高中学生历史学科核心素养的培养初探.docx
- 网络存储产品在NVR系统中的应用-公共场所其他.docx
- 计算机维修电脑部件组成实训报告.doc
- (源码)基于KiCad和ESP32S3的心电图模拟数字转换系统.zip
- 使用纯 Python 编写机器学习算法的实现指南与示例
- 信息化校园建设.ppt
- 四层电梯的PLC控制.doc
- (源码)基于Pygame的推箱子游戏(Sokoban).zip
- 《flash8动画设计实例教程》第五章.ppt
- 软件开发项目初步验收专业技术方案.doc
- 工程项目管理2011年7月自考复习资料.doc
- (源码)基于lnArduino框架的红点焊接机控制板.zip
- XX年国家网络安全宣传周活动实施方案.docx
- (源码)基于Python和TensorFlow的以图搜图系统.zip