wdenk | 6aff311 | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 1 | |
| 2 | This is a demo implementation of a Linux command line tool to access |
| 3 | the U-Boot's environment variables. |
| 4 | |
Luca Ceresoli | 56c1769 | 2011-04-07 22:11:20 +0000 | [diff] [blame] | 5 | In the current version, there is an issue in cross-compilation. |
| 6 | In order to cross-compile fw_printenv, run |
| 7 | make HOSTCC=<your CC cross-compiler> env |
| 8 | in the root directory of the U-Boot distribution. For example, |
| 9 | make HOSTCC=arm-linux-gcc env |
| 10 | |
Robert P. J. Day | 5501153 | 2013-02-27 11:28:45 +0000 | [diff] [blame] | 11 | For the run-time utility configuration uncomment the line |
wdenk | d0fb80c | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 12 | #define CONFIG_FILE "/etc/fw_env.config" |
| 13 | in fw_env.h. |
| 14 | |
Markus Klotzbücher | 6de66b3 | 2007-11-27 10:23:20 +0100 | [diff] [blame] | 15 | For building against older versions of the MTD headers (meaning before |
| 16 | v2.6.8-rc1) it is required to pass the argument "MTD_VERSION=old" to |
| 17 | make. |
| 18 | |
wdenk | d0fb80c | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 19 | See comments in the fw_env.config file for definitions for the |
| 20 | particular board. |
| 21 | |
| 22 | Configuration can also be done via #defines in the fw_env.h file. The |
wdenk | 6aff311 | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 23 | following 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" |
wdenk | d0fb80c | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 28 | #define DEVICE1_OFFSET 0x0000 |
| 29 | #define ENV1_SIZE 0x4000 |
| 30 | #define DEVICE1_ESIZE 0x4000 |
Guennadi Liakhovetski | 5608692 | 2008-09-04 13:01:49 +0200 | [diff] [blame] | 31 | #define DEVICE1_ENVSECTORS 2 |
wdenk | d0fb80c | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 32 | #define DEVICE2_OFFSET 0x0000 |
| 33 | #define ENV2_SIZE 0x4000 |
| 34 | #define DEVICE2_ESIZE 0x4000 |
Guennadi Liakhovetski | 5608692 | 2008-09-04 13:01:49 +0200 | [diff] [blame] | 35 | #define DEVICE2_ENVSECTORS 2 |
wdenk | 6aff311 | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 36 | |
Robert P. J. Day | 5501153 | 2013-02-27 11:28:45 +0000 | [diff] [blame] | 37 | Un-define HAVE_REDUND, if you want to use the utilities on a system |
wdenk | d0fb80c | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 38 | that does not have support for redundant environment enabled. |
| 39 | If HAVE_REDUND is undefined, DEVICE2_NAME is ignored, |
| 40 | as is ENV2_SIZE and DEVICE2_ESIZE. |
| 41 | |
| 42 | The DEVICEx_NAME constants define which MTD character devices are to |
| 43 | be used to access the environment. |
| 44 | |
| 45 | The DEVICEx_OFFSET constants define the environment offset within the |
| 46 | MTD character device. |
| 47 | |
| 48 | ENVx_SIZE defines the size in bytes taken by the environment, which |
| 49 | may be less then flash sector size, if the environment takes less |
| 50 | then 1 sector. |
| 51 | |
wdenk | 6aff311 | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 52 | DEVICEx_ESIZE defines the size of the first sector in the flash |
wdenk | d0fb80c | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 53 | partition where the environment resides. |
Guennadi Liakhovetski | 5608692 | 2008-09-04 13:01:49 +0200 | [diff] [blame] | 54 | |
| 55 | DEVICEx_ENVSECTORS defines the number of sectors that may be used for |
| 56 | this environment instance. On NAND this is used to limit the range |
| 57 | within which bad blocks are skipped, on NOR it is not used. |
Joe Hershberger | 1c4ea78 | 2012-10-04 08:31:00 +0000 | [diff] [blame] | 58 | |
| 59 | To prevent losing changes to the environment and to prevent confusing the MTD |
| 60 | drivers, a lock file at /var/lock/fw_printenv.lock is used to serialize access |
| 61 | to the environment. |