CPU上电后首先进入初始状态,需谨慎配置处理器模式、中断开关及内存管理单元等关键参数。随后依据硬件架构完成电路板级初始化与程序代码重定位操作。最终系统转入命令行交互模式,准备接收并执行用户指令。整个启动过程包含多个精密衔接的底层步骤。
1、 关闭中断并切换至SVC模式
2、 关闭内存管理单元及转换检测缓冲寄存器,同时禁用时钟与看门狗相关寄存器设置
3、 配置堆栈运行环境
4、 完成代码重定向前的硬件初始化,涵盖串口、定时器、环境变量及I2C、SPI等外设配置。
5、 代码重定向操作
6、 完成代码重定向后的板级初始化工作,涵盖板级定义的各类初始化操作,如eMMC、NAND Flash、网络及中断等模块的初始化设置。
7、 进入命令行模式
8、 等待并处理终端输入的命令,构成了uboot运行流程的核心环节。
9、 疑惑待解
10、 在SPL阶段虽已完成架构级别的初始化,但U-Boot仍需重新执行该过程,原因在于SPL并非所有平台启动U-Boot的必经环节。某些系统上电后,U-Boot可能直接从ROM或Flash开始运行,并未经过SPL阶段。具体启动流程由硬件平台的设计机制决定。因此,为确保系统状态的可靠性与一致性,U-Boot不依赖SPL的初始化结果,而是独立完成完整的架构初始化流程。这种设计避免了因启动路径不同而导致的兼容性问题,保证无论是否经过SPL,CPU最终都能处于预期的工作状态,从而提升系统的鲁棒性与可移植性,适应多种不同的硬件环境和启动方式。
11、 6.spl启动过程中的不同之处是什么?
12、 以tiny210为例,前期架构初始化流程基本相同,本质差异出现在board_init_f阶段开始之后。
13、 代码起始位置
评论
更多评论