U-boot中怎么添加命令选项

本文详细解析了U-Boot中命令结构的定义方式,并以hello命令为例展示了如何在U-Boot中添加自定义命令。通过使用U_BOOT_CMD宏,开发者能够将命令表放入指定的内存区域,实现灵活的命令管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在command.h中分析命令结构


/* 这是定义一个结构的属性,将其放在.u_boot_cmd这个段当中,相当于.data/.bss这些段 */
#define Struct_Section  __attribute__ ((unused,section (".u_boot_cmd")))   
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)
 cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage}
这样一来,凡通过U_BOOT_CMD定义的cmd_tbl_t变量会全部被放在.u_boot_cmd段当中(可以看UBOOT的链接脚本xxx.lds),具体怎么放是链接器的工作。
name :  命令的名字
maxargs:最大的参数
rep:是否可重复发命令
usage:短帮助信息
help:长帮助信息


增加一个hello命令,具体格式如下:把这个hello_common.c放在commoc文件夹下面
/*参考cmd_bootm.c文件*/
#include <common.h>
#include <watchdog.h>
#include <command.h>
#include <image.h>
#include <malloc.h>
#include <u-boot/zlib.h>
#include <bzlib.h>
#include <environment.h>
#include <lmb.h>
#include <linux/ctype.h>
#include <asm/byteorder.h>


int do_hello (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
  printf("hello world!\n");
  return 0;
}


U_BOOT_CMD(
hello,CONFIG_SYS_MAXARGS,1,do_hello,
"just for test"
"boot application image from memory",
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值