在u-boot中添加命令
在u-boot中添加命令
原创
©著作权归作者所有:来自51CTO博客作者bjyulq的原创作品,请联系作者获取转载授权,否则将追究法律责任
简介
U-Boot中每个命令都通过U_BOOT_CMD宏来定义,格式如下。宏U_BOOT_CMD在include/command.h中定义。
U_BOOT_CMD(name, maxargs, repeatable, command, "usage", "help")
各项参数的意义为:
Ø name:命令的名字,注意,它不是一个字符串,不要用双引号括起来。
Ø maxargs:最大的参数个数
Ø repeatable:命令是否可重复,指运行一个命令后,下次敲回车即可再次运行。
Ø command:对应的函数指针,类型为(*cmd)(struct cmd_tbl_s *, int, int, char *[])。
Ø usage:简短的使用说明,这是个字符串。
Ø help:较详细的使用说明,这是个字符串。
对于每个使用U_BOOT_CMD宏来定义的命令,其实都是在“.u_boot_cmd”段中定义一个cmd_tbl_t结构。连接脚本u-boot.lds中有这么一段:
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
程序中就是根据命令的名字在内存段__u_boot_cmd_start~__u_boot_cmd_end找到它的cmd_tbl_t结构,然后调用它的函数,请参考common/command.c中的find_cmd函数。其中,cmd_tbl_t结构在include/command.h中定义。
添加自己的命令示例
在common目录下添加一个cmd_hello.c命令的文件,然后修改common/Makefile,添加:
COBJS-y += cmd_hello.o
cmd_hello.c内容如下:
#include<common.h>
#include<command.h>
int do_hello(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
printf("hello,world\n");
}
U_BOOT_CMD(
hello, CONFIG_SYS_MAXARGS, 1, do_hello,
"hello - myfirstcommand'\n",
"hello, world embeded'\n"
"have a study\n"
);
上例中,CONFIG_SYS_MAXARGS 在头文件include/configs/smdk2410.h中定义,默认值16。
上一篇:逻辑地址的背景
下一篇:Bootloader与内核的交互
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
[I.MX6UL] U-Boot移植(三) 在 U-Boot 中添加自己的开发板
添加开发板默认配置文件①先在 configs 目录下创建默认配置文件,复制 mx6ull_14x14_evk_emmc_defconfig
linux 嵌入式 uboot 操作系统 #define -
U-Boot 浅析
U-boot介绍
linux uboot bootloader imx6ull 开发板 -
在u-boot中添加命令
转:://.embedu.org/Column/Column464.htm作者:曾宏安,华清远见嵌入式学院讲师。u-boot是嵌入式系统中广泛使用的一种bootload
#include 赋值 开发板 函数指针 华清远见