现在我们再来看看lib_arm/board.c中的第二阶段入口函数start_armboot :
void start_armboot (void) { #if defined(CONFIG_VFD) || defined(CONFIG_LCD) #endif #ifndef CONFIG_SYS_NO_FLASH #endif /* CONFIG_SYS_NO_FLASH */ #ifdef CONFIG_VFD # # # #endif /* CONFIG_VFD */ #ifdef CONFIG_LCD # # # #endif /* CONFIG_LCD */ #if defined(CONFIG_CMD_NAND) #endif #if defined(CONFIG_CMD_ONENAND) #endif #ifdef CONFIG_HAS_DATAFLASH #endif #ifdef CONFIG_VFD #endif /* CONFIG_VFD */ #ifdef CONFIG_SERIAL_MULTI #endif #if defined(CONFIG_API) #endif #if defined(CONFIG_ARCH_MISC_INIT) #endif #if defined(CONFIG_MISC_INIT_R) #endif #ifdef CONFIG_DRIVER_TI_EMAC extern void davinci_eth_set_mac_addr (const u_int8_t *addr); #endif #if defined(CONFIG_DRIVER_SMC91111) || defined (CONFIG_DRIVER_LAN91C96) #endif /* CONFIG_DRIVER_SMC91111 || CONFIG_DRIVER_LAN91C96 */ #if defined(CONFIG_CMD_NET) #endif #ifdef BOARD_LATE_INIT #endif #ifdef CONFIG_GENERIC_MMC #endif #ifdef CONFIG_BITBANGMII #endif #if defined(CONFIG_CMD_NET) #if defined(CONFIG_NET_MULTI) #endif #if defined(CONFIG_RESET_PHY_R) #endif #endif } |
gd_t 分配一个存储全局数据的区域,地址给指针 全局数据的区清零 给 gd->flags monitor_flash_len 初始化循环 init_sequence 如果有任何一个函数失败就进入死循环。 这个始化函数集比较重要,建议大家认真跟踪一下。 初始化堆空间,清零。 初始化 初始化 初始化 初始化 初始化 初始化 初始化环境变量,如果认为没有找到存储其中的,就用默认值并打印:
初始化
初始化串口。 从环境变量里获取 初始化标准输入输出设备。比如:串口、 初始化全局数据表中的跳转表 跳转表是一个函数指针数组,定义了 初始化 初始化 平台相关的其他初始化,有的平台有 中断使能(一般不使用,很多平台此函数是空的) TI 一种网卡芯片初始化(平台相关)
|