我已经使用meta-tegra层为带有yocto的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外壳中看到的环境。
因此u-boot-tegra/include/configs/p3450-porg.h
配置中一定有问题。我只是想知道当我执行saveenv
...
有什么想法我可以尝试改变吗?
答案 0 :(得分:2)
如对问题的评论中所述,偏移量是32位整数,因此尝试为其提供大于4,294,967,295(20996096 * 512的值)的值将不起作用。
要解决此问题,我重新排列了分区方案,以将uboot环境分区作为分区1而不是分区14,并相应地更改了fw_env.config
和p3450-porg.h
补丁。