下载 u-boot-2010.06
官网下载
ftp://ftp.denx.de/pub/u-boot/
积分多的可以去这里下载,网速会快一点
https://download.csdn.net/download/laifu_ma/5688297

解压 uboot
tar -jxf u-boot-2010.06.tar.bz2

fw_printenv 的源码在 u-boot-2010.06/tools/env

单独编译 fw_printenv
cd u-boot-2010.06
make ARCH=arm CROSS_COMPILE=arm-linux- smdk6400_config
make ARCH=arm CROSS_COMPILE=arm-linux- clean
make ARCH=arm CROSS_COMPILE=arm-linux- env
新版本是:make ARCH=arm CROSS_COMPILE=arm-linux- envtools

如果编译报重复定义的错,则屏蔽掉 include/linux/types.h 里面的这两行即可
include/linux/types.h:154:36: error: conflicting types for ‘uintmax_t’ typedef u_int32_t uintmax_t;
include/linux/types.h:155:36: error: conflicting types for ‘intmax_t’ typedef int32_t intmax_t;

拷贝 fw_printenv 到目标板,并在目标板上创建软链接 fw_setenv
ln -s fw_printenv fw_setenv

修改并拷贝配置文件到目标板的 /etc 目录下
vi u-boot-2010.06/tools/env/fw_env.config
如果你的env区域是一个单独的分区并且在uboot分区之后,一般uboot分区是第一个分区名为 /dev/mtd0,则env分区就是 /dev/mtd1
我的env分区是256KB,配置文件可以这样写,如:
/dev/mtd1  0x0  0x40000  0x40000

0x0 表示这些环境变量在 /dev/mtd1 内的起始地址
0x40000 表示这个env分区的大小
0x40000 表示扇区大小?不清楚,貌似改成别的也不影响,但要是前一个参数的倍数

如果你的env区域是和uboot同在一个分区,一般uboot分区是第一个分区名为 /dev/mtd0
则可以参考 一下 u-boot-2010.06/include/configs/smdk6400.h 里面的 CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE
可以这样写,如:
/dev/mtd0  0x0040000  0x4000  0x4000

如果没配置好 fw_env.config, 会出现如下各种报错
1. Cannot read bad block mark: Invalid argument
2. Warning: Bad CRC, using default environment
3. Too few good blocks within range

运行
1. 直接执行 fw_printenv 是打印全部环境变量
2. fw_printenv env_name, 打印单个环境变量,打印如下
~ # fw_printenv baudrate
baudrate=115200
3. fw_printenv -n env_name, 也是打印单个环境变量,自己体会下
~ # fw_printenv -n baudrate
115200
4. fw_setenv env_name env_value, 设置某个环境变量,如: fw_setenv bootdelay 5
5. fw_setenv env_name, 删除某个环境变量,如: fw_setenv bootdelay

高级
该工具默认是不能设置 ethaddr 网卡物理地址的,如需支持则要改代码
修改 u-boot-2010.06/tools/env/fw_env.c 中的 fw_setenv 函数代码如下
if ((strcmp (name, "ethaddr") == 0) ||
把0改为1
if ((strcmp (name, "ethaddr") == 1) ||

嵌入式Linux读写uboot的环境变量 —— fw_printenv 的使用相关推荐

  1. 中修改环境变量_嵌入式 Linux下永久生效环境变量bashrc

    作者:skdkjxy 原文:http://blog.sina.com.cn/s/blog_8795b0970101f1f9.html .bashrc文件 在linux系统普通用户目录(cd /home ...

  2. linux在bashrc中添加变量,嵌入式 Linux下永久生效环境变量bashrc

    .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到4个隐藏文件: .bash_history  记录之前输 ...

  3. 嵌入式 Linux下永久生效环境变量bashrc

    作者:skdkjxy 原文:http://blog.sina.com.cn/s/blog_8795b0970101f1f9.html .bashrc文件 在linux系统普通用户目录(cd /home ...

  4. linux环境oracle环境变量,Linux下设置oracle环境变量

    Linux设置Oracle环境变量 方法一:直接运行export命令定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新s ...

  5. linux 添加path变量,linux下添加PATH环境变量

    添加PATH环境变量,第1种方法: [root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@l ...

  6. linux用户环境下进入uboot,嵌入式linux开发uboot移植(一)——uboot项目简介

    嵌入式linux开发uboot移植(一)--uboot项目简介 一.uboot简介 U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM.8xxROM.P ...

  7. 嵌入式linux之Uboot和系统移植--基础

    <uboot和系统移植-第1部分-uboot学习前传> (观看朱友鹏老师视频后整理的笔记)   1.为什么要有uboot 2.为什么是uboot 3.uboot必须解决哪些问题 4.ubo ...

  8. 从bootm 命令讲起/U-boot的环境变量: bootcmd 和bootargs

    从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址. 这个地方就涉及到u ...

  9. uboot默认环境变量修改

    uboot的默认环境变量决定了系统是通过何种方式启动的,对于定制化的嵌入式系统,uboot的定制化修改也是必要的. uboot有两种修改方式: 1.直接修改源码或者修改uboot配置 2.在uboot ...

最新文章

  1. java中解决Launch configuration TimezoneDump references non-existing project问题
  2. Android 屏幕旋转时Activity的变化
  3. 全球及中国抗菌溶液行业深度调研与前景研究建议报告2022年
  4. 微信小程序没登录跳到登录页怎么做_微信小程序手机端如何实现登录页面跳转含有Tabar页面...
  5. java反射教程_Java反射教程
  6. html border阴影效果_【开发小技巧】026—如何使用HTML和CSS创建浮动框阴影效果?...
  7. 小学教师计算机应用水平和能力,中小学教师信息技术应用能力的现状与对策
  8. HLA程序:HelloWorld.hla
  9. Windows下命令模式安装mysql
  10. linux驱动编译成kext,Hackintosh:制作AppleALC以驱动原生AppleHDA
  11. matlab恒压频比,基于matlab的三相异步电机恒压频比调速仿真.doc
  12. 怎么删除计算机管理员用户密码,解除计算机管理员密码的方法
  13. Day101.MyBatisPlus(MP):自动填充、乐观锁、分页、逻辑删除、Wrapper条件构造器
  14. GVRP-LNP-VCMP讲解
  15. 屏幕适配遇到P30 的坑
  16. vim 删除所有空行
  17. 入小学教材、主流编程语言增长最快…… Python 的 2017 回顾
  18. channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no
  19. linux挂起 终端连不上吗,Linux系统11个不能不知道的终端命令
  20. 元宇宙:6层框架和3个核心底层技术

热门文章

  1. Python爬虫基础-如何获取网页源代码
  2. 笔记本通过HDMI接口外接显示器,显示器画面模糊或颜色比较暗的解决办法
  3. linux db2 数据源配置文件,为 DB2 UDB 系列配置数据源
  4. (支付宝支付)Spring实现一个项目配置多个信息、付款给对应商户
  5. rnss和rdss的应用_浅谈北斗二代RDSS和RNSS组合技术.doc
  6. Flannel网络原理(转载)
  7. Jase面向对象基础
  8. 华润董事长宋林被查或因高价购矿 中间人邢利斌卷入
  9. 互联网大公司和小公司的区别
  10. 计算机专业考研电路原理,2019电子信息工程考研方向_电路与系统专业解读