微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > DIY智能家居(三)UBoot命令添加方法

DIY智能家居(三)UBoot命令添加方法

时间:10-02 整理:3721RD 点击:
讯为公司的资料包括源码部分,新接触就是比较吃力,上网找资料,QQ群中询问问题,磕磕绊绊的向前走,终于对uboot有了大概的了解,也学习了make编译命令,总之只是了解大概而已。
    目标是智能家居,外设最重要,于是从uboot的外设控制入手:
uboot已经可以单独运行了,通过开发板的串口CON3,就是靠近边上的一个串口,(讯为的人真是缺乏规律性,查主板图和核心板图就知道CON3用的是UART2,;而中间标着的CON2用的是UART3)
闲话少说:uboot不需要我们进行移植,其实讯为已经做好了,只要运行目录中的create_uboot.sh 就会自动完成整个uboot的编译工作。
编译工作要在Ubuntu下进行,你要根据讯为资料安装一个pc机上虚拟的Ubuntu空间,uboot其实可以独立运行了,有些像pc机的dos功能了,编译中你可以增加你自己的命令到uboot命令集中。这个命令集就是uboot源码中的common文件夹。
如何添加自己的命令呢:
最简单的方法 :将自己写好的c程序源码文件放入common文件夹下。
1、将my_XXX.c文件放入common文件夹
2、添加  COBJS-y += my_xxx.o  到makefile ,让make编译的时候查找my_xxx.o所对应的my_xxx.c文件进行编译,这样在超级终端中你就可以使用这个命令了。
3、但是c文件还有些格式要求,不同与其他的c文件格式
        举个例子大家就清楚了:文件名my_test.c  前面加my_是为了好区分文件名,叫什么都可以,只要在common目录下的makefile中对应就可以了。
#include <common.h>   
#include <command.h>     //这两个头文件指引你调用的一些参数和命令吧
int do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])   
//可以用int(返回整形)  也可以用void(不需要返回数据),反正也没有人接受,但要与下面内容对应起来,如果用int  最后要有return 0;命令
//do_test 函数变量名称,要与最后一行中的参数4一致,让它知道调用什么函数。
//参数3:参数个数n-1。1代表后面没有参数,因为文件名本身是第一个参数。
//参数4:是一个字符型的数组,包含所以得参数用argv[0]表示命令名,这里就是test,argv[1]代表第一个参数,以此类推
{   printf("Hello world!\n");      //打印“Hello world!”字符,\n 是转义字符串打印一个换行回车。
return 0;   //与上面int对应,如果是void不需要这句
}  
/* --申明命令宏---变量:命令名称、最大参数个数、重复数、命令执行函数、用法、帮助*/
U_BOOT_CMD( test,   2,  1,  do_test,  "u-boot command test by care", "" );  
这是告诉uboot中CMD命令集中添加一个命令test。
//参数1:命令名称,就是我们编译完成运行后,在超级终端uboot命令下键入的执行命令名称,就敲这个test回车就可以执行了//参数2:最大参数个数,就是上面你键入test后所带参数最大数,一般将文件名作为第一个参数,所以不带任何参数是也要最少为1;
//参数3:重复数,就是当你执行一次test命令后,在直接敲回车就可以重复执行test命令了,如果为0,不执行。
//参数4:执行函数,与上面的函数名称一致。
//参数5、6:无所谓,没有任何影响;(用法说明,帮助信息,)

沙发                             

沙发                             

小编,期待你的下一篇分享。

期待你的下一篇分享

谢谢分享学习一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top