AM335x U-Boot SPL初始化与调试关键点解析

6 下载量 95 浏览量 更新于2024-09-01 收藏 72KB PDF 举报
本文将深入探讨AM335x平台的上电引导流程,特别是ROM code(第一级bootloader)在其中的作用以及SPL(Secondary Program Loader)的相关分析和调试经验。AM335x作为一款嵌入式处理器,其启动过程分为多个阶段,首先是ROM code的执行,它负责进行基本的初始化工作,包括但不限于: 1. **基本ARM初始化**:确保处理器核心正确地进入运行模式,并设置好必要的寄存器和内存配置。 2. **UART控制台初始化**:为了与用户交互,设置并启用串口通信接口,使得后续的调试和日志输出得以进行。 3. **时钟和PLL锁定**:为了确保系统稳定运行,初始化时钟源,并根据需要锁定分频器,以便为整个系统提供合适的时钟频率。 4. **SDRAM初始化**:由于AM335x可能支持多种存储设备,这里负责检测并初始化SDRAM,为后续操作提供足够的内存空间。 5. **Mux设置**:配置多路复用器,可能涉及到外设的连接管理,以实现对不同设备的访问。 6. **引导设备初始化**:根据系统的启动来源(如MMC1、MMC2、NAND或OneNAND),配置和识别适当的引导设备,以便加载下一级bootloader。 7. **U-Boot的加载和转移控制**:一旦引导设备被识别,SPL会从该设备加载U-Boot的完整版本,并将控制权传递给它,从而启动完整的操作系统加载流程。 文章的核心部分深入剖析了SPL框架的设计,旨在统一现有实现并方便添加新功能。通过复用U-Boot的源代码,如在`u-boot-2011.09-psp04.06.00.03`版本中的`arch/arm/cpu/armv7`、`lib`和`drivers`目录,实现了代码的复用性和一致性,避免了重复编写和链接脚本的复杂性。 具体到makefile分析,仅能看到一个名为`spl`的文件夹,其中只有一个makefile,表明SPL的构建依赖于U-Boot的基本结构。关键代码位于`u-boot-2011.09-psp04.06.00.03`架构和库目录,而链接脚本`u-boot-spl.lds`则定义了内存映射,如Sram和Sdram的地址,以及`.bss`区段的处理。 这篇文章为开发人员提供了宝贵的实践经验和指导,帮助理解AM335x平台上如何设计和调试SPL,以确保高效、可靠的嵌入式系统启动过程。通过深入理解这些细节,开发人员能够更好地优化和扩展他们的嵌入式解决方案。