uboot中添加自己的命令

Posted 请给我倒杯茶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uboot中添加自己的命令相关的知识,希望对你有一定的参考价值。

本文转载自:http://blog.csdn.net/huanghai381/article/details/51206646

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

具体的命令定义为: 

 

[cpp] view plain copy
 
  1. #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \   
  2. cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}   
  3.   
  4. U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")  
  5.         name:  is the name of the commad. THIS IS NOT a string.  
  6.         maxargs: the maximumn numbers of arguments this function takes  
  7.         command: Function pointer (*cmd)(struct cmd_tbl_s *, int, int, char *[]);  
  8.         usage:   Short description. This is a string  
  9.         help:    long description. This is a string  

 

 

 

 

 

 


   每一个 U-Boot 命令有一个结构体来描述。结构体包含的成员变量:命令名称、最大参数个数、重复数、命令执行函数、用法、帮助。 
    而相关命令的具体执行在uboot/common/cmd_xxxx.c文件中实现的。

    接着,以我自己添加的menu命令为例子,讲述添加命令的过程。 

 

1、在对应的开发板配置文件中,添加相应命令的宏定义。如:在uboot/include/configs/mx6q_sabresd.h文件中,添加#define CONFIG_CMD_MENU

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

在U_BOOT_CMD中指明的命令执行函数,在该函数中,就是我们要设计的命令操作内容。也就是说,这部分完成的我们定制的命令的功能的。还有,要在uboot/comman/Makefile文件中,加入生成相应的.o文件才可以的。

3、重新编译uboot文件,会在uboot/common/中,生成相应的.o文件。将生成的uboot下载到开发板后,通过终端可以看到我们加入的命令。在终端中输入问号或者help命令即可。执行该命令,只学要输入命令的名字,在回车就可以运行了。

 

另外,uboot的启动设置文件是uboot/common/main.c,里面的main_loop函数就是uboot启动打印的地方。

如果想要实现uboot启动时候按任意键进入我们自己定义的命令,可以在这个if (bootdelay >= 0 && s && !abortboot (bootdelay))条件判断

后面(看清,是后面,不是里面)添加运行自定义命令的指令,如run_command("menu", 0);

技术分享

这样的话,你开机启动后按任意键就不是跳到uboot的命令行,而是你自定义的命令。

以上是关于uboot中添加自己的命令的主要内容,如果未能解决你的问题,请参考以下文章

玩转fireflyrk3288系列uboot--添加自己的板级包

玩转fireflyrk3288系列uboot--添加自己的板级包

嵌入式 hi3518c裸板uboot烧写kernel烧写fs烧写小结

嵌入式 hi3518c裸板uboot烧写kernel烧写fs烧写小结

#yyds干货盘点#使用U_BOOT_CMD()自定义uboot命令

嵌入式开发板 如何将uboot,内核镜像,文件系统镜像文件合并成一个文件进行烧录