blob: b8c6a7e19745eed77598b544d90ff79e7e139703 [file] [log] [blame]
wdenk34b613e2002-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 Ceresoliece4b572011-04-07 22:11:20 +00005In order to cross-compile fw_printenv, run
Simon Glass69eb8dd2017-09-05 01:53:58 -06006 make CROSS_COMPILE=<your cross-compiler prefix> envtools
Luca Ceresoliece4b572011-04-07 22:11:20 +00007in the root directory of the U-Boot distribution. For example,
Simon Glass69eb8dd2017-09-05 01:53:58 -06008 make CROSS_COMPILE=arm-linux- envtools
Luca Ceresoliece4b572011-04-07 22:11:20 +00009
Simon Glass8e6f01f2017-09-05 01:53:59 -060010You should then create a symlink from fw_setenv to fw_printenv. They use
11the same program and its function depends on its basename.
12
Robert P. J. Day76785132013-02-27 11:28:45 +000013For the run-time utility configuration uncomment the line
wdenke7f34c62003-01-11 09:48:40 +000014#define CONFIG_FILE "/etc/fw_env.config"
15in fw_env.h.
16
Markus Klotzbücher94db5572007-11-27 10:23:20 +010017For 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
wdenke7f34c62003-01-11 09:48:40 +000021See 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
wdenk34b613e2002-12-17 01:51:00 +000025following 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"
wdenke7f34c62003-01-11 09:48:40 +000030#define DEVICE1_OFFSET 0x0000
31#define ENV1_SIZE 0x4000
32#define DEVICE1_ESIZE 0x4000
Guennadi Liakhovetskiffb379a2008-09-04 13:01:49 +020033#define DEVICE1_ENVSECTORS 2
wdenke7f34c62003-01-11 09:48:40 +000034#define DEVICE2_OFFSET 0x0000
35#define ENV2_SIZE 0x4000
36#define DEVICE2_ESIZE 0x4000
Guennadi Liakhovetskiffb379a2008-09-04 13:01:49 +020037#define DEVICE2_ENVSECTORS 2
wdenk34b613e2002-12-17 01:51:00 +000038
Robert P. J. Day76785132013-02-27 11:28:45 +000039Un-define HAVE_REDUND, if you want to use the utilities on a system
wdenke7f34c62003-01-11 09:48:40 +000040that 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
wdenk34b613e2002-12-17 01:51:00 +000054DEVICEx_ESIZE defines the size of the first sector in the flash
wdenke7f34c62003-01-11 09:48:40 +000055partition where the environment resides.
Guennadi Liakhovetskiffb379a2008-09-04 13:01:49 +020056
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.
Joe Hershbergeref2fc1b2012-10-04 08:31:00 +000060
Anthony Loiseauade0dc32023-12-21 23:44:38 +010061If DEVICEx_ESIZE and DEVICEx_ENVSECTORS are both zero, then a runtime
62detection is attempted for NOR and NAND mtd types.
63
Joe Hershbergeref2fc1b2012-10-04 08:31:00 +000064To prevent losing changes to the environment and to prevent confusing the MTD
John Keeping8d6c4542023-04-12 12:24:26 +010065drivers, a lock file at /run/fw_printenv.lock is used to serialize access
Joe Hershbergeref2fc1b2012-10-04 08:31:00 +000066to the environment.