uboot中可以通过修改源程序来添加自定义命令,进一步扩展uboot的功能。

我想在uboot下添加一条新的命令(名为varcpy),用来拷贝uboot中的环境变量。

修改方式如下:

创建新文件common/cmd_varcpy.c,并在该文件中添加如下内容:

#include <common.h>
#include <command.h> #ifdef CONFIG_CMD_VARCPY
int do_varcpy(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
int i;
if(argc != )
cmd_usage(cmdtp);
setenv(argv[],getenv(argv[])); return ;
} U_BOOT_CMD(
varcpy, , , do_varcpy,
"copy oldvar to newvar",
"oldvar newvar\n"
" - copy enviroment value of oldvar to a new variable named as newvar\n"
);
#endif

在common/Makefile中添加一行:

COBJS-$(CONFIG_CMD_VARCPY) += cmd_varcpy.o

在include/configs/hwgw6410_dev.h下添加一行:

#define CONFIG_CMD_VARCPY

然后重新编译,将生成的uboot烧写到开发板,然后就可以使用该命令了。使用方式如下:

hwgw # printenv
baudrate=
bootargs=console=ttySAC,
bootcmd=if mmc rescan ; then fatload mmc 0x50000000 reload.img; source 0x50000000; fi
bootdelay=
ethact=dm9000
ethaddr=:::8f:ad:b3
ipaddr=192.168.1.111
oldipaddr=192.168.1.111
serverip=192.168.1.149
stderr=serial
stdin=serial
stdout=serial Environment size: / bytes
hwgw # varcpy serverip oldserverip
hwgw # printenv
baudrate=115200
bootargs=console=ttySAC,115200
bootcmd=if mmc rescan 0 ; then fatload mmc 0 0x50000000 reload.img; source 0x50000000; fi
bootdelay=3
ethact=dm9000
ethaddr=00:12:39:8f:ad:b3
ipaddr=192.168.1.111
oldipaddr=192.168.1.111
oldserverip=192.168.1.149
serverip=192.168.1.149
stderr=serial
stdin=serial
stdout=serial Environment size: 352/16380 bytes

从上面的输出信息可以看到,使用varcpy将serverip拷贝到oldserverip后,得到的环境变量多了一行关于oldserverip的信息。

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

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

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

  2. 在U-Boot中添加自定义命令以实现自动下载程序【转】

    本文转载自:https://gaomf.cn/2016/06/26/%E5%9C%A8U-Boot%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9 ...

  3. uboot中的命令体系

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

  4. 在u-boot中添加命令

    转:http://www.embedu.org/Column/Column464.htm 作者:曾宏安,华清远见嵌入式学院讲师. u-boot是嵌入式系统中广泛使用的一种bootloader.它不仅支 ...

  5. uboot中fdt命令的使用

    转载:https://blog.csdn.net/voice_shen/article/details/7441894 依linux community的要求,从linux-3.5后,新提交的code ...

  6. uboot中ftd命令

    可以从u-boot官网源码下载一个比较新的u-boot, 查看它的cmd/fdt.cftp://ftp.denx.de/pub/u-boot/ fdt命令使用示例nand read.jffs2 320 ...

  7. linux中添加自定义命令

    centos下设置alias别名,比较简单,例如: vim /root/.bashrc addalias rm='rm -i' Linux alias设置指令的别名命令详解 功能说明:设置指令的别名. ...

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

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

  9. uboot中的快捷菜单的制作说明 【转】

    转自:http://blog.chinaunix.net/uid-22030783-id-366971.html   在uboot中加入快捷操作菜单的方法非常简单,在论坛发布的uboot201003V ...

随机推荐

  1. TortoiseGit在github上创建工程

    一.前期准备 TortoiseGit官网下载地址:http://code.google.com/p/tortoisegit/ git下载地址:https://git-scm.com/download/ ...

  2. 浅谈Generator和Promise原理及实现

    Generator 熟悉ES6语法的同学们肯定对Generator(生成器)函数不陌生,这是一个化异步为同步的利器. 栗子: function* abc() { let count = 0; whil ...

  3. PHP RSA加解密示例(转)

    1.生成密钥和公钥 开始前需要准备openssl环境 linux 需要安装openssl工具包,传送门http://www.openssl.org/source/ window 下需要安装openss ...

  4. Hibernate学习五----------组件属性

    © 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...

  5. Android 开源项目精选

    0x00  leakcanary [内存泄漏检测] Leakcanary : A memory leak detection library for Android and Java. 良心企业Squ ...

  6. mysql中的类型转换和精确位数

    select round(123.5); 四舍五入 select floor(123.5);取整数部分 select ceil(123.5);四舍五入

  7. Shell脚本笔记 1

    函数别名 设置别名 alias name="command" alias ll="ls -laS" 取消别名 unalias name 求取数学表达式 valu ...

  8. Fragment小结

    Fragment是Android3.0之后增加的新特性,通常人们叫它碎片.可是,我认为把它理解成一个View模块比較好,尽管它不是继承自View.假设阅读过源代码就知道它是内置View对象从而实现Vi ...

  9. Java系统中如何拆分同步和异步

    很多开发人员说,将应用程序切换到异步处理很复杂.因为他们有一个天然需要同步通信的Web应用程序.在这篇文章中,我想介绍一种方法来达到异步通信的目的:使用一些众所周知的库和工具来设计他们的系统. 下面的 ...

  10. caffe学习--cifar10学习-ubuntu16.04-gtx650tiboost--1g--03--20171103

    classification ./examples/cifar10/cifar10_full.prototxt ./examples/cifar10/cifar10_full_iter_70000.c ...