大型网站的设计,oyster wordpress,培训学校机构有哪些,门户网站开发设计报告Uboot添加自定义命令#xff1a;uboot中的命令使用U_BOOT_CMD这个宏声明来注册进系统#xff0c;链接脚本会把所有的cmd_tbl_t结构体放在相邻的地方。 UBoot版本#xff1a;u-boot-2013.01 一、U-Boot命令的格式 即使是内核的启动#xff0c;也是通过U-Boot命令来实现的。… Uboot添加自定义命令uboot中的命令使用U_BOOT_CMD这个宏声明来注册进系统链接脚本会把所有的cmd_tbl_t结构体放在相邻的地方。 UBoot版本u-boot-2013.01 一、U-Boot命令的格式 即使是内核的启动也是通过U-Boot命令来实现的。U-Boot中每个命令都是通过 U_BOOT_CMD 宏来定义的格式如下 U_BOOT_CMD(name,maxargs,repeatable,command,usage,help) 各项参数的意义如下 1) -- name:命令的名字注意它不是一个字符串不要用双引号括起来 2-- maxargs:最大的参数个数 3-- repeatable:命令是否可以重复可重复是指运行一个命令后下次敲回车即可再次运行 4-- command:对应的函数指针类型为*cmd(struct cmd_tbl_s *, int, int, char *[]); 5) -- usage:简单的使用说明这是个字符串 6-- help:较详细的使用说明这是个字符串。 宏U_BOOT_CMD 在include/command.h中定义如下所示 而U_BOOT_CMD 是用一个struct cmd_tbl_s 结构体定义,这个结构体仍是在include/command.h中实现 可以看出对于每个使用U_BOOT_CMD 宏来定义的命令就是宏 U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)将struct cmd_tbl_s这样的一个命令结构体放到U-BOOT连接脚本 board/xxx/u-boot.lds中定义的.u-boot_cmd段所在的内存区域即在.u_boot_list.cmd段中定义一个 cmd_tbl_t 结构。 连接脚本U-Boot.lds中有如下代码 当用户在u-boot的shell中输入命令时就会在.u_boot_list.cmd这个内存区域中查找( _u_boot_list_cmd__start - _u_boot_list_cmd__end)当该区域中某一个cmd_tbl_s命令结构体的cmd_tbl_s.name和输入的命令字符串相符时就调用该命令结构体的cmd_tbl_s.cmd()函数。 二、添加自定义命令 自定义命令设为myubootcmd,不可与u-boot命令重名 1、添加命令行配置信息 在u-boot-2013.01/include/configs/fs4412.h由具体开发板来配置这里使用fs4412中添加 #define CONFIG_CMD_MYUBOOT如下: 2、编写命令行对应的源程序 在u-boot-2013.01/common/目录下建立相应的命令执行文件cmd_hello.c 注意命名的规范必须是cmd_xxx.c才行。里面的内容也是有格式要求的如函数的格式必须指定参数的还有相应结尾部分的U_BOOT_CMD定义部分使不能缺省的。如果命令不需要跟参数则把maxargs设置为1即可了。内容如下所示: [cpp] view plaincopy #include common.h #include command.h #ifdef CONFIG_CMD_HELLO void helloword (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { printf(hello world by xiaoqiang! \n); } U_BOOT_CMD(hello,1,2,helloword, hello command,xiaoqing add hello command!\n); #endif 3、修改Makefile 在common/Makefile中增加一项. 4、编译 5、测试