---
title: uboot-uboot 添加 自定义命令
date: 2020-05-13 16:51:38
categories:
tags:
- uboot
- cmd
- config
---

章节描述:

定制化uboot 的时偶尔需要添加自定义命令,本问介绍如何添加命令。

步骤

添加命令文件

在common目录下,新建一个cmd_xx.c,需要添加的命令格式为:

int do_hello(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

并在文件中使用 U_BOOT_CMD 宏进行有关说明 :

U_BOOT_CMD(name, maxargs, repeatable, command, "usage","help")

宏参数有6个:

  • 第一个参数:添加的命令的名字
  • 第二个参数:添加的命令最多有几个参数(注意,假如你设置的参数个数是3,而实际的参数个数是4,那么执行命令会输出帮助信息的)
  • 第三个参数:是否重复(1重复,0不重复)(即按下Enter键的时候,自动执行上次的命令)
  • 第四个参数:执行函数,即运行了命令具体做啥会在这个函数中体现出来
  • 第五个参数:帮助信息(short)
  • 第六个参数:帮助信息(long)

最简单的命令文件的范例

#include <command.h>
#include <common.h> int do_hello(cmd_tbl_t *cmdtp,int flag,int argc,char *argv)
{
printf("my test \n");
return 0;
} U_BOOT_CMD(
hello,1,0,do_hello,"usage:test\n","help:test\n"
);

修改 Makefile

修改 common/Makefile 在Makfile中添加一行:

COBJS-y += cmd_xx.o

附录 : 宏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, help}

我们分段来看:

命令所在的段:

#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))

由定义可知该命令在链接的时候链接的地址或者说该命令存放的位置是u_boot_cmd section

宏展开的结构体:

typedef struct cmd_tbl_s        cmd_tbl_t  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) */
  char  *help
}

uboot 添加 自定义命令的更多相关文章

  1. U-Boot添加menu命令的方法及U-Boot命令执行过程

    转;http://chenxing777414.blog.163.com/blog/static/186567350201141791224740/ 下面以添加menu命令(启动菜单)为例讲解U-Bo ...

  2. uboot 添加hello命令

    平台:MPC8315(POWERPC) 1.在/common/ 目录下创建自己的文件,最好前缀为cmd_. cmd_hello.c ********************************** ...

  3. BusyBox 添加 自定义命令\小程序 (applet)

    背景 在做嵌入式开的时候,busybox无疑是非常好用的命令集,所以很多时候都喜欢把busybox移植到我们的系统里面. 说明 添加一个很简单的命令--hello_busybox,输出"He ...

  4. UBOOT添加命令的执行流程

    BootLoader(引导装载程序)是嵌入式系统软件开发的第一个环节,它把操作系统和硬件平台衔接在一起,对于嵌入式系统的后续软件开发十分重要,在整个开发中也占有相当大的比例.U-BOOT是当前比较流行 ...

  5. MyEclipse中自定义maven命令(添加maven 命令)

    关于常用的Maven命令 mvn archetype:create :创建 Maven 项目 mvn compile :编译源代码 mvn test-compile :编译测试代码 mvn test ...

  6. 给 zsh 自定义命令添加参数自动补全

    有时我会自定义一些 zsh 命令,以便提升某些高频操作的效率.本文记录我给一个自定义命令添加参数自动补全的方法. 场景 我自定义了一个 zsh 命令 gmt,执行 gmt <b2>,可以将 ...

  7. uboot启动 及命令分析(3)

    u-boot命令 先贴一个重要结构,位于uboot/include/command.h,这个结构代表每个uboot命令 struct cmd_tbl_s { char     *name;   /* ...

  8. uboot中的命令体系

    一.uboot的命令体系介绍以及实例分析: U-Boot 的命令实现大多在 common 目录下.在该目录下命令的代码文件都是以“ cmd_”开头的,如下图所示: 其中每一个文件都是一个命令实现的代码 ...

  9. u-boot-1.1.6实现自定义命令

    学习目标: 1.了解u-boot-1.1.6中命令的实现机制 2.掌握如何在u-boot-1.1.6中添加自定义命令 1.命令的实现机制 uboot运行在命令行解析模式时,在串口终端输入uboot命令 ...

  10. u-boot中添加自定义命令

    1.u-boot命令机制u-boot中,每个命令都使用一个struct cmd_tbl_s结构体定义,该定义在include/command.h中实现:struct cmd_tbl_s{ char * ...

随机推荐

  1. Git:如何撤销已经提交的代码

    日常操作流程 本地工作区(尚未暂存) ---> add . 到暂存区 ---> commit 到本地仓库 ---> pull拉取关联远程仓库分支合并到本地的分支---> pus ...

  2. 在uGUI正交相机中实现旋转透视效果

    正常uGUI使用正交相机的话,旋转是没有透视效果的,但如果能实现较简单的透视, 对一些效果表现来说还是不错的:见下图(左为透视效果): 正常思路感觉各种麻烦. 因为uGUI使用unity的x和y方向表 ...

  3. windows 文件夹添加备注

    1,选中希望改动的文件夹,然后右键"单击",选择"属性"按钮. 2,打开"自定义"面板,选择"更改图标",将原来的默认文 ...

  4. 分布式任务调度内的 MySQL 分页查询优化

    作者:vivo 互联网数据库团队- Qiu Xinbo 本文主要通过图示介绍了用主键进行分片查询的过程,介绍了主键分页查询存在SQL性能问题,如何去创建高效的索引去优化主键分页查询的SQL性能问题.对 ...

  5. 一:nacos 的安装与启动方式

    一: nacos 的下载与安装 1,下载 到 github下载  nacos-server-1.2.0.zip  文件   :https://github.com/alibaba/nacos/rele ...

  6. group_concat 和 case when 的坑

    SELECT size,instrument_id, (CASE side WHEN "sell" THEN group_concat(id ORDER BY id) END )a ...

  7. protoc-gen-go: error:inconsistent package names: , prototest

    如果你已经安装proto ,以及go生成proto插件.但还是报这种错误,请看一下是否 protoc --go_out=./ *.proto 指令打错了

  8. 算法金 | 你真的完全理解 Logistic 回归算法了吗

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 178/10000 1. 引言 吴恩达:机器学习的六个核心算法!, 通透!!十大 ...

  9. 使用Express写接口

    接口规范 随着前后端分离越来越普遍, 后端接口规范也就越来越重要了,一套良好的接口规范可以提升工作效率, 减少沟通障碍.通常我们都会采用RestfulApi方式来提供接口, 使用 JSON 来传输数据 ...

  10. 使用极限网关助力 ES 集群无缝升级、迁移上/下云

    在工作中大家可能会遇到以下这些场景: 自建 ES 集群需要平滑迁移到 XX 云: 从 XX 云将 ES 集群迁移到自建机房: ES 集群进行跨版本升级,同时保留回退能力: 这些场景往往都还有个共同的需 ...