uboot 编译 envtools 获取 fw_printenv 工具

编译 envtools, 获取 fw_printenv 工具
make envtools # 有的也可能是 make env
# 生成的 fw_printenv 工具在 /tools/env 目录中。然后复制到rootfs 中的 bin 目录下,这样 linux 就可以使用 fw_printenv 工具了。
# 默认是没有 fw_setenv 工具的,所以需要软连接 fw_printenv 到 fw_setenv
# 命令:
# ln -sf fw_printenv ${OUT_ROOTFS_DIR}/bin/fw_setenv

把文件 fw_printenvfw_setenv 复制到 rootfs中的bin目录下 后,还需要在 etc 目录下配置 fw_env.config 文件。

fw_env.config 文件内容参考 uboot 目录下的 tools/env/fw_env.config 文件.

不确定 device name 可以使用cat /proc/mtd 查看环境变量所在的分区

Device offset 的地址是 mtd 分区内的偏移,不是整个 flash 的偏移,配置中的CONFIG_ENV_OFFSET是相对整个flash中的偏移,要转换为在当前分区的偏移。

Env.size 大小可以查看配置文件中的 CONFIG_ENV_SIZE

如果没配置好 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
  4. fw_printenv 可以查看,fw_setenv设置不了
fw_printenvfw_setenv 使用
fw_printenv "变量名"
# 可以无引号
fw_setenv "变量名" "值"
# 变量名和值之间没有等于号
fw_setenv "变量名"
# 如果之前存在这个这个变量,就会删除这个变量

uboot 中对应的是 printenvsetenv命令,使用完setenv后要saveenv保存变量到flash,否则重启就失效了。

fw_printenvfw_setenv 工具在 pc 上也是可以使用的。不过默认路径要改一下。生成env.bin要烧录到板子对应的地址上

AX520Cfw_printenv移植

nor flash 使用的文件系统类型为 squashfs

# nor flash 的分区:
0x000000000000-0x000000010000 : "mboot"
0x000000010000-0x000000060000 : "uboot"
0x000000060000-0x000000070000 : "env"
0x000000070000-0x000000080000 : "dts"
0x000000080000-0x000000380000 : "kernel"
0x000000380000-0x000001000000 : "rootfs"
# 修改分区可以到kernel目录arch/arm/boot/dts/ax520_snor_db.dts中修改

# nor flash 中的fw_env.config,因为env的分区名是/dev/mtd2,偏移是分区内的偏移,所以是0x0000
echo "/dev/mtd2 0x0000 0x00002000 0x10000" > ${OUT_ROOTFS_DIR}/etc/fw_env.config

nand flash使用的文件系统类型为ubifs

# nand flash 的分区:
0x000000000000-0x000000100000 : "mboot"
0x000000100000-0x000000200000 : "uboot"
0x000000200000-0x000000300000 : "dts"
0x000000300000-0x000001700000 : "kernel"
0x000001700000-0x000007e00000 : "rootfs"
0x000007e00000-0x000010000000 : "others"

# 环境变量所在的 flash 中位置在 /dev/mtd1 中,偏移是0x000C0000
echo "/dev/mtd1 0x000C0000 0x00002000 0x20000 2" > ${OUT_ROOTFS_DIR}/etc/fw_env.config
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunsir_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值