U-boot命令分析报告.pdf

U-boot命令分析报告.pdf

ID:52925823

大小:77.86 KB

页数:7页

时间:2020-04-01

U-boot命令分析报告.pdf_第1页
U-boot命令分析报告.pdf_第2页
U-boot命令分析报告.pdf_第3页
U-boot命令分析报告.pdf_第4页
U-boot命令分析报告.pdf_第5页
资源描述:

《U-boot命令分析报告.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Uboot命令的解释及添加方法Baods2012.03.22一、分析uboot命令的执行过程在uboot启动的第二段代码start_armboot函数最后面会进入死循环,在这个死循环中调用main_loop函数,其中main_loop函数在common/main.c中定义在这里面查看是否设置环境变量参数,如果设置了则看串口在bootdelay秒内有没有输入,若没有则执行bootcmd命令/***************************************************************

2、*************/voidmain_loop(void){......#ifdefined(CONFIG_BOOTDELAY)&&(CONFIG_BOOTDELAY>=0)char*s;intbootdelay;#endif....../**在这里获得环境变量参数bootdelay,如果环境变量中有定义,则将值赋给bootdelay,*没有则赋值给CONFIG_BOOTDELAY.*/#ifdefined(CONFIG_BOOTDELAY)&&(CONFIG_BOOTDELAY>=0)s=getenv(

3、"bootdelay");bootdelay=s?(int)simple_strtol(s,NULL,10):CONFIG_BOOTDELAY;debug("###main_loopentered:bootdelay=%d",bootdelay);......s=getenv("bootcmd");获取bootcmddebug("###main_loop:bootcmd="%s"",s?s:"");if(bootdelay>=0&&s&&!abortboot(bootdela

4、y)){run_command(s,0);/*执行bootcmd中的命令*/....../*MainLoopforMonitorCommandProcessing*/#ifdefCFG_HUSH_PARSERparse_file_outer();/*Thispointisneverreached*/for(;;);#elsefor(;;){len=readline(CFG_PROMPT);/*首先显示CFG_PROMPT定义的字符串"U-boot>"然后等待键盘输入....之后对一些特别字符进行处理,对于正常字符

5、将存放到console_buffer中*/flag=0;/*assumenospecialflagsfornow*/if(len>0)strcpy(lastcommand,console_buffer);elseif(len==0)flag

6、=CMD_FLAG_REPEAT;#ifdefCONFIG_BOOT_RETRY_TIMEelseif(len==-2){/*返回值等于-2则timeout*/puts("Timedoutwaitingforcommand");#ifdefCONFIG_RESET_T

7、O_RETRY/*Reinitboardtoruninitializationcodeagain*/do_reset(NULL,0,0,NULL);#elsereturn;/*retryautoboot*/#endif}#endifif(len==-1)/*返回值等于-1则break*/puts("");elserc=run_command(lastcommand,flag);读取到命令后交给run_command处理if(rc<=0){/*invalidcommandornotrepe

8、atable,forgetit*/lastcommand[0]=0;}}#endif/*CFG_HUSH_PARSER*/}接下来看看run_command函数做了什么工作?intrun_command(constchar*cmd,intflag){cmd_tbl_t*cmdtp;charcmdbuf[CFG_CBSIZE];/*workingcopyofcmd*/char*str=cmdbuf;......clear_ctrlc();/*forgetanypreviousControlC*/if(strlen(

9、cmd)>=CFG_CBSIZE){/*判断输入的命令是否太长*/puts("##Commandtoolong!");return-1;}strcpy(cmdbuf,cmd);/*复制命令到cmdbuf*//*Processseparatorsandcheckforinvalidrepeatablecommands*/while(*str){/*char*str=cm

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。