"bootcmd=" CONFIG_BOOTCOMMAND "\0" #endif在./include/configs/mx6ullevk.h中有定义:#define CONFIG_BOOTCOMMAND \ "run findfdt;" \ "mmc dev ${mmcdev};" \ "mmc dev ${mmcdev}; if mmc rescan; then " \ "if run loadbootscript; then " \ "run bootscript; " \ "else " \ "if run...
#define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \ ll_entry_declare(cmd_tbl_t, _name, cmd) = U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp); #define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,...
U-Boot的Cmd机制是通过在源代码中定义一系列的命令函数来实现的。每个命令函数对应一个特定的命令,当用户在U-Boot的命令行界面输入相应的命令时,U-Boot会调用对应的命令函数来执行相应的操作。 Cmd机制的实现依赖于两个关键的数据结构:cmd_tbl_t和cmd_tbl_list。cmd_tbl_t是一个结构体,用于存储每个命令的相关信...
U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, NULL) \ #define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \ ll_entry_declare(cmd_tbl_t, _name, cmd) = U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _he...
U_BOOT_CMD_COMPLETE定义紧挨着,如下: #defineU_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \ll_entry_declare(cmd_tbl_t, _name, cmd)=\ U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, \
cmd_tbl_t是一个结构体,在include/command.h中有如下定义: 结构体定义的内容其实就是U_BOOT_CMD实现包含的几个参数。 flag这个参数没有深究是干嘛用的,好多命令在最底层实现的时候都没用到这个参数 argc:命令行传入总的参数数量,与linux应用、命令下传参是一样的,都是命令本身+参数个数,所以argc至少等于1,即...
uboot下执行U_BOOT_CMD定义的命令今天研究了一下uboot中怎么用dorun函数来执行定义好的一些命令发现其实也挺简单的关键是得把dorun函数的几个参数吃透这几个参数都是由ubootcommmod的cmdtbls结构体决定的ubootcmd的宏定义也取决于它如下 uboot下执行U_BOOT_CMD定义的命令 今天研究了一下uboot中怎么用do_run()...
int (*complete)(int argc, char *argv[], char last_char, int maxv, char *cmdv[]); #endif } 对比两者后很容易就明白了怎样去定义一个uboot下的命令。 接下来看看do_run函数的定义(在../boot/common/main.c下): #if defined(CONFIG_CMD_RUN) ...
U_BOOT_CMD宏定义是在文件include/command.h中,添加自己的命令时一般是在common/目录下新建一个C文件,C文件中包含的头文件可以从该目录下其他命令文件(如cmd_nand.c)复制过来,新建的C文件中一般使用宏U_BOOT_CMD进行声明,例如U_BOOT_CMD(lcdmenu, CFG_MAXARGS, 0, do_lcd_menu,"menu ...
U-Boot的每一个命令都是通过U_BOOT_CMD宏定义的。这个宏在include/command.h头文件中定义,每一个命令定义一个cmd_tbl_t结构体。理论上支持无数个,但是实际应用根本用不到这么多,当然还决定于宏解析和文档的大小。