AM335x系列处理器是德州仪器(TI)生产的一款高性能、低功耗的ARM Cortex-A8微处理器,广泛应用于工业自动化、嵌入式系统等领域。在AM335x处理器上运行Linux操作系统之前,需要通过一个启动加载程序(Bootloader)来初始化硬件,加载内核和文件系统。在此过程中,uboot(Universal Boot Loader)扮演了至关重要的角色。本文档名为《AM335Bootload流程分析.pdf》,将详细介绍uboot在AM335x上的启动过程以及关键函数的调用机制。 Bootloader是运行在操作系统之前的软件程序,负责初始化硬件设备、建立内存空间映射图,从而为最终运行操作系统做好准备。在AM335x处理器上,启动过程可以分为几个主要阶段: 1. 芯片时序性上电或复位:这是启动的最初阶段,系统将按照预设的时序要求上电或复位。 2. ROMcode执行:处理器内部固化的一段引导代码(rom_code)首先被运行。它的作用是加载第二级bootloader,即SPL(Secondary Program Loader)到内部SRAM中执行。这部分代码主要进行硬件的简单初始化,并根据配置决定引导设备列表。 3. SPL运行:SPL是uboot的一个轻量级版本,负责系统的进一步初始化,特别是CPU和DDR内存的初始化。完成这些初始化后,SPL将加载完整的uboot到内存中。 4. Uboot运行:uboot接管处理器,继续进行硬件的初始化工作,包括加载操作系统内核到内存中,以及设置各种运行参数,最终启动Linux内核。 5. Linux内核启动:uboot将控制权交给Linux内核,后者加载并初始化,从而完成系统的启动。 rom_code在系统启动时扮演着至关重要的角色。它是预置在芯片ROM中的引导代码,负责在上电或复位后首先执行。rom_code将根据引导模式(memory模式或外设模式)和SYSBOOT引脚的状态,决定从哪种设备加载SPL。 AM335x支持两种引导模式:memory模式和外设模式。memory模式允许从SD卡、NAND Flash、NOR Flash或eMMC等存储介质中读取SPL镜像。外设模式则允许通过以太网、串口、SPI或USB接口获取SPL镜像。 SYSBOOT引脚是一个16位的引脚集合,其中SYSBOOT[4:0]用于决定引导顺序。SYSBOOT[15:14]则决定了外部晶振的频率,这对处理器时钟的稳定性至关重要。晶振频率通常有几种常见的类型。 在芯片上电时序方面,需要确保满足特定的时序要求,这可以通过选用特定的电源管理芯片(PMIC)或分离电源芯片来实现。电源芯片的设计要遵循TI的电源芯片设计指南,以确保系统稳定运行。 rom_code执行流程如下:芯片上电或复位后,PC指针跳转到ROM中固定的地址开始执行。ROM中的代码进行硬件初始化,包括看门狗和各种外设接口。一旦完成初始化,rom_code会根据SYSBOOT配置,生成引导设备列表,并确定引导类型。如果SPL成功读取,那么处理器将继续执行SPL的代码。 通过以上的描述,我们可以看到,uboot的启动流程是复杂且多层次的。在文档中,作者提出了“全而简”的分析方法,即全面介绍每个步骤,同时简化分析过程。这样的方法有助于读者快速定位和理解uboot中的各个函数和代码段,从而在开发中提高效率。 文档还强调了如果读者在理解过程中有疑问,可以通过作者提供的流程图来快速查找和定位相关程序。同时,作者鼓励读者在论坛上积极提问,共同解决问题。 《AM335Bootload流程分析.pdf》深入剖析了uboot在AM335x处理器上的启动流程,详细解释了引导模式、rom_code的执行机制、以及SPL和Uboot的角色。此外,作者还提供了简洁的分析方法和辅助工具,帮助开发者更快地理解和掌握AM335x的启动过程,为后续的系统开发和调试工作打下坚实的基础。
- 粉丝: 208
- 资源: 46
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助