fw_printenv 工具编译使用心得

最近公司提了需要使用 fw_printenv fw_setenv的需求。

这个工具的作用是在linux 系统里,查看修改uboot 环境变量。

平台环境 是NUC972。中间过程不是很顺利,走了些弯路,在此记录,分享出来。

关于编译方法,网上也很多了。但在972平台上还是有点区别。废话不多说了

 

1编译fw_printenv

 进入 uboot 目录

1.make nuc970_nand_config

2.修改 tools/env/Makefile

增加  HOSTCC 和 HOSTSTRIP . 这里必须要改。 原来我是在make的时候指定 ARCH 和 CROSS_COMPLIE,但是不起作用,后来没办法修改这个Makefile。

3. 修改,tools/env/fw_env.c

增加 #include <stdint.h>

否则编译的时候报错,找不到 uint8_t 这个类型。

4 编译

在uboot根目录 : make  env

在 tools/env 目录下 生成了 fw_printenv. 这个就是我们需要的工具。

把 fw_printenv 和 fw_env.config 考入板子。

fw_env.config 考入 /etc/目录

fw_printenv 考入 /bin

建立一个软连接 fw_setenv

ln -s fw_printenv fw_setenv 

 

2配置

配置 fw_env.config

这里的配置一定要和系统的配置相同。这里走了些歪路。

/dev/mtd0是专门给环境变量分配的分区。Device offset 是只环境变量在此分区上的偏移,不是指在整个nand上的偏移。

环境变量的烧写地址是 0x80000,大小0x10000,block大小是0x20000。这里因为mtd0分区设定了起始地址是0x80000,所以环境变量在此分区上的偏移地址为 0了

3.uboot 修改参数,添加mtd0分区

进入UBOOT后,输入如下命令,

这里有点要注意的,因为添加了一个env 分区,所以原来的rootfs分区变成mtd2了,ubi.mtd要修改为2.

进入系统测试命令:

线查看一下分区。 cat /proc/mtd,没有问题。

执行 fw_printenv

结果报错,Error opening lock file /var/lock/fw_printenv.lock

手工创建 /var/lock

再次运行,成功读出了环境变量

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值