一、命令的具体定义
每个命令都是通过U_BOOT_CMD宏来定义的,这个宏定义了一个相关的结构体cmd_tbl_s,是在uboot/include/command.h 文件中。
如下所示:
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 CONFIG_SYS_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
};
从这个宏的定义信息,我们可以知道,每一个 U-Boot 命令都有一个结构体来描述。而这个结构体包含的成员变量有命令名称、最大参数个数、是否可重复、命令执行函数、用法提示、帮助提示。
具体的命令信息定义也在 uboot/include/comman.c 文件中,如下所示: