【发布时间】:2020-02-20 11:26:07
【问题描述】:
我使用 yocto 使用 meta-tegra 层为我的 Jetson Nano 构建了一个图像。
此版本使用 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
当我使用saveenv 时,环境已成功保存到 MMC,因此效果很好(据我所知)。
但是,我在 u-boot shell 中打印它时得到的环境与我使用 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 shell 中看到的环境。
所以u-boot-tegra/include/configs/p3450-porg.h 配置中一定有问题。我只是想知道当我执行saveenv 时它实际上将环境写入何处...
知道我可以尝试改变什么吗?
【问题讨论】:
-
您能否在 U-Boot 中包含从开机到“printenv”的完整控制台日志?谢谢!
-
很遗憾,我现在无法提供控制台日志,因为我正在同一张 SD 卡上尝试新的分区方案。来自 meta-tegra 层的维护者:“查看 U-Boot 源 (common/env_mmc.c),偏移量是 32 位无符号整数,因此任何超过 4GiB 的偏移量都不起作用非常好。” 话虽如此,我正在尝试使用 uboot 分区作为 p1 而不是 p14 构建一个新映像并重试。如果问题仍然存在,我将使用完整的控制台日志更新问题。谢谢!
-
看来这实际上是问题所在!
标签: yocto u-boot nvidia-jetson nvidia-jetson-nano