1、关闭中断,设置svc模式,禁用MMU、TLB关键寄存器的设置,包括时钟、看门狗的寄存器
2、堆栈环境的设置,代码重定向之前的板级初始化,包括串口、定时器、环境变量、I2C\SPI等等的初始化
3、进行代码重定向,代码重定囿鹣分胰向之后的板级初始化,包括板级代码中定义的初始化操作、emmc、nand flash、网络、中断等等的初始化。
4、进入命令行状态,等待终端输入命令以及对命令进行处理上述工作,也就是uboot流程的核心。
5、spl对于启动uboot来说并不是必须的,在某些情况下,上电之后uboot可能在ROM上或者flash上开始执行而并没有使吹涡皋陕用spl。这些都是取决于平台的启动机制。因此uboot并不会考虑spl是否已经对arch进行了初始化操作,uboot会完整的做一遍初始化动作,以保证cpu处于所要求的状态下。
6、以tiny210而言,前期arch的初始化流程基本上是一致的,出现本质区别的是在board_init_f开始的。
7、代码入口,project-X/u-boot/arch/arm/cpu/u-boot.lds