210学习日记(5)_简单命令的实现.doc
来源:互联网 发布:手机自动挂机赚钱软件 编辑:程序博客网 时间:2024/05/18 03:50
210学习日记(5)
--简单命令的实现
这章实在是没有什么好讲的,大家直接分析代码就能够明白,都是些硬件无关的程序,代码我放到了"Tiny210学习日记_代码"目录下了,名为"4_command"。
分析过u-boot的朋友们,应该对readline()函数不陌生吧,我这里将实现一个简化的readline()函数,实现在终端显示输入提示符,并从终端获取命令,实现过程如下:
int readline (const char *const prompt)
{
char console_buffer[CFG_CBSIZE]; /* 定义一个缓存数组,用于接收终端输入的字符串 */
char *buf = console_buffer; /* 定义个指针,指向上面的数组 */
int argc = 0; /* 用于指明命令参数的个数 */
int state = 0; /* 状态标志 */
puts(prompt); /* 显示输入提示符:WY_BOOT # */
gets(console_buffer); /* 从终端获取字符串,并存入缓存数组 */
while (*buf)/*该while实现对终端输入的命令的解析,将命令,参数拆分,分别存入argv[n]*/
{
if (*buf != ' ' && state == 0)
{
argv[argc++] = buf;
state = 1;
}
if (*buf == ' ' && state == 1)
{
*buf = '\0';
state = 0;
}
buf++;
}
return argc; /* 返回参数的个数 */
}
一下是大家更加熟悉的u-boot中的run_command函数的简化版本,实现过程如下,只是将argv[0]指向的数组和另外一个数组进行比较,如果相等,则执行该if分支里面的函数。strcmp()函数的实现也非常简单,我已经在共享的代码中给出,请大家自行分析之。
void run_command(int argc, char * argv[])
{
if (strcmp(argv[0], "help") == 0)
{
do_help(argc, argv);
return;
}
if (strcmp(argv[0], "md") == 0)
{
do_md(argc, argv);
return;
}
if (strcmp(argv[0], "mw") == 0)
{
do_mw(argc, argv);
return;
}
if(argc >= 1)
wy_printf("Unknown command '%s' - try 'help' \n",argv[0]);
return;
}
注意:
本章实现的命令几乎算是和硬件无关的了,以后每当写完一个具体外设的裸板程序的时候,会添加相应命令的支持,比如nand read,nand write等等函数。添加的过程其实就是在run_command()函数里面多添加一个strcmp()函数的调用,然后用if判断其返回值,若相等,则调用具体的命令执行函数do_XXX
注:
如有问题,请到韦东山LINUX视频讨论群里面,我们一起讨论学习,或者加我QQ:317312379
- 210学习日记(5)_简单命令的实现.doc
- DayDayUP_linuxC学习日记 _利用C实现文件的复制
- VIM学习日记一:简单的编辑命令
- doc简单命令备注
- DOC命令学习
- 210学习日记(4)_printf的实现
- 学习日记--PopupWindow简单功能实现
- 210学习日记(3)_支持串口
- 210学习日记(6)_独立日
- 210学习日记(7)_支持NAND
- 210学习日记(8)_支持DDR
- 210学习日记(10)_支持LCD
- 210学习日记(11)_中断
- 210学习日记(14)_支持声卡
- 210学习日记(15)_移植DM9000
- 210学习日记_特别篇
- 黑马程序员_学习日记十四_基础加强之JDK1.5的新特性
- DOC命令的使用
- ArrayList 和LinkedList各自的特点是什么?
- 210学习日记(4)_printf的实现
- 求1000以内的偶数的和。
- c++模板
- 函数返回局部变量
- 210学习日记(5)_简单命令的实现.doc
- pom.xml
- 【贪心\最大连续区间和】游览路线
- 210学习日记(6)_独立日
- HDU 1218 Blurred Vision
- Java中的Date、Calendar、Logger、Annotation
- 210学习日记(7)_支持NAND
- java 队列
- 210学习日记(8)_支持DDR