blob: bc6e2c11efde03d7220acd1ddbff71c945d6aa7e [file] [log] [blame]
wdenk6aff3112002-12-17 01:51:00 +00001
2This is a demo implementation of a Linux command line tool to access
3the U-Boot's environment variables.
4
Luca Ceresoli56c17692011-04-07 22:11:20 +00005In order to cross-compile fw_printenv, run
Simon Glass57332952017-09-05 01:53:58 -06006 make CROSS_COMPILE=<your cross-compiler prefix> envtools
Luca Ceresoli56c17692011-04-07 22:11:20 +00007in the root directory of the U-Boot distribution. For example,
Simon Glass57332952017-09-05 01:53:58 -06008 make CROSS_COMPILE=arm-linux- envtools
Luca Ceresoli56c17692011-04-07 22:11:20 +00009
Robert P. J. Day55011532013-02-27 11:28:45 +000010For the run-time utility configuration uncomment the line
wdenkd0fb80c2003-01-11 09:48:40 +000011#define CONFIG_FILE "/etc/fw_env.config"
12in fw_env.h.
13
Markus Klotzbücher6de66b32007-11-27 10:23:20 +010014For building against older versions of the MTD headers (meaning before
15v2.6.8-rc1) it is required to pass the argument "MTD_VERSION=old" to
16make.
17
wdenkd0fb80c2003-01-11 09:48:40 +000018See comments in the fw_env.config file for definitions for the
19particular board.
20
21Configuration can also be done via #defines in the fw_env.h file. The
wdenk6aff3112002-12-17 01:51:00 +000022following lines are relevant:
23
24#define HAVE_REDUND /* For systems with 2 env sectors */
25#define DEVICE1_NAME "/dev/mtd1"
26#define DEVICE2_NAME "/dev/mtd2"
wdenkd0fb80c2003-01-11 09:48:40 +000027#define DEVICE1_OFFSET 0x0000
28#define ENV1_SIZE 0x4000
29#define DEVICE1_ESIZE 0x4000
Guennadi Liakhovetski56086922008-09-04 13:01:49 +020030#define DEVICE1_ENVSECTORS 2
wdenkd0fb80c2003-01-11 09:48:40 +000031#define DEVICE2_OFFSET 0x0000
32#define ENV2_SIZE 0x4000
33#define DEVICE2_ESIZE 0x4000
Guennadi Liakhovetski56086922008-09-04 13:01:49 +020034#define DEVICE2_ENVSECTORS 2
wdenk6aff3112002-12-17 01:51:00 +000035
Robert P. J. Day55011532013-02-27 11:28:45 +000036Un-define HAVE_REDUND, if you want to use the utilities on a system
wdenkd0fb80c2003-01-11 09:48:40 +000037that does not have support for redundant environment enabled.
38If HAVE_REDUND is undefined, DEVICE2_NAME is ignored,
39as is ENV2_SIZE and DEVICE2_ESIZE.
40
41The DEVICEx_NAME constants define which MTD character devices are to
42be used to access the environment.
43
44The DEVICEx_OFFSET constants define the environment offset within the
45MTD character device.
46
47ENVx_SIZE defines the size in bytes taken by the environment, which
48may be less then flash sector size, if the environment takes less
49then 1 sector.
50
wdenk6aff3112002-12-17 01:51:00 +000051DEVICEx_ESIZE defines the size of the first sector in the flash
wdenkd0fb80c2003-01-11 09:48:40 +000052partition where the environment resides.
Guennadi Liakhovetski56086922008-09-04 13:01:49 +020053
54DEVICEx_ENVSECTORS defines the number of sectors that may be used for
55this environment instance. On NAND this is used to limit the range
56within which bad blocks are skipped, on NOR it is not used.
Joe Hershberger1c4ea782012-10-04 08:31:00 +000057
58To prevent losing changes to the environment and to prevent confusing the MTD
59drivers, a lock file at /var/lock/fw_printenv.lock is used to serialize access
60to the environment.