1

1 つまたは 2 つのエントリなどで試したいくつかの構成に応じて/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) を使用しています。これらのソフトウェア バージョンでは、Variscite のデフォルトの Yocto Fido がデフォルトで使用されています。

  • U ブート バージョン: u-boot-var-som-am33 2014-+gitrAUTOINC+adf9a14020

  • U-boot-fw-utils バージョン:u-boot-fw-utils v2014.07+gitAUTOINC+524123a707-r0-arago0-var

4

1 に答える 1

1

主な問題は、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ユーティリティは、「選択した」環境をコピーし、変更した変数を変更して、「新しい」環境に書き出すことによって機能します。次に、「選択済み」と「新規」を交換します。

したがって、 に環境が 1 つしかない場合/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 environment\n");
1235             memcpy(environment.data, default_environment, sizeof default_environment);
于 2016-09-07T18:58:15.823 に答える