I would like to move the u-boot environment from its original location into the user area partition right after the partition table and in front of the first partition.
In the original image the
update.sh script states that the u-boot environment is created into the cbootimage
apalis-tk1.img (after the BCT and u-boot which are also contained in
apalis-tk1.img) which is then flashed into the boot area partition 1 (“primary eMMC boot sector”) in front of the
confgblock.bin. I could not find the info about the u-boot environment in the cbootimage config file
apalis-tk1.img has a total size of 599.040 bytes. When one is assuming no compression and subtracts the BCT
PM375_Hynix_2GB_H5TC4G63AFR_RDA_924MHz.bct size of 8.192 bytes and my custom u-boot
u-boot-dtb-tegra-rc.bin size of 582.506 bytes (the original
u-boot-dtb-tegra-apalis-tk1-v2016.11-v2.7b1+gitAUTOINC+22e68cbd1f-r0.bin has a slightly bigger size of 583.062 bytes) the remaining size for the u-boot environment should be 8.342 bytes.
How must I configure the
apalis-tk1.img.cfg that the u-boot environment is not placed in the cbootimage
How must I modify the flashing script
flash_eth.scr to support the u-boot environment with a size of 0x20000 and device offset of 0x800000 and the redundant u-boot environment with a size of also 0x20000 and a device offset of 0x1000000 (8MB alignment)? Do I have to “raw copy” a file for the u-boot environment into the eMMC after the
mbr.bin and in front of the 1 partition? Or do I have to generate an image for the u-boot environment with mkenvimage? As the flashing of the configblock.bin is not called in another u-boot command I need to execute
run update_configblock in addition to
run setupdate and
run update during debugging, right?
Again I am totally missing what exactly you are trying to achieve. But please note a few things you may have misunderstood:
- By default we do not store the U-Boot environment into a file but rather raw eMMC blocks.
#define CONFIG_SYS_MMC_ENV_PART 1 means is that it stores it into the first eMMC hardware area boot partition which has really nothing to do with the VFAT partition you now put some arbitrary files in.
The background for this misunderstanding:
I tried to integrate with the OTA software updater https://mender.io/ by following their integration guide. I discovered that they used two different approaches related with the storage location of the u-boot environment over time. First the u-boot environment has been stored in a file
uboot.env but now the u-boot environment is stored in the eMMC (like you do). The approach changed without my notification. Sorry for that confusion…
I will change the question with relation to the new approach.
IMAGE_ROOTFS_ALIGNMENT (4 MiB) in
update.sh is required to reserve space for the partition table, right?
At least some amount, yes. We kept it at 4 MiB due to earlier variants of certain modules having had even the boot loader as well as the config block in that area. But of course like everything else you may change this to your liking but just be aware of potential side effects.
Ok, now I understand… (I did not understand because the
mbr.bin file has just
512 bytes =
With mkenvimage I get a corresponding u-boot environment image
u-boot-env.txt when running
~/ws_gitlab/u-boot-toradex$ ./tools/mkenvimage -r -s 0x20000 -o u-boot-env.bin u-boot-env.txt. (The u-boot sources need to have
CONFIG_ENV_SIZE_REDUND set because of the redundant environment: mkenvimage: a tool to generate a U-Boot environment binary image .)
The uboot environment (and the redundant copy) are stored into the eMMC initially by u-boot itself. There is no need to raw copy blob files (uboot.env) into the eMMC manually. However the
#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE (in
include/configs/apalis-tk1.h) needs to be set explicitly in addition to the other config values mentioned above and
#define CONFIG_SYS_MMC_ENV_DEV 0
#define CONFIG_SYS_MMC_ENV_PART 0
#define CONFIG_ENV_OFFSET 0x800000
CONFIG_ENV_OFFSET_REDUND 0x100000. The spacing between the offsets needs to consider the size of the u-boot environment and the alignment used (e.g. 8MB). There needs to be enough space to hold the u-boot environments after the
mbr.bin (1 block, usually flashed into startblock 0x0) and in front of the first partition usually holding