构建自己的u-boot快捷菜单
来源:互联网 发布:有什么好用的水乳 知乎 编辑:程序博客网 时间:2024/05/16 15:12
相当于新建menu命令,启动快捷菜单
步骤如下:
(1) 在对应的开发板配置文件中,添加相应命令的宏定义。
如:在uboot/include/configs/mini440.h文件中,添加#define CONFIG_CMD_MENU。
当然,也可以在uboot/include/config_cmd_default.h文件中,添加该命令的宏定义。
(2) 修改在command目录下的Makefile文件
COBJS-y +=main.o
COBJS-y +=cmd_menu.o //加这句生成cmd_menu.o文件
COBJS-y += ACEX1K.o
(3) 在common目录下新建cmd_menu.c文件,函数注意要声明!!!
习惯上把通用命令源代码放在common目录下,与开发板专有命令源代码则放在board/目录下,命名方式只是习惯而已。为了方便阅读和查询习惯以“cmd_<命令名>.c”为文件名。
把cmd_bootm.c文件里的预处理文件copy过来
#include" "
.....
定义“menu”命令
在cmd_menu.c中使用如下的代码定义“menu”命令:
U_BOOT_CMD(
menu, 3, 0, do_menu,
"menu - display a menu, to select the items to do something\n",
" - display a menu, to select the items to do something"
);
其中U_BOOT_CMD命令格式如下:
U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)
各个参数的意义如下:
name:命令名,非字符串,但在U_BOOT_CMD中用“#”符号转化为字符串
maxargs:命令的最大参数个数
rep:是否自动重复(按Enter键是否会重复执行)
cmd:该命令对应的响应函数
usage:简短的使用说明(字符串)
help:较详细的使用说明(字符串)
在内存中保存命令的help字段会占用一定的内存,通过配置U-Boot可以选择是否保存help字段。若在include/configs/mini2440.h中定义了CONFIG_SYS_LONGHELP宏,则在U-Boot中使用help命令查看某个命令的帮助信息时将显示usage和help字段的内容,否则就只显示usage字段的内容。
实现命令的函数
即U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)中的cmd参数
在cmd_menu.c中添加“menu”命令的响应函数的实现。具体的实现代码略:
int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
menu_shell();
return 0;
}
shell函数的定义
void menu_shell(void)
{