fw_printenv fw_setenv on var-som-am33 is failing



根据我在/etc/fw_env.config中尝试的一些配置,例如一个或两个条目,我在尝试读取U-boot环境变量时得到以下错误:

root@varsomam33:~# fw_printenv serverip
Warning: Bad CRC, using default environment

root@varsomam33:~# fw_printenv serverip
Cannot read bad block mark: Invalid argument

根据本教程(https://developer.ridgerun.com/wiki/index.php/Setting_up_fw_printenv_to_modify_u-boot_environment_variables),我构建了我的/etc/fw_env.config看起来像这样:

# MTD device name   Device offset   Env. size   Flash sector size   Number of sectors
/dev/mtd6           0x1C0000        0x20000     0x20000             1
/dev/mtd7           0x1E0000        0x20000     0x20000             1

仅供参考,我使用TI Omap ARM芯片(var-som-am33)和Yocto Fido默认从Variscite开箱即用,这些软件版本:

  • U-boot version: u-boot-var-som-am33 2014-+gitrAUTOINC+adf9a14020

  • U-boot-fw-utils version: u-boot-fw-utils v2014.07+gitAUTOINC+524123a707-r0-arago0-var

主要问题是"设备偏移"在RidgeRun教程中描述不正确。它不是NAND闪存中的绝对偏移量,而是来自分区的偏移量,在我的情况下应该是"0x0"。

这是我的工作/etc/fw_env.config

root@varsomam33:~# cat /etc/fw_env.config
# MTD device name   Device offset   Env. size   Flash sector size   Number of sectors
/dev/mtd6           0x0             0x20000     0x20000             1
/dev/mtd7           0x0             0x20000     0x20000             1

此外,当没有在/etc/fw_env.config文件中描述的U-boot备份(冗余)环境时,我得到的CRC错误被抛出。fw_printenv实用程序的工作方式是复制"选定的"环境,修改已更改的变量,并将其写入"新"环境。然后将"selected"one_answers"new"交换。

因此,如果在/etc/fw_env.config中只有一个环境,它将使用"选定"环境的默认值。

代码tools/env/fw_env.c

1230     crc0_ok = (crc0 == *environment.crc);
1231     if (!HaveRedundEnv) {
1232         if (!crc0_ok) {
1233             fprintf (stderr,
1234                 "Warning: Bad CRC, using default environmentn");
1235             memcpy(environment.data, default_environment, sizeof default_environment);

相关内容

  • 没有找到相关文章

最新更新