上一节已经分析到了uboot的board_init_r函数,并且把两个参数传递给它
/* call board_init_r(gd_t *id, ulong dest_addr) */
/* gd的 地址和 当前新的uboot的起始地址传参给board_init_r */
mov r0, r9 /* gd_t */
ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */
/* call board_init_r */
ldr pc, =board_init_r
接下来就分析uboot的后半部分,也就是
void board_init_r(gd_t *new_gd, ulong dest_addr)
{
#ifdef CONFIG_NEEDS_MANUAL_RELOC //没定义
int i;
#endif
#ifdef CONFIG_AVR32 //没定义
mmu_init_r(dest_addr);
#endif
#if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
gd = new_gd; //定义了这个CONFIG_ARM,所以不执行
#endif
#ifdef CONFIG_NEEDS_MANUAL