I flashed this image:
$ aml-burn-tool -b VIM3 -i VIM3_Ubuntu-server-focal_Linux-4.9_arm64_EMMC_V1.0.7-210625.img
I verified that U-Boot env persistence works by first adding near the top of /boot/boot.ini:
echo "test123=${test123}"
setenv test123 avalue
saveenv
After two reboots, the echo line shows test123=avalue
, finding the value from the previous saveenv
.
Good.
During boot, in the serial console I see:
mmcblk0p3 env 0x6c00000 0x800000
I confirmed that the offset of the env partition contains the U-Boot environment:
$ sudo dd if=/dev/mmcblk0 skip=$((0x6c00000/512)) count=$((0x800000/512)) | hd | grep -FA1 test
000019d0 66 69 3b 66 69 3b 66 69 3b 00 74 65 73 74 31 32 |fi;fi;fi;.test12|
000019e0 33 3d 61 76 61 6c 75 65 00 74 72 79 5f 61 75 74 |3=avalue.try_aut|
Good.
Then I installed:
$ sudo apt-get install libubootenv-tool
I configured /etc/fw_env.config
with
/dev/mmcblk0 0x6c00000 0x800000
But I’m getting:
$ sudo fw_printenv
Environment WRONG, copy 0
Cannot read environment, using default
Cannot read default environment from file
I also tried adding 512
for explicit sector size at the end of the fw_env.config line, but it made no difference.
What am I doing wrong?
numbqq
December 17, 2021, 5:38am
#2
raffaellod:
I configured /etc/fw_env.config
with
/dev/mmcblk0 0x6c00000 0x800000
But I’m getting:
$ sudo fw_printenv
Environment WRONG, copy 0
Cannot read environment, using default
Cannot read default environment from file
We already has correct configuration file, why did you change it?
khadas@Khadas:~$ cat /etc/fw_env.config
# Configuration file for fw_(printenv/setenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash.
# Futhermore, if the Flash sector size is ommitted, this value is assumed to
# be the same as the Environment size, which is valid for NOR and SPI-dataflash
# Block device example
/dev/env 0x0 0x10000
why did you change it?
Oh. Haha. Because it says “block device example ”. I didn’t think to check if it actually worked
Okay, so I reverted to the “example” and it works. But why did mmcblk0 + offset not work?
I made one more test with
/dev/mmcblk0 0x6c00000 0x10000
and it worked.
So I guess the offset reported for the env
partition does work, but the size reserved in the eMMC is wrong?
#define CONFIG_ENV_SIZE (64*1024)
Then, why is the env partition allocated with size 0x000800000 ?