uboot分析:uboot启动内核
(注:本文参考资料:朱有鹏嵌入式课程。本文为个人学习记录,如有错误,欢迎指正。) 1. U-Boot启动内核概述 U-Boot启动完成后,最终进入到main_loop()循环中。若在bootdelay倒计时为0之前,U-Boot控制台有输入,则进入命令解析-执行的循环;若控制台无输入,U-Boot将启动内核。 U-Boot启动内核可归结为以下四个步骤: 1)将内核搬移至DDR中; 2)校验内核格式、CRC; 3)准备传参; 4)跳转执行内核。 2. U-Boot启动内核过程分析 2.1 将内核搬移至DDR中 在/uboot/lib_arm/board.c->start_armboot()函数调用/uboot/common/main.c->main_loop()函数,main_loop()函数中包含了内核的启动代码。 s = getenv ("bootcmd"); //获取bootcmd环境变量的值 debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>"); if (bootdelay >= 0 && s && !abortboot (bootdelay)) { ................................ #ifndef CFG_HUSH_PARSER run_command