2016 - 2024

感恩一路有你

uboot启动流程详解

浏览量:3879 时间:2024-04-02 15:05:08 作者:采采

在处理器初始刚上电的状态时,需要小心设置好许多关键状态,包括CPU状态、中断状态、MMU状态等。其次,根据硬件资源进行板级初始化,包括代码重定向等操作。最后,进入命令行状态,等待处理输入命令。

启动流程具体步骤

1. 关闭中断,设置关键寄存器:在此阶段,需要关闭中断,设置svc模式并禁用MMU、TLB,并配置时钟、看门狗的寄存器。

2. 堆栈环境设置和代码重定向:在进行代码重定向之前,进行板级初始化,包括串口、定时器、环境变量、I2C、SPI等资源的初始化。

3. 进行代码重定向:完成代码重定向后的板级初始化操作,包括板级定义的初始化操作、EMMC、NAND Flash、网络、中断等的初始化。

4. 进入命令行状态:等待终端输入命令,并对命令进行相应处理,这是uboot启动流程中的核心部分。

关于spl和uboot的初始化

在spl的阶段已经对arch级进行了初始化,为何uboot还要再次对arch初始化?实际上,spl对于uboot的启动并非必须的。有些情况下,uboot可能会直接从ROM或者flash上开始执行,而不经过spl阶段。这取决于平台的启动机制。因此,uboot会完整地执行一遍初始化操作,以确保CPU处于所需状态。

spl启动过程的差异

就以tiny210为例,前期arch的初始化流程基本一致,真正的区别在于在`board_init_f`开始时。在启动过程中,uboot将负责处理更多的初始化工作,确保系统顺利启动。透过``可以看到uboot代码的入口。

通过深入了解uboot的启动流程和相关初始化操作,可以更好地理解系统启动的细节,从而为系统优化和问题排查提供更为有力的支持。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。