嵌入式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 ...
最新文章
- python内置变量__complex___Python 内置方法
- 实战 :为自己的公号搭建一个数据运营指标体系
- hello1源码解析
- Windows 2003架设CA服务器 (视频)
- 高性能队列——Disruptor
- Swift--字符串和字符(二)
- python如何绘制曲线图_python pandas plot画折线图如何显示x轴的值?
- 如何在JS中改变Extjs combox 的值
- 英特尔拥抱开源,岂能没有杀手锏?
- Spring Boot2 集成 jasypt 3.0.4 配置文件敏感信息加密
- android AIDL示例代码(mark下)
- 高负载高并发网站架构分析
- CTFmisc常见音频隐写总结
- Linux源码编译即黑客帝国屏保cmatrix安装
- 常用数据下载网站汇总
- 随机划分训练集和测试集
- python 点对点语音,Python(PyS60)实现简单语音整点报时
- HTML入门与进阶以及HTML5
- 云音乐小程序开发知识小记(上)
- 谷歌商店输入账号密码后 回到登录界面/闪退