uboot ping代码学习笔记.docVIP

  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文档。上传文档
查看更多
uboot ping代码学习笔记

/luoqindong/article/details/6196444 luoqindong的专栏uboot :v1.1.6start_armboot ??? uboot从start.s启动后会跳转到lib_arm/board.c里的start_armboot函数,从这以后都 ???????? 是C语言代码。start_armboot做了一些初始化化然后在死循环里调用main_loop函数 : ???? /* main_loop() can return to retry autoboot, if so just run it again. */ ???? for (;;) { ???? main_loop (); ???? }main_loop main_loop是在;common/main.c中定义的,下面是从串中读取命令然后执行的一部分代码: for (;;) { len = readline (CFG_PROMPT); //从串口读入命令 flag = 0; /* assume no special flags for now */ if (len 0) strcpy (lastcommand, console_buffer); else if (len == 0) flag |= CMD_FLAG_REPEAT; } if (len == -1) puts (INTERRUPT\n); else rc = run_command (lastcommand, flag); // 执行命令 if (rc = 0) { /* invalid command or not repeatable, forget it */ lastcommand[0] = 0; } } find_command run_command首先调用find_command在命令列表里查找到输入的命令: /* Look up command in command table */ if ((cmdtp = find_cmd(argv[0])) == NULL) { printf (Unknown command %s - try help\n, argv[0]); rc = -1; /* give up after bad command */ continue; } find_cmd返回的是cmd_tbl_t类型,cmd_tbl_t里有命令对应的执行函数,再调用具体的cmd_tbl_t ????????? 执行函数来执行命令具体的操作:?? /* OK - call function to do the command */ ?? if ((cmdtp-cmd) (cmdtp, flag, argc, argv) != 0) { ?? rc = -1; ?? } uboot所有的命令都定义在commom目录下,ping命令在cmd_net.c文件里定义,定义如下:??? ??? U_BOOT_CMD( ???? ping, 2, 1, do_ping, ???? ping\t- send ICMP ECHO_REQUEST to network host\n, ???? pingAddress\n ??? );? 5 U_BOOT_CMD U_BOOT_CMD定义如下: /* * Monitor Command * * All commands use a common argument format: * * void function (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); */ ? struct cmd_tbl_s { char *name; // Command Name int maxargs; // maximum number of arguments int repeatable; // autorepeat allowed? // Implementation function int (*cmd)(struct cmd_tbl_s *, int, int, char *[]); char *usage; // Usage message (short) #ifdef CFG_LONGHELP char *help; // Help? message (long) #endif #ifdef CONFIG_AUTO_COMPLETE // do auto completion on the arguments int (*complete)(int argc, char *argv[], char last_char, int

文档评论(0)

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

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

1亿VIP精品文档

相关文档