如何在U-Boot中添加自定义命令
1、U-boot命令机制
U-boot中每个命令都使用一个struct cmd_tbl_t定义,该定义在include/commands.h中实现。
要添加一个新命令,要在源码common目录下添加对应的c文件,并且加到Makefile。
命令实现模板如下
#include <common.h>
#include <command.h>
int do_hello(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{ printf(“hello world\n”);
return 0; }
U_BOOT_CMD(hello, CONFIG_SYS_MAXARGS, 1, do_hello, “usage info”, “help info”);
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
其中U_BOOT_CMD是uboot中定义的宏,实际上就是定义一个类型为cmd_tbl_t的结构体并对其赋值;在该结构体中定义好命令名称、参数、命令处理函数等。当用户输入命令后,uboot在接受到命令后到U_BOOT_CMD中依次查找每个cmd_tbl_t,匹配上了就执行这个cmd指向的实现函数。
2、实现步骤
- /include/config_cmd_all.h 添加CONFIG_CMD_NANDBOOT宏
- /include/config_cmd_default.h 同上
- /include/configs/SEP0611.h 添加宏 (以上头文件的修改,都是为了条件编译做准备的)
- /common/cmd_nandboot.c 自己定义的命令 具体实现命令的函数 (命令的实现与命令的注册都在这儿)
- /common/Makefile 把自己写的实现命令文件添加到Makefile中,(参加编译需要配置一下)