Board.c
· #ifdefined(CONFIG_ARCH_CPU_INIT)
· arch_cpu_init,
· #endif
· board_init,
· #ifdefined(CONFIG_USE_IRQ)
· interrupt_init,
· #endif
· timer_init,
· #ifdef CONFIG_FSL_ESDHC
· get_clocks,
· #endif
· env_init,
· init_baudrate,
· serial_init,
· console_init_f,
· display_banner,
· #if defined(CONFIG_DISPLAY_CPUINFO)
· print_cpuinfo,
· #endif
· #if defined(CONFIG_DISPLAY_BOARDINFO)
· checkboard,
· #endif
· dram_init,
· arch_usb_init,
· NULL,
· };
//入口
· void start_armboot (unsigned *pRunning, unsigned startup_flag, unsigned resume_code)
· {
· init_fnc_t ** init_fnc_ptr; /*双重指针*/
· 全局数据变量分配空间
· gd = (gd_t*)(_armboot_start – CONFIG_BOOTHEAD_GAP
· - CONFIG_SYS_MALLOC_LEN – sizeof(gd_t));
/*先在内存中为gd_t分配了空间,然后让前面定义的gd指针指向它的首地址*/
· /* 接着也分配了bd_t结构体的空间,这个空间在gd_t之下,然后将gd_t中的bd指针赋值为它的首地址。*/
·
· memset ((void*)gd, 0, sizeof (gd_t));
//开发板的数据变量 分配空间
· gd->bd =(bd_t*)((char*)gd-sizeof(bd_t));
· memset(gd->bd,0,sizeof (bd_t));
· insert_ddr_layout((unsigned int)gd->bd,
· (unsigned int)((char *)gd+sizeof(gd_t)),"globaldata