在u-boot中添加命令
2011-09-09 20:51
295 查看
在u-boot中添加命令
简介
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。
本文出自 “bjyulq” 博客,请务必保留此出处http://bjyulq.blog.51cto.com/3512253/661508
简介
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。
本文出自 “bjyulq” 博客,请务必保留此出处http://bjyulq.blog.51cto.com/3512253/661508
相关文章推荐
- U-Boot添加命令的方法
- u-boot中添加自定义命令
- U-boot中mtdparts命令添加
- U-Boot添加命令的方法及U-Boot命令执行过程
- u-boot添加自己的命令—UBI镜像还原工具开发
- imx6 u-boot2015.04 添加进入download模式的命令
- u-boot添加命令
- 在u-boot中添加命令
- U-boot命令的添加
- U-Boot添加命令的方法
- 转帖:添加U-Boot命令
- u-boot的启动、编译过程和命令添加
- U-boot命令的添加
- u-boot分析 七 (添加u-boot命令,学习u-boot命令实现原理)
- U-boot 添加命令 U_BOOT_CMD
- U-boot分析与移植(4)-U-boot 添加命令
- u-boot命令的添加
- 09 uboot上添加自己的命令
- U-boot 添加自定义命令
- U-Boot添加命令的方法