EMMC中存储的UBOOT环境变量在哪里?
我正在尝试了解Uboot将环境变量存储在emmc中的位置。我在Uboot Config File -uboot中有以下设置 -
CONFIG_ENV_IS_NOWHERE=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_MMC_ENV_DEV=2
CONFIG_SYS_MMC_ENV_PART=0
CONFIG_ENV_SIZE=0x4000
CONFIG_ENV_OFFSET=0x400000
CONFIG_ENV_SECT_SIZE=0x10000
UBOOT能够将ENV变量保存在EMMC中,并且可以从Linux读取它们。从Linux设置的变量也可以在Uboot中读取。我不明白哪个分区具有环境变量?
来自Linux的输出LSBLK -MMCBLK2BOOT0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
mmcblk2 179:0 0 7.3G 0 disk
|-mmcblk2p1 179:1 0 83.2M 0 part /run/media/mmcblk2p1
|-mmcblk2p2 179:2 0 1.7G 0 part /
|-mmcblk2p3 179:3 0 83.2M 0 part /run/media/mmcblk2p3
|-mmcblk2p4 179:4 0 1K 0 part
|-mmcblk2p5 179:5 0 1.7G 0 part /run/media/mmcblk2p5
`-mmcblk2p6 179:6 0 1G 0 part /run/media/mmcblk2p6
mmcblk2boot0 179:32 0 4M 1 disk
mmcblk2boot1 179:64 0 4M 1 disk
是尤布特所在的位置,其大小为4MB,考虑到环境在MMCBLK2设备中保存在0x400000的偏移量中,应在MMCBLK2BOOT0之后放置在MMCBLK2BOOT0之后,但如果我丢弃了MMCBLK2BOOT1的点字符串“字符串 /dev /mmcblk2boot1”,我什么都没有。
我提供了一个文件/etc/fw_config,该文件由fw_printenv和fw_saveenv使用,此文件包含“/dev/mmcblk2 0x400000 0x10000”。所有设置都表明,Uboot环境位于MMCBLK2设备中的0x400000的偏移。 LSBLK输出中列出的哪个分区中有任何指针保存了施托级环境变量。
谢谢, Vinay
I'm trying to understand where uboot stores the environment variables in emmc. I have the following set in the uboot config file -
CONFIG_ENV_IS_NOWHERE=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_MMC_ENV_DEV=2
CONFIG_SYS_MMC_ENV_PART=0
CONFIG_ENV_SIZE=0x4000
CONFIG_ENV_OFFSET=0x400000
CONFIG_ENV_SECT_SIZE=0x10000
uboot is able to save the env variables in emmc and I can read them from Linux. Variables set from Linux are also readable in uboot. I fail to understand which partition has the environment variables?
Output lsblk from Linux -
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
mmcblk2 179:0 0 7.3G 0 disk
|-mmcblk2p1 179:1 0 83.2M 0 part /run/media/mmcblk2p1
|-mmcblk2p2 179:2 0 1.7G 0 part /
|-mmcblk2p3 179:3 0 83.2M 0 part /run/media/mmcblk2p3
|-mmcblk2p4 179:4 0 1K 0 part
|-mmcblk2p5 179:5 0 1.7G 0 part /run/media/mmcblk2p5
`-mmcblk2p6 179:6 0 1G 0 part /run/media/mmcblk2p6
mmcblk2boot0 179:32 0 4M 1 disk
mmcblk2boot1 179:64 0 4M 1 disk
mmcblk2boot0 is where uboot is located which is 4MB in size, considering the environment is saved at an offset of 0x400000 in mmcblk2 device, it should be located just after mmcblk2boot0 which points to the parition mmcblk2boot1, but if I dump the strings "strings /dev/mmcblk2boot1", I get nothing.
I have provided a file /etc/fw_config which is used by fw_printenv and fw_saveenv, this file contains "/dev/mmcblk2 0x400000 0x10000". All the settings point to the fact that uboot environment is located at an offset of 0x400000 in mmcblk2 device. Any pointers on which partition listed in output of lsblk holds the uboot environment variables..?
Thanks,
Vinay
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
令人困惑的是,
config_sys_mmc_env_part
不参考您在linux下看到的/dev/dev/mmcblk2p1
之类的sofware分区,而是/ dev/mmcblk2
(分区0)或/dev/mmcblk2boot0
(分区1)。The confusing thing here is that
CONFIG_SYS_MMC_ENV_PART
does not refer to sofware partitions, such as/dev/mmcblk2p1
that you see under Linux, but rather hardware partitions such as/dev/mmcblk2
(partition 0) or/dev/mmcblk2boot0
(partition 1).