||
这里所说的命令功能类似linux中的shell,输入一个命令,然后程序开始解析运行。这里我们只是象征性的实现几个简单的命令,包括下列命令:
1) help:提供帮助信息
2) md:memory display 显示内存
3) mw:memory write 写内存
第二节 程序相关讲解完整代码见目录7.command。
第一节 main.c
#define CFG_PROMPT "UT4412BV03 # " /* Monitor Command Prompt */
int main (void)
{
char buf[64];
int argc = 0;
char * argv[10];
uart_init();
while(1)
{
printf(CFG_PROMPT);
readline(buf, argc, argv);
}
return 0;
}
这个函数很简单,就一个比较关键的函数readline();这个函数的作用是读取输入,然后解析命令,再去调用相应的命令函数.
第二节 command.c
// 根据命令执行对应的代码
int run_command(int argc, char * argv[])
{
if (argc == 0)
return -1;
if (strcmp(argv[0], "help") == 0)
{
help(argc, argv);
return 0;
}
if (strcmp(argv[0], "md") == 0)
{
md(argc, argv);
return 0;
}
if (strcmp(argv[0], "mw") == 0)
{
mw(argc, argv);
return 0;
}
if(argc >= 1)
printf("Unknown command '%s' - try 'help' \r\n",argv[0]);
return 0;
}
根据不同的命令,调用不同的执行函数。例如输入help命令,调用的执行函数是help()函数。 下面来简单地解释各个命令的执行函数:
int help(int argc, char * argv[]):打印帮助信息。
int md(int argc, char * argv[]):读内存,读写内存都只是简单的指针操作
int mw(int argc, char * argv[]):写内存
第三节 编译代码和烧写运行将sd卡插入PC,在Ubuntu终端执行如下命令:
#cd 7.command
#make
# sudo ./sd_fusing.sh /dev/sdb bl2.bin
第四节 实验现象