在看过一系列的文档后:
据我所知u_boot原本是bootloader的一种:
BootLoader分类有
所以他的启动流程与大体的相似但又会因为他的发展(即越来越多的人完善使他的代码量超过了 本来预定的,其启动流程也随着改变)
我学习的板子是tiny4412用的是armv7架构 所以今儿说这个
其大体分为两个阶段
arch级的初始化
关闭中断,设置svc模式
禁用MMU、TLB
关键寄存器的设置,包括时钟、看门狗的寄存器 (是由汇编语言搞定的,所以基础薄弱的我看的很是艰难)
板级的初始化
堆栈环境的设置
代码重定向之前的板级初始化,包括串口、定时器、环境变量、I2C\SPI等等的初始化
进行代码重定向
代码重定向之后的板级初始化,包括板级代码中定义的初始化操作、emmc、nand flash、网络、中断等等的初始化。
进入命令行状态,等待终端输入命令以及对命令进行处理
之后的学习将要详细学习各个启动的函数
文章最后加上看过的一些链接:
uboot启动流程详细分析