{//---u-boot 的启动步骤(重点)
//阶段一(汇编)
设置为SVC模式
基本硬件设备初始化 //如关闭中断,MMU,看门狗 初始化时钟,串口,flash,内存 见cpu/arm_cortexa8/start.S 的 cpu_init_crit
自搬移到内存 //copy_uboot_to_ram 或relocate
设置好栈 //stack_setup
跳转到第二阶段代码入口 //ldr pc, _start_armboot
//阶段二(C语言)
初始化本阶段使用的硬件设备 //lib_arm/board.c/start_armboot -> init_sequence
搬移内核到内存 //common/main.c main_loop -> getenv ("bootcmd") bootdelay >= 0 && s && !abortboot (bootdelay)) 下的 run_command (bootcmd)
运行内核
}
总结起来就是三个2:
两个阶段,汇编阶段,C阶段
两次初始化,汇编基本硬件的初始化,C在对其他需要用到的硬件的初始化。
两次搬移,汇编阶段将bootloader搬移到内存,C阶段将内核搬移到内存。
bootloader简单启动流程,布布扣,bubuko.com
原文:http://blog.csdn.net/it_liuwei/article/details/23201751