U-BOOT 的 main_loop()函数.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
U-BOOT 的 main_loop()函数

main_loop()函数做的都是与具体平台无关的工作,主要包括初始化启动次数限制机制、设置软件版本号、打印启动信息、解析命令等。(1)设置启动次数有关参数。在进入main_loop()函数后,首先是根据配置加载已经保留的启动次数,并且根据配置判断是否超过启动次数。代码如下:295?void?main_loop?(void) ?296?{ ?297?#ifndef?CFG_HUSH_PARSER ?298???static?char?lastcommand[CFG_CBSIZE]?=?{?0,?}; ?299???int?len; ?300???int?rc?=?1; ?301???int?flag; ?302?#endif ?303? ?304?#if?defined(CONFIG_BOOTDELAY)??(CONFIG_BOOTDELAY?=?0) ?305???char?*s; ?306???int?bootdelay; ?307?#endif ?308?#ifdef?CONFIG_PREBOOT ?309???char?*p; ?310?#endif ?311?#ifdef?CONFIG_BOOTCOUNT_LIMIT ?312???unsigned?long?bootcount?=?0; ?313???unsigned?long?bootlimit?=?0; ?314???char?*bcs; ?315???char?bcs_set[16]; ?316?#endif?/*?CONFIG_BOOTCOUNT_LIMIT?*/ ?317? ?318?#if?defined(CONFIG_VFD)??defined(VFD_TEST_LOGO) ?319???ulong?bmp?=?0;????/*?default?bitmap?*/ ?320???extern?int?trab_vfd?(ulong?bitmap); ?321? ?322?#ifdef?CONFIG_MODEM_SUPPORT ?323???if?(do_mdm_init) ?324?????bmp?=?1;??/*?alternate?bitmap?*/ ?325?#endif ?326???trab_vfd?(bmp); ?327?#endif??/*?CONFIG_VFD??VFD_TEST_LOGO?*/ ?328? ?329?#ifdef?CONFIG_BOOTCOUNT_LIMIT ?330???bootcount?=?bootcount_load();?????????//?加载保存的启动次数 ?331???bootcount++;??????????????????????????//?启动次数加1 ?332???bootcount_store?(bootcount);??????????//?更新启动次数 ?333???sprintf?(bcs_set,?%lu,?bootcount);??//?打印启动次数 ?334???setenv?(bootcount,?bcs_set); ?335???bcs?=?getenv?(bootlimit); ?336???bootlimit?=?bcs???simple_strtoul?(bcs,?NULL,?10)?:?0; ?????????????????????????????????????????????//?转换启动次数字符串为UINT类型 ?337?#endif?/*?CONFIG_BOOTCOUNT_LIMIT?*/?第329~337行是启动次数限制功能,启动次数限制可以被用户设置一个启动次数,然后保存在Flash存储器的特定位置,当到达启动次数后,U-Boot无法启动。该功能适合一些商业产品,通过配置不同的License限制用户重新启动系统。(2)程序第339~348行是Modem功能。如果系统中有Modem,打开该功能可以接受其他用户通过电话网络的拨号请求。Modem功能通常供一些远程控制的系统使用,代码如下:339?#ifdef?CONFIG_MODEM_SUPPORT ?340???debug?(DEBUG:?main_loop:???do_mdm_init=%d\n,?do_mdm_init); ?341???if?(do_mdm_init)?{???????????????????????????//?判断是否需要初始化Modem ?342?????char?*str?=?strdup(getenv(mdm_cmd));?????//?获取Modem参数 ?343?????setenv?(preboot,?str);??/*?set?or?delete?definiti

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档