---
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. Multisim 教程

    Multisim 教程 Multisim主要是用来做电路图绘制.仿真的程序.本教程介绍Multisim的功能和使用方法. Multisim 界面简介 Multisim是电路设计套件里完成电路图绘制和仿 ...

  2. Solution Set - DP

    CF101E Candies and Stones Link&Submission. DP 的状态设计和转移都是显然的,唯一的问题在于需要输出方案,而这题卡空间.会发现如果用 bitset 存 ...

  3. @Async异步失效的9种场景

    前言 最近星球中有位小伙伴问了我一个问题:他在项目某个方法使用@Async注解,但是还是该方法还是同步执行了,异步不起作用,到底是什么原因呢? 伪代码如下: @Slf4j @Service publi ...

  4. 2019年最新前端面试题,js程序设计题

    都说机会是留给有准备的人的. 一年之计在于春,面对众多的前端技术,需要时刻充电自己. 我现在整理一些前端js面试程序题. 1.判断一个字符串中出现最多的字符,并计算出现的次数? 2.用css伪类实现下 ...

  5. 在Biwen.QuickApi中整合一个极简的发布订阅(事件总线)

    闲来无聊在我的Biwen.QuickApi中实现一下极简的事件总线,其实代码还是蛮简单的,对于初学者可能有些帮助 就贴出来,有什么不足的地方也欢迎板砖交流~ 首先定义一个事件约定的空接口 public ...

  6. apisix~自定义插件的部署

    参考 https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-lua https://apisix.apach ...

  7. 网络安全—IPSec安全策略

    文章目录 网络拓扑 添加策略 ESP 添加筛选器 添加筛选器的操作 另一台主机设置 AH 使用Windows Server 2003系统 网络拓扑 client1 IP = 192.168.17.10 ...

  8. anaconda3部署以及使用详解

    Anaconda3-2019.10-Linux-x86_64.sh 某次执行Python程序,其中两个错误信息如下: ImportError: libcblas.so.3: cannot open s ...

  9. 鸿蒙HarmonyOS实战-Stage模型(开发卡片事件)

    一.开发卡片事件 HarmonyOS元服务卡片页面(Metaservice Card Page)是指在HarmonyOS系统中,用于展示元服务的页面界面.元服务是指一组提供特定功能或服务的组件,例如天 ...

  10. PyQGIS二次开发指南

    当你的数据处理使用的是Python语言,而你的导师又让你开发界面,那么PyQGIS二次开发指南是你必读的圣经.QGIS支持Python语言进行二次开发,你将学会如何使用Qt Designer进行界面设 ...