uboot添加命令

U_BOOT_CMD是一个宏定义,具体功能是定义一个struct cmd_tbl_s的结构体变量,U_BOOT_CMD宏传递的参数是该结构体变量的成员变量。通过U_BOOT_CMD定义的变量会通过脚本链接到uboot指定的一个section中,然后可以通过find_cmd遍历这个section找到这个cmd,可以通过run_command(cmd, flag)函数执行具体命令。

在进行uboot裁剪和移植时我们需要加入我们自己定制的命令那么如何添加一条命令:

其实添加起来很简单,主要涉及到的几个文件

1 、uboot/common/Makefile 添加我们命令的实现文件 cmd_xxx.c

obj-$(CONFIG_CMD_NET) += cmd_xxx.o

2、uboot/commom/cmd_xxx.c 具体的实现过程文件(以添加一个NFS为例)

#if defined(CONFIG_CMD_NFS)

static int do_nfs(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

{

return netboot_common(NFS, cmdtp, argc, argv);

}

U_BOOT_CMD(

nfs, 3, 0, do_nfs,

"boot image via network using NFS protocol",

"[loadAddress] [[hostIPaddr:]bootfilename]"

);

#endif

 

接下来如何添加一条命令:

修改5个地方:(以添加exit命令为例)

  1. /include/config_cmd_all.h    添加CONFIG_CMD_EXIT宏
  2. /include/config_cmd_default.h  同上
  3. /include/configs/smdk2410.h  添加宏   (以上头文件的修改,都是为了条件编译做准备的)
  4. /common/cmd_exit.c    具体实现命令的函数   (命令的实现与命令的注册都在这儿)
  5. /common/Makefile          把自己写的实现命令文件添加到Makefile

1)实现命令的具体功能,在comman文件夹中建立对应的cmd_exit.c文件。

2)如果要添加指令,首先为了能让系统找到该指令,所以要在命令表中注册一下。

 

④led命令执行过程:
在串口终端输入"led"命令时,串口接收到数据,并传递给run_command()函数,run_command()函数调用common/command.c中实现的find_cmd()函数在u_boot_list段内查找命令,并返回cmd_tbl_t结构。然后run_command()函数使用返回的cmd_tbl_t结构中的函数指针调用do_led(),从而完成命令的执行。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值