Uboot初始化代码主要是在Uboot重定位之前的一系列处理,起源于start.s文件,涉及crt0.s和board.c等文件,会完成最系统环境最初始的设置和结构体赋值。
reset的相关处理
从_start跳转到reset
.globl _start
_start: b reset
save_boot_params 改函数为weak函数,未定义任何内容。用户如过有任何参数要传递的,那么需要再次定义这个函数。
reset:
bl save_boot_params
#if defined(SIM_BREAKPOINT_WA)
/* workaround to disable secure state */
mrc p15, #0, r0, c1, c1, #0
orr r0, r0, #1
mcr p15, #0, r0, c1, c1, #0
isb
#endif
将ARM的模式修改为supervisor模式
mrs r0, cpsr
bic r0, r0, #0x1f
orr r0, r0, #0xd3
msr cpsr,r0
该宏已定义,表示会跳过底层设备的初始化
cpu_init_cp15 用来设置cp15的一些功能,主要包括禁止cache,关闭MMU和TBL等功能