uboot命令及添加命令

include/command.h:

struct cmd_tbl_s {
    char        *name;          /* Command Name            */
    int        maxargs;       /* maximum number of arguments    最大参数个数*/
    int        repeatable;      /* autorepeat allowed?        */
                    /* Implementation function    */
    int        (*cmd)(struct cmd_tbl_s *, int, int, char *[]);
    char        *usage;           /* Usage message    (short)    短的提示信息*/
#ifdef    CONFIG_SYS_LONGHELP
    char        *help;             /* Help  message    (long)    详细的帮助信息*/
#endif
#ifdef CONFIG_AUTO_COMPLETE
    /* do auto completion on the arguments */
    int        (*complete)(int argc, char *argv[], char last_char, int maxv, char *cmdv[]);
#endif
};

typedef struct cmd_tbl_s    cmd_tbl_t;

extern cmd_tbl_t  __u_boot_cmd_start;
extern cmd_tbl_t  __u_boot_cmd_end;

#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}

使用U_BOOT_CMD来注册进系统,链接脚本会把所有的cmd_tbl_t结构体放在相邻的地方。
__u_boot_cmd_start 和__u_boot_cmd_end 分别对应命令结构体在内存中开始和结束的地址。

接下来如何添加一条命令:

修改5个地方:(以添加exit命令为例)

  1. /include/config_cmd_all.h    添加CONFIG_CMD_EXIT宏
  2. /include/config_cmd_default.h  同上
  3. /include/configs/smdk2410.h  添加宏   (以上头文件的修改,都是为了条件编译做准备的)
  4. /common/cmd_exit.c    具体实现命令的函数   (命令的实现与命令的注册都在这儿)
  5. /common/Makefile          把自己写的实现命令文件添加到Makefile

1)实现命令的具体功能,在comman文件夹中建立对应的cmd_exit.c文件。

2)如果要添加指令,首先为了能让系统找到该指令,所以要在命令表中注册一下。

cmd_exit.c:

#include <common.h>
#include <command.h>

int do_exit(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
    int r;

r = 0;
    if (argc > 1)
        r = simple_strtoul(argv[1], NULL, 10);

return -r - 2;
}

U_BOOT_CMD(
    exit,    2,    1,    do_exit,
    "exit script",
    ""
);

时间: 2024-11-08 23:47:24

uboot命令及添加命令的相关文章

uboot 添加命令

uboot中有几十个常用的命令,可以帮助我们快速实现数据的拷贝.传递.状态显示等需求 但是这还不够 ,我们需要更多的命令实现差异化,uboot提供的命令也不够 添加命令需要三步: 这里就举一个例子  添加 一个名字叫test的命令 添加前一定要检测不要和存在的命令重名 一 .添加命令实现函数的文件 在common 文件夹下添加文件  cmd_show.c 这里面推荐这么命名,可以看到这个文件夹下都是这么命名的 ,我们也不要换了   当然是可以改的   只要和第二步配合好就行了 里面这么写就好 #

uboot之添加命令

1.添加命令 若要向Uboot中添加自己的命令,而自己又不想知道命令实现的原理,可以按照以下做法: 1.在uboot/common目录下,随便找一个cmd_xxx.c文件,将cmd_xxx.c文件拷贝一下,并重新命名为cmd_hello.c cp cmd_xxx.c cmd_hello.c 2.进入到cmd_hello.c中,修改 a:修改宏U_BOOT_CMD U_BOOT_CMD宏参数有6个: 第一个参数:添加的命令的名字 第二个参数:添加的命令最多有几个参数(注意,假如你设置的参数个数是3

uboot自定义添加命令

1.添加命令 1.u-boot的命令格式: U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help") name:命令的名字,不是一个字符串: maxargs:最大的参数个数: repeatable:命令是可重复的: command:对应的函数指针 2.在uboot/common目录下,随便找一个cmd_xxx.c文件,将cmd_xxx.c文件拷贝一下,并重新命名为cmd_hello.c cp cmd_xxx

一步步玩pcDuino3--uboot下的ping,添加命令可以接受来自host的ping

uboot是一个非常优秀的开源项目.不仅仅可以学习bootloader,嵌入式,各种总线协议.还可以了解网络协议栈.在嵌入式开发中,经常使用uboot的tftp和nfs来加快开发的效率.那么在tftp可以使用之前,我们要保证host和pcDuino3可以ping通.在uboot下可以ping通host,但是host不能ping通uboot,这是因为uboot不是操作系统,我们需要做了个命令来循环等待来自host的ping命令. 在为uboot添加命令接受来自host的ping之前,我们先了解一下

给go程序添加命令行参数

操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 需要应用程序根据不同的配置文件访问不同的服务器,希望程序启动时可以指定配置文件. 解决方案 package main import ( "os" "fmt" ) func main() { argsWithProg := os.Args if(len(argsWithProg) < 2) { fmt.Println("usage : ",argsWithProg

linux移植u-boot(一)——U-Boot详解+自定义命令实战

linux移植u-boot(一)--U-Boot详解+自定义命令实战 2015-02-07 一.Bootloader ????简单地说:Bootloader主要功能就是 在系统上电时开始执行,初始化硬件和设备,准备好软件环境,最后调用操作系统. ????具体的包含:关闭你看门狗WATCHDOG,改变系统时钟,初始化存储控制器 ,将操作系统内核代码复制到内存中去运行. ????为了开发方便,可以增加网络功能,从PC上通过串口或者网络下载文件,烧写文件,将flash上的内核代码解压后运行等. Boo

VS2013在右键菜单添加命令插件开发

一.选择Visual Studio Package模板建立插件项目 由于此功能需要在右键菜单上添加命令,所以选择Visual Studio Package模板,根据模板向导步骤插件项目,在Select VSPackage Options步骤的时候选择Menu Command选项,如图-1所示: 图-1 接下来是设置命令的名称,如图-2所示 图-2 修改Command name的值,将其设置为我们要添加到右键菜单时的名称.Command ID可选择是否修改,值是一个十六进制数,由于标识我们的添加的

linux命令useradd添加用户详解

1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 3.主要参数 -c:加上备注文字,备注文字保存在passwd的备注栏中. -d:指定用户登入时的主目录,替换系统默认值/home/<用户名> -D:变更预设值. -

一天一个linux基础命令之添加用户useradd

添加用户 useradd 1.命令格式 useradd [options] USERNAME 2.命令功能 useradd命令用于Linux中创建的新的系统用户.useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号. 使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中 在Red Hat Linux中,adduser命令则是useradd命令的符号连接,两者实际上是同一个指令. useradd可以添加的选项,指