如何配置 fw-utils 以在 FAT 文件系统上存储环境?

How to configure fw-utils to store environment on FAT filesystem?

我正在努力使用 fw_setenv 从用户空间设置 U-boot env 变量。

U-Boot 使用存储在 /dev/mmcblk0p1 文件 u-boot.env 中的环境变量。这是SD卡上的FAT32分区。

我还在用户空间中提供了工具 fw_setenvfw_printenv。但我不知道如何配置 /etc/fw_env.conf 所以 fw_setenv 将变量存储在上述文件中。

我使用 am43xx_evm defconfig 构建 U-boot 2015-07。有人可以帮助我吗?

据我所知,fw_printenvfw_setenv 并非设计用于读取和写入配置 文件 :它们作用于伪分区偏移量在他们的配置中给出。

如果你想编辑一个普通的 U-Boot 配置文件,你将不得不使用更传统的工具。

当前的 U-Boot 支持该开发板。没有必要留在2015版本。

保存环境的命令是saveenv.

U-Boot 源的 tools/env/fw_env.config 中提供了 fw_printenv 工具的配置文件模板。

从概念上讲,U-Boot 环境是一个包含 key/value 对的数据库,其中 keyvalue 都是字符串。在操作中,U-Boot 使用环境的 RAM 副本。 RAM 副本可以通过多种机制永久保存,也可以通过多种机制进行初始填充。

持久存储机制主要有两种类型。第一种是将二进制版本直接写入多种存储设备类型中的任何一种(由 U-Boot 命令 saveenv 激活)。第二种是通过export机制写入文本文件。

看来您正在使用第二种方法。

如果使用第一种方法,设备类型、偏移量、大小等在编译过程中引用的配置文件中指定。工具 fw_printenv/setenv 旨在使用此二进制方法。它们可以使用内置的相同设备类型、偏移量、大小进行编译,但默认情况下,从 etc/fw_env.config.

中读取这些值

由于您使用的是第二种方法,因此您只需使用文本文件即可,不需要 fw_printenv/setenv

自从

以来,我一直尽可能喜欢第一种(二进制)方法
  • 它受 CRC 保护
  • 您可以利用对备份副本的支持