u-boot命令分析&命令实现

u-boot打补丁、编译、烧写、实验
  打补丁:patch命令 patch -p1(省略第一个目标地址)< ../  补丁文件名


   u-boot分析
  配置: make 100ask24x0_config
  编译:make
  u-boot要实现的功能
   核心功能: 1.关看门狗                                            开发功能:1.烧Flash
                       2.初始化时钟                                                        2.网卡
                     3..初始化SDRAM                                                   3.串口
                     4.从Flash内读内核                                                  4.USB
                    5..启动内核(最终目的)

u-boot命令通过创建命令结构体(cmd_tbl_t )实现,下面通过添加一个简单的hello命令学习它。

参考common/目录下的cmd_bootm.c创建简单的hello命令,新建cmd_hello.c文件如下:

#include <common.h>
#include <watchdog.h>
#include <command.h>
#include <image.h>
#include <malloc.h>
#include <zlib.h>
#include <bzlib.h>
#include <environment.h>
#include <asm/byteorder.h>


int do_hello (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
int i;
printf  ("hello,world!, %d\n", argc );


for (i = 0; i < argc ; i++)
{
printf("argv[%d]: %s\n" , i , argv[i] );
}
return 0;
}


U_BOOT_CMD(
  hello, CFG_MAXARGS, 1,do_hello,
  "hello   - just for test\n",
  "hello, long help ......\n"
);

接下来,把新建的cmd_hello.c文件放到u_boot../command/目录下,u-boot-1.1.6$ vi common/Makefile 添加cmd_hello.o;重新编译make得到u_boot.bin。

make distclean   //make clean仅仅是清除之前编译的可执行文件及配置文件;而make distclean要清除所有生成的文件。
 make 100ask24x0_config
 make

补充:argc,argv 用命令行编译程序时有用。
主函数main中变量(int argc,char *argv[ ])的含义
有些编译器允许将main()的返回类型声明为void,这已不再是合法的C++
main(int argc, char *argv[ ], char **env)才是UNIX和Linux中的标准写法。
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
* argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值