linux下读写u-boot环境变量验证

uboou版本 U-Boot 2018.01
内核版本 4.19.0-xilinx
操作系统 Debian GNU/Linux 8 (jessie)
使用工具 fw_printenv

背景

背景

uboot下可以通过命令访问和修改环境变量,但有时候我们也需要在Linux系统下访问这些数据。为此u-boot为我们实现了一套工具fw_printenv。其源码在u-boot的u-boot/tools/env下。

spi flash分区情况

dev:    size   erasesize  name
mtd0: 00500000 00001000 "qspi-boot"
mtd1: 00020000 00001000 "bootenv"

本次验证了两种方法,一种是在uboot中编译源码得到fw_printenv工具,另外一种是apt-get安装的方式;

验证结果:经验证以上两种得到的fw_printenv工具觉能实现在linux下访问修改uboot的环境变量。

方案一:源码编译

1.进入u-boot目录下,设置好交叉编译环境
TOOLCHAIN=/opt/Toolchain/gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf
export PATH=$PATH:$TOOLCHAIN/bin

export ARCH=arm
export CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-gnueabihf-
2.进入u-boot/tools/env目录,根据flash的分区对fw_env.config进行配置,env分区在mtd1;
# MTD device name       Device offset   Env. size       Flash sector size       Number of sectors       
/dev/mtd1               0x0000          0x20000         0x1000
3.返回到u-boot目录,输入make envtools,编译得到可执行文件fw_printenv

(uboot版本不一样,编译命令可能不同,有些为make env,具体见u-boot/tools/env目录下的README文档)

4.将u-boot/tools/env目录下的fw_printenvfw_env.config文件分别拷贝到linux下的**/usr/bin/etc**目录 下,创建fw_printenv的软链接fw_setenv,它们使用相同的程序,其功能取决于基本名称;
ln -s /usr/bin/fw_printenv /usr/bin/fw_setenv
5.运行fw_printenv命令可以打印所有的uboot环境变量,指定环境变量fw_printenv -name xxxx; 设置环境变量为 fw_setenv xxx yyy,方法类似uboot下的setenv,修改后会自动保存;

方案二:apt-get 安装

1.apt-get install u-boot-tools等待安装完成;
2.在/etc下创建fw_env.config文件,内容和方案一中一样;
3.具体操作和方案一一样;

你可能感兴趣的:(linux,linux,uboot)