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