参考《韦东山1期视频》第09课第4节 u-boot分析之u-boot命令实现.WMV
1解析命令:如存在;
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;
}
2提取命令参数
/* Extract arguments */
if ((argc = parse_line (finaltoken, argv)) == 0) {
rc = -1; /* no command at all */
continue;
}
/* 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;
}
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 maxv, char *cmdv[]);
#endif
};
3增加一个hello命令
参考bootm,在common下创建hello_cmd.c
实现do_hello方法和U_BOOT_CMD
拷贝c文件到common目录下
修改common下的makefile文件:
增加cmd_hello.o
重新make。
执行hello。
上一篇:04-S3C2440u-boot学习之u-boot分析(5)_uboot启动内核
下一篇:04-S3C2440u-boot学习之u-boot分析(3)之源码第1、2阶段
推荐阅读最新更新时间:2024-11-09 01:53
设计资源 培训 开发板 精华推荐
- STEVAL-ISA186V1,基于 A6985F5V、38V、0.5A 同步降压开关稳压器的评估板
- IS31FL3218-GRLS2-EB,基于 IS31FL3218 18 通道 LED 驱动器的评估板
- 【立创开发板】【梁山派】游戏机
- LT8570EMS8E-1 1.2MHz 升压转换器的典型应用从 9V-16V 输入产生 48V
- TP5100验证板18650锂电池充电器
- DC1282A-A,LTC2209IUP 演示板,高中频,LVDS 输出,160 Msps,16 位 ADC,Ain >160MHz
- LT1764AEFE-1.5 3.3 VIN 至 2.5 VOUT LDO 稳压器的典型应用
- 具有调光控制功能的 RT8474 高压降压 LED 驱动器的典型应用
- ADR395A 5 Vout 微功率、低噪声精密电压基准的典型应用
- LTM8052AMPV 36Vin、12Vout 降压型 CVCC 转换器的典型应用