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, ...
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(struct cmd_tbl, _name, cmd) = \ U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, \ _usage...
abortboot调用abortboot_normal,该函数就是判断bootdelay倒计时内是否有按键按下,倒计时结束没有按键按下,那么执行bootcmd,否则uboot命令行等待用户输入,代码逻辑如下: 总结:有按键输入,abortboot()函数返回1,否则返回0, 这样autoboot_command才会执行bootcmd。 2.7.2.4 cli_loop(uboot命令行) 再来回到main_loop,如...
U_BOOT_CMD_MKENT_COMPLETE(name,maxargs,rep,cmd,usage,help,comp) 其中,##name意思是使用 name替换 ##name。 由此可见,上述被define成了: cmd_tbl_t __u_boot_cmd_md Struct_Section = \ U_BOOT_CMD_MKENT_COMPLETE(md, 3, 1, do_mem_md, "memory display","[.b, .w, .l] address [# of...
#define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,_usage, _help, _comp) \ { #_name, _maxargs, _rep ? cmd_always_repeatable : cmd_never_repeatable, _cmd, _usage, _CMD_HELP(_help) _CMD_COMPLETE(_comp) }
uboot启动流程二 uboot启动流程二 1 U-boot支持的主要特性 1.1 设备树 1.2 驱动模型DM 1.2.1 驱动模型的结构 1.2.2 驱动模型的初始化 1.3 环境变量 1.4 命令行 2 Board_init_f和board_init_r函数流程 2.1 board_init_f流程 2.2 board_init_r流程 ...
如何在uboot中增加用户自定义的命令
U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, \ _usage, _help, _comp); #define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, \ _usage, _help, _comp) \ { #_name, _maxargs, _rep, _cmd, _usage, \ ...
上面代码中的 # 就是将 _name 传递过来的值字符串化,U_BOOT_CMD_MKENT_COMPLETE 又用到了_CMD_HELP 和 _CMD_COMPLETE,这两个宏的定义如下 #ifdefCONFIG_AUTO_COMPLETE#define_CMD_COMPLETE(x)x,#else#define_CMD_COMPLETE(x)#endif#ifdefCONFIG_SYS_LONGHELP#define_CMD_HELP(x)x,#else#define_CMD_HELP...
bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY; debug ("### main_loop entered: bootdelay=%d/n/n", bootdelay); s = getenv ("bootcmd"); //获取引导命令。分析见下面。 debug ("### main_loop: bootcmd=/"%s/"/n", s ? s : "<UNDEFINED>"); ...