[U-Boot] Saving u-boot.env to FAT partition of SDcard
Adrian Mcgrath
amcgrath at netvu.org.uk
Wed Apr 20 11:31:17 CEST 2016
Hello All
I am in the process of changing U-Boot (v2015.04) to save its environment
variables to the FAT partition of an SDcard instead of saving them to the
boot sector.
I have changed my board header file to:
/* Include the below to write env to fat partition of mmc */
#define CONFIG_ENV_IS_IN_FAT
#if defined(CONFIG_ENV_IS_IN_FAT)
#define CONFIG_ENV_SIZE (8 * 1024)
#define FAT_ENV_INTERFACE "mmc"
#define FAT_ENV_DEVICE_AND_PART "0:1"
#define FAT_ENV_FILE "uboot.env"
#define CONFIG_FAT_WRITE
#define FAT_ENV_DEVICE 0
#define FAT_ENV_PART 1
#define CONFIG_BOOT_PARTITION_ACCESS
#endif
/* Include the below to write env to mmc (raw) */
/*#define CONFIG_ENV_IS_IN_MMC*/
#if defined(CONFIG_ENV_IS_IN_MMC)
#define CONFIG_ENV_SIZE (8 * 1024)
#define CONFIG_ENV_OFFSET (8 * 64 * 1024)
#endif
U-Boot builds (using Yocto) and runs. I can save the environment and list
the file on the card using "fatls":
=> saveenv
Saving Environment to FAT...
writing uboot.env
done
=> reset
resetting ...
However, on the following boot the file is not read:
U-Boot 2015.04+fslc+g5d9ffd2 (Apr 19 2016 - 11:38:28)
CPU: Freescale i.MX6Q rev1.5 996 MHz (running at 792 MHz)
CPU: Extended Commercial temperature grade (-20C to 105C) at 29C
Reset cause: WDOG
Board: Sw-one
I2C: ready
DRAM: 1 GiB
Enabling i210
PMIC: PFUZE100 ID=0x10
NAND: 256 MiB
MMC: FSL_SDHC: 0
reading uboot.env
Invalid FAT entry
*** Warning - bad CRC, using default environment
00:01.0 - 16c3:abcd - Bridge device
01:00.0 - 8086:157c - Network controller
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
Net: FEC [PRIME]
Error: FEC address not set.
Hit any key to stop autoboot: 0
=>
I saw a post reply by Wolfgang (
http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/16117) that
suggested formatting the partition using the host machine and then copying
the files back. I have done this (using a Linux host machine) and can
copy/write all the files except u-boot.env which gives me an I/O error.
Given that I can't copy u-boot.env I'm thinking that the binary has not
been created correctly and thus fat_write.c:do_fat_write() needs patching.
I'm sure many users out there have reading/writing the env to FAT partition
working flawlessly, I would welcome any suggestions or a point towards a
relevant patch.
Many thanks
Adrian
More information about the U-Boot
mailing list