U-boot board_init_f与board_init_r阶段任务详析:内存布局与功能对比
5星 · 超过95%的资源 需积分: 42 32 浏览量
更新于2024-08-05
1
收藏 90KB DOCX 举报
在U-Boot启动流程中,board_init_f和board_init_r阶段各自承担着关键的任务,这些任务的执行顺序对于确保系统稳定性和性能至关重要。board_init_f(First Init Function)阶段主要负责以下几项工作:
1. **Setup Mon Len**:计算U-Boot程序的长度并将其存储在gd->mon_len中,这对于后续内存管理至关重要。
2. **FDT Setup**:验证设备树(Device Tree)的有效性,设备树是Linux内核与硬件交互的关键配置文件,确保硬件配置的正确性。
3. **InitfMalloc**:分配堆空间,堆是动态内存的一部分,用于存放程序运行时创建的对象,如函数调用的局部变量等。
4. **Log Init**:初始化系统的日志功能,使得调试和故障排查更为方便。
5. **Console Record Init**:初始化控制台存储空间,保证命令行交互的正常运行。
6. **Arch CPU Init**:针对特定处理器架构(这里是RISC-V CPU)进行初始化,包括CPU核心配置和初始化。
7. **Initf_DM**:创建设备模型,这是硬件抽象层的一部分,简化了硬件驱动的编写和管理。
8. **Arch CPU Init_DM**:进一步初始化设备模型下的RISC-V CPU设备,细化硬件支持。
9. **Env Init**:初始化环境变量,通常包含板载设备和配置信息。
10. **Init Baud Rate**:设置通信端口的波特率,确保数据传输速度一致。
11. **Serial Init**:设置串口参数,用于与外部设备通信。
12. **Console Init_f**:控制台设备的完整初始化,包括配置和初始化输入输出设备。
13. **Display Options**:显示U-Boot版本信息,提供关于当前加载版本的反馈。
14. **Display Text Info**:展示调试信息,帮助开发者诊断问题。
15. **Print CPUinfo**:显示CPU的详细信息,包括型号、频率等。
16. **Show Board Info**:展示开发板的特定信息,如制造商、型号等。
17. **DRAM Init**:根据设备树中的内存信息,确定RAM的起始地址和大小,并将gd->ram_size和gd->ram_base填入。
18. **Relocation Address**:设置重定位目标地址,将U-Boot映射到DDR内存的末尾,便于内存管理。
19. **Fix FDT**:进行单板特定的设备树操作,可能涉及硬件特有的修改或扩展。
20. **Memory Alignment**:确保gd->relocaddr对齐到4k,利于内存访问效率。
21. **Video & Trace Memory**:预留视频和追踪(可能的调试工具)内存,虽然未定义,但体现了预留策略的完整性。
22. **U-Boot Code Space**:为U-Boot本身代码预留空间,并更新gd->start_addr_sp。
23. **Heap Memory**:为堆分配内存空间,保证程序运行所需。
24. **Reserve Malloc**:为堆预留地址,调整gd->start_addr_sp。
通过board_init_f阶段的执行,U-Boot完成了基础的硬件配置、内存管理和初始化工作,为后续引导流程的顺利进行打下了坚实的基础。相比之下,board_init_r阶段可能涉及更复杂的操作,如引导内核、加载文件系统等高级任务。理解这两个阶段的职责划分有助于深入掌握U-Boot的启动流程和优化。
141 浏览量
138 浏览量
2024-10-25 上传
2024-10-25 上传
115 浏览量
389 浏览量
2022-08-03 上传
161 浏览量
263 浏览量
nick-fei
- 粉丝: 1
- 资源: 40
最新资源
- ADO.NET 2.0高级编程
- 一个项目经理的经验总结(网络工程)
- 代码大全是一本成就多少程序员的书啊。
- 芯片sp3232中文介绍
- oracle9i dataguard
- 李亚非老师的神经网络教程
- 无损失”数据格式,对于500万像素的数码相机,一个RAW文件保存了500万个点的感光数据。而TIFF格式在相机内部就处理过,就好比说SONY相机以色彩艳丽著称,富士相机在人像上色彩把握很稳重等,这些都是影像处理器对色彩特别处理的结果。
- 局域网IP冲突问题的探讨
- 深入编程内幕(VC++)
- 上网速度太慢怎么办 21个全面提速技巧
- 深入浅出之正则表达式
- Weblogic管理员手册
- C++ Professional Programmer's Handbook
- MATLAB编程风格指南
- linux 进程间通信
- DHTMLandJavaScript