uboot(五)—— main_loop
【摘要】 目录一、main_loop函数二、去掉多余if判断函数三、autoboot_command3.1、abortboot3.2、run_command_list四、cli_loop一、main_loop函数位置:u-boot-2022.01/common/main.c 40行void main_loop(void){ const char *s; bootstage_mark_name...
目录
一、main_loop函数
位置:u-boot-2022.01/common/main.c 40行
二、去掉多余if判断函数
- bootstage_mark_name:打印出启动进度
- cli_init():命令初始化有关,初始化 hush shell 相关的变量
- run_preboot_environment_command:获取环境变量 perboot 的内容
- s = bootdelay_process:此函数会读取环境变量 bootdelay 和 bootcmd 的内容
将 bootdelay 的值赋值给全局变量 stored_bootdelay,返回值为环境变量 bootcmd 的值。 - autoboot_command:检查倒计时是否结束
- cli_loop:命令行处理函数
三、autoboot_command
- 位置:u-boot-2022.01/common/autoboot.c 475行
- 大致执行流程:判断3个条件,if成立进入执行run_command_list()启动内核,否则相当于什么都不执行,函数返回,接着执行cli_loop函数
- if成立的关键,abortboot()函数,判断键盘是否按下,按下if就不成立,否则成立
3.1、abortboot
- 最终执行abortboot_single_key函数
- abortboot_single_key:判断键盘是否按下,按下返回1,否则0
倒计时并输出
3.2、run_command_list
此函数会执行参数 s 指定的一系列命令,也就是环境变量 bootcmd 的命令
启动内核
四、cli_loop
命令行处理函数
- 位置:common/cli.c
- cli_loop:中执行parse_file_outer函数进行命令的解析与执行
- parse_file_outer:
parse_stream 进行命令解析
run_list 执行解析出来的命令 - run_list:里面经过一系列调用run_list_real --> run_pipe_real --> cmd_process 来处理命令
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)