关闭

U-boot中定制自己的命令

799人阅读 评论(0) 收藏 举报

 我们使用U-boot的时候,大多数都是直接编译再移植了,很少改动里面的具体内容,特别是其中包含的命令等。虽然里面包含了一些常用的提供给用户进行交互的命令,并且也比较实用了。但是,根据某些开发板的特殊操作和用户的特定需求,还是不得不去在Uboot中,添加一些供自己调试和开发的命令,这样会更方便快捷的开展工作。
     这样,就介绍一下关于如何在Uboot中,添加命令的方法和步骤。
     首先,介绍以下有关Uboot的命令定义。

     每个命令都是通过U_BOOT_CMD宏来定义的。这个宏定义了一个相关的结构体,文件是uboot/include/command.h,结构体为cmd_tbl_s。

image

具体的命令定义为:
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) /
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}
     每一个 U-Boot 命令有一个结构体来描述。结构体包含的成员变量:命令名称、最大参,数个数、重复数、命令执行函数、用法、帮助。
     而相关命令的具体执行在uboot/common/cmd_xxxx.c文件中实现的。

     接着,以我自己添加的MYTEST命令为例子,讲述添加命令的过程。
     1)在对应的开发板配置文件中,添加相应命令的宏定义。如:在uboot/include/configs/mx25_3stack.h文件中,添加#define CONFIG_CMD_MYTEST。

image

      当然,也可以在uboot/include/config_cmd_default.h文件中,添加该命令的宏定义。
      2)在uboot/common/目录下,建立相应的命令执行文件,如cmd_mytest.c,注意命名的规范,必须是cmd_xxx.c才行。
      里面的内容也是又格式要求的,如函数的格式,必须指定参数的;还有相应结尾部分的U_BOOT_CMD定义部分,使不能缺省的。如果命令不需要跟参数,则把maxargs设置为1即可了。

image

      在U_BOOT_CMD中指明的命令执行函数,在该函数中,就是我们要设计的命令操作内容。也就是说,这部分完成的我们定制的命令的功能的。
      还有,要在uboot/comman/Makefile文件中,加入生成相应的.o文件才可以的。
      3)重新编译uboot文件,会在uboot/common/中,生成相应的.o文件。将生成的uboot下载到开发板后,通过终端可以看到我们加入的命令。在终端中输入问号或者help命令即可。执行该命令,只学要输入命令的名字,在回车就可以运行了。
      通过在uboot中加入命令,可以完成我们的一些特定的操作,实现调试和测试目的等。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1708353次
    • 积分:19634
    • 等级:
    • 排名:第439名
    • 原创:27篇
    • 转载:1525篇
    • 译文:2篇
    • 评论:128条
    最新评论