U-boot среда не то же самое, что Linux "fw_printenv" - PullRequest
1 голос
/ 24 октября 2019

Я построил образ для моего Jetson Nano с помощью yocto, используя слой meta-tegra.

Эта сборка использует u-boot в качестве загрузчика, который настроен на сохранение среды на разделе MMC (mmcblk0p14).

gdisk -l /dev/mmcblk0 показывает следующее:

Number  Start (sector)    End (sector)  Size       Code  Name
...
  14        20996096        20998143   1024.0 KiB  8300  UBOOTENV
...

И размер сектора составляет 512.

Затем я настроил u-boot-tegra/include/configs/p3450-porg.h с:

...
/* Env is located in it's own partition */
#define CONFIG_ENV_IS_IN_MMC
#define CONFIG_SYS_MMC_ENV_DEV      1
#define CONFIG_ENV_OFFSET       (20996096 * 512)
...

Где CONFIG_ENV_OFFSET = Start_Sector * Block_Size

Это прекрасно работает (насколько я вижу), поскольку среда успешно сохраняется в MMC при использовании saveenv.

Однако среда, которую я получаю, когда печатаю ее в оболочке u-boot, НЕ является той же, что и при печати среды с помощью инструмента fw_printenv u-boot. Я установил /etc/fw_env.config на:

# Device name   Device offset   Env size
/dev/mmcblk0p14       0          0x2000

Итак, я понял, что либо fw_env.config задан неправильно, либо среда u-boot сохраняется где-то еще в MMC, и нетраздел 14.

У кого-нибудь есть предложения, что я могу попробовать?

*****************************************************РЕДАКТИРОВАТЬ:*****************************************************

Выполнение dd if=/dev/mmcblk0p14 of=tmp.txt и чтение tmp.txtФайл показывает среду, которую показывает fw_printenv, а не среду, которую я вижу в оболочке u-boot.

Так что, возможно, что-то не так в конфигурации u-boot-tegra/include/configs/p3450-porg.h. Мне просто интересно, куда это на самом деле записывает окружение, когда я делаю saveenv ...

Любая идея, что я могу попытаться изменить?

1 Ответ

2 голосов
/ 25 октября 2019

Как указано в комментариях к вопросу, смещение является 32-разрядным целым числом, поэтому попытка присвоить ему значение более 4 294 967 295 (что составляет 20996096 * 512) не сработает.

Чтобы исправить это, я изменил схему разделов так, чтобы раздел окружения uboot был разделом 1 вместо 14, и соответственно изменил патчи fw_env.config и p3450-porg.h.

...