配置文件: include/configs/mx53_xx.h
1. board/freescale/“platform”/u-boot.lds (链接脚本)
ENTRY(_start) 指示程序的入口函数_start
2. cpu/arm_cortexa8/start.S
// 程序开始的一些基本设置,汇编,不知说啥
#endif
ldr pc, _start_armboot @ jump to C code
_start_armboot: .word start_armboot // 最后跳到函数 start_armboot
3. lib_arm/board.c (start_armboot)
// u-boot 进入的第一个C函数,完成系统的初始化,处理用户输入命令
3.1 board_late_init (); // board/freescale/“platform”/mx53_smd.c
3.1.1 board_special_init(void) //初始化gpio
3.1.2 board_pm_setup(void) // 电源设置 usb充电或AC充电之类
3.1.3 check_autotest_mode(); // 检查是否为autotest mode : 即检查某个按键是否按下,是则设置命令环境变量 setenv("bootcmd", "run bootcmd_autotest");
3.2 check_recovery_mode(); // 检查是否为 recovery mode
3.3 进入mian loop main_loop ();
4 。 main_loop (); // common/mian.c
// 处理输入命令,按设置好的环境变量启动linux
|