1.在/common/ 目录下创建自己的文件,最好前缀为cmd_.
cmd_hello.c
*********************************************************
#include #include #ifdef CONFIG_CMD_HELLO int do_hello(cmd_tbl_t *cmdtp,int flag,int argc,char *argv) { printf("my test n"); return 0; } U_BOOT_CMD( hello,1,0,do_hello,"usage:testn","help:testn" ); #endif ********************************************************* 2.在当前目录下修改Makefile 在目标变量最后面添加: #ifdef CONFIG_CMD_HELLO COBJS-y += cmd_hello.o #endif 3.在头文件mpc83xx.h中添加对CONFIG_CMD_HELLO的定义 #define CONFIG_CMD_HELLO 编译下载后,在uboot中运行hello: 4.U_BOOT_CMD 它的定义在include/command.h中, /**********************************************************/ #define Struct_Section __attribute__((unused, section(".u_boot_cmd"), aligned(4))) #define U_BOOT_CMD_MKENT_COMPLETE(name,maxargs,rep,cmd,usage,help,comp) {#name, maxargs, rep, cmd, usage, _CMD_HELP(help) _CMD_COMPLETE(comp)} #define U_BOOT_CMD_COMPLETE(name,maxargs,rep,cmd,usage,help,comp) cmd_tbl_t __u_boot_cmd_##name Struct_Section = U_BOOT_CMD_MKENT_COMPLETE(name,maxargs,rep,cmd,usage,help,comp) #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) U_BOOT_CMD_COMPLETE(name,maxargs,rep,cmd,usage,help,NULL) /*******************************************************/ 展开就是:#define U_BOOT_CMD(hello,1,0,do_hello,"usage:testn","help:testn") cmd_tbl_t __u_boot_cmd_hello __attribute__((unused, section(".u_boot_cmd"), aligned(4))) = {hello, 1, 0, do_hello, "usage:testn","help:testn" } 这儿定义了属性,就是所有的命令都存储在.u_boot_cmd节中,可以在连接脚本找到这个节。