嵌入式Linux读写uboot的环境变量 —— fw_printenv 的使用
下载 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 的使用相关推荐
- 中修改环境变量_嵌入式 Linux下永久生效环境变量bashrc
作者:skdkjxy 原文:http://blog.sina.com.cn/s/blog_8795b0970101f1f9.html .bashrc文件 在linux系统普通用户目录(cd /home ...
- linux在bashrc中添加变量,嵌入式 Linux下永久生效环境变量bashrc
.bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到4个隐藏文件: .bash_history 记录之前输 ...
- 嵌入式 Linux下永久生效环境变量bashrc
作者:skdkjxy 原文:http://blog.sina.com.cn/s/blog_8795b0970101f1f9.html .bashrc文件 在linux系统普通用户目录(cd /home ...
- linux环境oracle环境变量,Linux下设置oracle环境变量
Linux设置Oracle环境变量 方法一:直接运行export命令定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新s ...
- linux 添加path变量,linux下添加PATH环境变量
添加PATH环境变量,第1种方法: [root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@l ...
- linux用户环境下进入uboot,嵌入式linux开发uboot移植(一)——uboot项目简介
嵌入式linux开发uboot移植(一)--uboot项目简介 一.uboot简介 U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM.8xxROM.P ...
- 嵌入式linux之Uboot和系统移植--基础
<uboot和系统移植-第1部分-uboot学习前传> (观看朱友鹏老师视频后整理的笔记) 1.为什么要有uboot 2.为什么是uboot 3.uboot必须解决哪些问题 4.ubo ...
- 从bootm 命令讲起/U-boot的环境变量: bootcmd 和bootargs
从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址. 这个地方就涉及到u ...
- uboot默认环境变量修改
uboot的默认环境变量决定了系统是通过何种方式启动的,对于定制化的嵌入式系统,uboot的定制化修改也是必要的. uboot有两种修改方式: 1.直接修改源码或者修改uboot配置 2.在uboot ...
最新文章
- java中解决Launch configuration TimezoneDump references non-existing project问题
- Android 屏幕旋转时Activity的变化
- 全球及中国抗菌溶液行业深度调研与前景研究建议报告2022年
- 微信小程序没登录跳到登录页怎么做_微信小程序手机端如何实现登录页面跳转含有Tabar页面...
- java反射教程_Java反射教程
- html border阴影效果_【开发小技巧】026—如何使用HTML和CSS创建浮动框阴影效果?...
- 小学教师计算机应用水平和能力,中小学教师信息技术应用能力的现状与对策
- HLA程序:HelloWorld.hla
- Windows下命令模式安装mysql
- linux驱动编译成kext,Hackintosh:制作AppleALC以驱动原生AppleHDA
- matlab恒压频比,基于matlab的三相异步电机恒压频比调速仿真.doc
- 怎么删除计算机管理员用户密码,解除计算机管理员密码的方法
- Day101.MyBatisPlus(MP):自动填充、乐观锁、分页、逻辑删除、Wrapper条件构造器
- GVRP-LNP-VCMP讲解
- 屏幕适配遇到P30 的坑
- vim 删除所有空行
- 入小学教材、主流编程语言增长最快…… Python 的 2017 回顾
- channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no
- linux挂起 终端连不上吗,Linux系统11个不能不知道的终端命令
- 元宇宙:6层框架和3个核心底层技术