uboot启动流程分析3- lowlevel_init
-
arch/arm/cpu/armv7/lowlevel_init.S
,
22行,初始化sp,指向地址CONFIG_SYS_INIT_SP_ADDR,是多少???- -include/configs/mx6ullevk.h
-
arch/arm/include/asm/arch-mx6/imx-regs.h
IRAM_BASE_ADDR 是6ULL内部OCRAM地址,可查看参考手册,大小为 0x00020000= 128k -
include/generated/generic-asm-offsets.h
-
综上
CONFIG_SYS_INIT_SP_ADDR
= IRAM_BASE_ADDR + IRAM_SIZE - GENERATED_GBL_DATA_SIZE
= 0X00900000 + 0X00020000 - 256
= 0X0091FF00, -
34行,sp减去GD_SIZE GD_SIZE = 248 , sp = 0X0091FF00 - 248 =0X0091FE08
35行,八字节对齐
36行,将sp地址赋值给r9寄存器 -
-
42行,将ip和lr压栈
-
57行,调用s_init
-
58行,出栈,lr赋值给pc