uboot源码阅读(六)大佬的命令 uboot引导内核启动
2011-07-24 21:05
351 查看
大佬的命令下来了,不过并不是每个人都有资格去执行这样的命令,有资格的都是经过层层选拔了的。在江湖中你也是要不断努力拼搏的,否则,小弟永远都是小弟。
下面就是解析输入的字符串,然后在命令列表中找到相对应的命令。
如果是默认启动的话我们知道cmd字符串为:nand read.i c0008000 80000 500000;bootm c0008000
这里有两行命令,把flash上的数据读到ram中,最终调用bootm实现内核的启动。bootm是如何完成内核启动的后面还会有介绍。
转载请注明出处:/article/8604669.html
下面就是解析输入的字符串,然后在命令列表中找到相对应的命令。
如果是默认启动的话我们知道cmd字符串为:nand read.i c0008000 80000 500000;bootm c0008000
这里有两行命令,把flash上的数据读到ram中,最终调用bootm实现内核的启动。bootm是如何完成内核启动的后面还会有介绍。
int run_command (const char *cmd, int flag) { while (*str) { /* * Find separator, or string end * Allow simple escape of ';' by writing "\;" */ for (inquotes = 0, sep = str; *sep; sep++) {//解析出一行命令,在这里有两行命令 if ((*sep=='\'') && (*(sep-1) != '\\')) inquotes=!inquotes; if (!inquotes && (*sep == ';') && /* separator */ ( sep != str) && /* past string start */ (*(sep-1) != '\\')) /* and NOT escaped */ break; } /* find macros in this token and replace them */ process_macros (token, finaltoken);//宏的处理,好像自己没在命令里面用到过宏 /* Extract arguments */ if ((argc = parse_line (finaltoken, argv)) == 0) { //把命令里面的字符串都解析出来,放入到argv里面 rc = -1; /* no command at all */ continue; } /* Look up command in command table */ if ((cmdtp = find_cmd(argv[0])) == NULL) {//把命令列表里面的命令进行前n个字符比较,如果只有一个匹配,就代表找到了 printf ("Unknown command '%s' - try 'help'\n", argv[0]); rc = -1; /* give up after bad command */ continue; } /* found - check max args */ if (argc > cmdtp->maxargs) { //命令找到了,但是输入的参数太多了,无法执行 printf ("Usage:\n%s\n", cmdtp->usage); rc = -1; continue; } /* OK - call function to do the command */ if ((cmdtp->cmd) (cmdtp, flag, argc, argv) != 0) { //条件都全了,那就执行命令吧! rc = -1; } } return rc ? rc : repeatable; }这样工作就做完了,是不是很简单呢,这里只是把程序的重要部分列出了,详细的就看下完整的源码吧!也会很简单的
转载请注明出处:/article/8604669.html
相关文章推荐
- uboot源码阅读(五)大佬的训导 uboot引导内核启动
- uboot启动参数设置和内核引导方法总结
- uboot源码阅读(九)开发板启动串口输出
- uboot源码——内核启动分析
- uboot使用bootm启动内核命令
- uboot第三阶段启动内核等命令实现
- 嵌入式 uboot命令及内核启动参数
- uboot命令及内核启动参数
- 嵌入式 uboot命令及内核启动参数
- uboot内核启动过程源码分析
- uboot终于能从flash上引导linux内核了,但是内核启动又出现了问题
- 【分享】分析uboot是如何启动内核的
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- linux 内核源码阅读之网站资源
- U-Boot启动引导内核分析(一)
- Android系统源码阅读(15):Android 应用进程的启动
- uboot启动内核的流程分析
- uboot 自引导内核(小寿原创)
- 如何阅读 Linux 内核源码
- 实现uboot 命令自动补全 及 修正设置环境变量时自启动内核