Uboot命令实现大致流程图

描述

zImage内核镜像下载到开发板之后,可以使用u-boot的go命令进行直接跳转,这个时候内核直接解压启动。

但是此时的内核无法挂载文件系统,因为go命令没有将内核需要的相关启动参数从u-boot中传递给内核。

传递相关启动参数必须使用u-boot的bootm命令进行跳转,但是u-boot的bootm命令只能处理uImage镜像。

uImage相对于zImage在头部多了64个byte,即为0x40。

(这里你应该知道了为什么要使用bootm命令,以及为什么要是有uImage格式)

在前面我们曾经分析过Uboot的启动流程,两个阶段。

程序最终执行common/main.c中的main_loop。在此之前都是进行一些初始化工作,U-Boot的main_loop函数相当于main主函数。

main_loop函数的结构很复杂,它所做的工作与具体的平台无关,主要目的是处理用户输入的命令和引导内核启动。

(终于看到了引导内核加载)

main_loop 函数的调用关系错综复杂,而且掺杂关系复杂的条件编译,我们抓住与命令实现密切相关的操作来分析命令的实现原理。

命令实现的大致流程如下图所示。

开发板

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分