相关原理:
相关机制及初始化的实现在lib/command.c中完成的。包括:添加命令、查找命令、执行命令、解析命令。
具体命令执行的核心函数在相应的模块里实现。
这样就形成了两层的软件架构:顶层管理层——command.c、底部执行层——相应命令的执行函数。
核心数据结构user_command。
typedef struct user_command {
const char *name;
void (*cmdfunc)(int argc, const char **);
struct user_command *next_cmd;
const char *helpstr;
} user_command_t;
开始:
添加自定义命令的步骤-1:
首先构造一个user_command的实例,比如:
user_command_t mytest_cmd = {
“mytest",
command_mytest,
NULL,
“mytest [{cmds}] /t/t/t– Add my command for test?"
};
添加自定义命令的步骤-2:
然后实现命令的真正函数command_test
void command_mytest(int argc, const char **argv)
{
if(argc == 2)
if((strncmp(argv[1],“help”,strlen(argv[1]))) ==0)
{
printk(“myTest Command Help/n”);
return;
}
printk(“myTest Command exec/n”);
return;
}
添加自定义命令的步骤-3
将命令加入到系统
在command.c中的
Int init_builtin_cmds(void)函数的最后加入add_command(&mytest_cmd);
添加自定义命令的步骤-4
生成vivi镜像
#make clean
#make menuconfig
#make
添加自定义命令的步骤-5
烧录:load flash vivi x
添加自定义命令的步骤-6
测试:进入vivi,执行命令:mytest