1 2This is a demo implementation of a Linux command line tool to access 3the U-Boot's environment variables. 4 5In the current version, there is an issue in cross-compilation. 6In order to cross-compile fw_printenv, run 7 make HOSTCC=<your CC cross-compiler> env 8in the root directory of the U-Boot distribution. For example, 9 make HOSTCC=arm-linux-gcc env 10 11For the run-time utility configuration uncomment the line 12#define CONFIG_FILE "/etc/fw_env.config" 13in fw_env.h. 14 15For building against older versions of the MTD headers (meaning before 16v2.6.8-rc1) it is required to pass the argument "MTD_VERSION=old" to 17make. 18 19See comments in the fw_env.config file for definitions for the 20particular board. 21 22Configuration can also be done via #defines in the fw_env.h file. The 23following lines are relevant: 24 25#define HAVE_REDUND /* For systems with 2 env sectors */ 26#define DEVICE1_NAME "/dev/mtd1" 27#define DEVICE2_NAME "/dev/mtd2" 28#define DEVICE1_OFFSET 0x0000 29#define ENV1_SIZE 0x4000 30#define DEVICE1_ESIZE 0x4000 31#define DEVICE1_ENVSECTORS 2 32#define DEVICE2_OFFSET 0x0000 33#define ENV2_SIZE 0x4000 34#define DEVICE2_ESIZE 0x4000 35#define DEVICE2_ENVSECTORS 2 36 37Un-define HAVE_REDUND, if you want to use the utilities on a system 38that does not have support for redundant environment enabled. 39If HAVE_REDUND is undefined, DEVICE2_NAME is ignored, 40as is ENV2_SIZE and DEVICE2_ESIZE. 41 42The DEVICEx_NAME constants define which MTD character devices are to 43be used to access the environment. 44 45The DEVICEx_OFFSET constants define the environment offset within the 46MTD character device. 47 48ENVx_SIZE defines the size in bytes taken by the environment, which 49may be less then flash sector size, if the environment takes less 50then 1 sector. 51 52DEVICEx_ESIZE defines the size of the first sector in the flash 53partition where the environment resides. 54 55DEVICEx_ENVSECTORS defines the number of sectors that may be used for 56this environment instance. On NAND this is used to limit the range 57within which bad blocks are skipped, on NOR it is not used. 58 59To prevent losing changes to the environment and to prevent confusing the MTD 60drivers, a lock file at /var/lock/fw_printenv.lock is used to serialize access 61to the environment. 62