LV220-U-Boot自定义命令实例
前面我们已经大概了解了命令的定义和执行过程,我们来自定义一个简单的命令。
一、命令编写
1. gpio_demo.c
c
/*
* Control GPIO pins on the fly
*
* Copyright (c) 2008-2011 Analog Devices Inc.
*
* Licensed under the GPL-2 or later.
*/
#include <common.h>
#include <command.h>
static int do_gpio_demo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
int i = 0;
printf("hello gpio_demo!argc=%d flag=%d\n", argc, flag);
printf("\tcmdtp->name=%s\n", cmdtp->name);
printf("\tcmdtp->maxargs=%d\n", cmdtp->maxargs);
printf("\tcmdtp->usage=%s\n", cmdtp->usage);
printf("\tcmdtp->help=%s\n", cmdtp->help);
printf("\n");
for(i = 0; i < argc; i++)
{
printf("[%s][%d]argv[%d]=%s\n", __FUNCTION__, __LINE__, i, argv[i]);
}
return 0;
}
U_BOOT_CMD(gpio_demo, 4, 0, do_gpio_demo,
"sumu gpio_demo",
"print args");2. Makefile
在 cmd 目录中的 Makefile 文件要添加源文件的编译:
makefile
obj-y += gpio_demo.o二、编译源码
1. 编译脚本
我们直接编译移植过的 uboot,可以用这个脚本:1.sh,出现这个提示表示编译完成:

2. 映射文件
我们看下编译后生成的 u-boot.map 文件,可以搜索一下 gpio_demo 关键字,会看到如下信息:
md
.u_boot_list_2_cmd_2_gpio_demo
0x000000008788a05c 0x1c cmd/built-in.o
0x000000008788a05c _u_boot_list_2_cmd_2_gpio_demo
这就说明我们添加的命令成功了。
三、开发板验证
我们烧写到开发板中,然后启动,我们先敲一个 help 命令:
shell
=> help
在 uboot 的命令模式执行:
shell
=> gpio_demo 1 2 3 4 5会看到有如下输出:

因为我们设置的最多传入 4 个参数,所以有些超了的并不是我们执行 do_gpio_demo()函数的打印。但是到这里就说明我们的自定义命令完成了。