UBI is a better place for the environment on NAND devices because it
handles wear-leveling and bad blocks.
Gluebi is needed in Linux to access the env as an MTD partition.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
In certain cases, memory device is present as flat file or block device (via
mmc or mtdblock layer). Do not attempt MTD operations against it.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
When using open(), the O_CREAT flag must be given a mode, otherwise it
uses random garbage from the stack. Also, it can fail to build:
In file included from /usr/include/fcntl.h:290:0,
from fw_env_main.c:42:
In function 'open',
inlined from 'main' at fw_env_main.c:97:9:
/usr/include/bits/fcntl2.h:50:24: error: call to '__open_missing_mode' declared
with attribute error: open with O_CREAT in second argument needs 3 arguments
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This variable is assigned by a size_t, and is printed that way, but is
incorrectly declared as an int. Which means we get warnings:
fw_env.c: In function 'fw_setenv':
fw_env.c:409:5: warning: format '%zu' expects argument of type 'size_t',
but argument 3 has type 'int' [-Wformat]
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Use the variable access flags to implement the protection for ethaddr
and serial# instead of hard-coding them.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Currently just validates variable types as decimal, hexidecimal,
boolean, ip address, and mac address. Call
env_acl_validate_setenv_params() from setenv() in fw_env.c.
If the entry is not found in the env .flags, then look in the static
one. This allows the env to override the static definitions, but prevents
the need to have every definition in the environment distracting you.
Need to build in _ctype for isdigit for Linux.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
There used to be a huge structure duplicated 3 times in the source.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Signed-off-by: Tom Rini <trini@ti.com>
Provide more information when using redundant environments
Consistently print debug info to stderr
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Fix crash introduced by a073d63a36524453a817ab029fad5b188f46127e
when attempting to delete a variable.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
This was introduced in:
8679d0ffdcc0beafea8e6942c0c67cf859afa18e -
COMMON: Use __stringify() instead of MK_STR()
The header is now needed since common.h is not included in this tool.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Add a mention of the lock file to the README for the fw_printenv tool.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reported-by: Luka Perkov <uboot@lukaperkov.net>
The length included the name length, and then it was subtracted back
out on each use. Now we don't include it in the first place. Also
realloc as we process arguments and eliminate memset. Use memcpy
instead of manually copying each byte.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Originally added in aa701b9433
Before this patch, there was a hard-coded env that was used as default
if the env in flash is detected as invalid. Now this tool (compiled
for a given board) will share the default env with the u-boot for the
board.
Fix include of config.h
Need to define "TEXT_BASE" when building the fw_env tool so that the
default env will be correct for environments which use it.
Define __ASSEMBLY__ when calling #include <config.h> so that we only
get #defines (all we're interested in).
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Kill multiple occurances and redeclaration of MK_STR
in favor of __stringify().
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Tom Rini <trini@ti.com>
Commit 5e724ca did the same thing for env_common and env_embedded, but forgot
fw_env.
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Wolfgang Denk <wd@denx.de>
This patch allows the U-Boot user space companion utility, fw_setenv,
to overwrite the 'ethaddr' key/value pair if the current value is set
to a per-board-configured default.
This change allows 'fw_setenv' to match the behavior of 'setenv' /
'env set' on the U-Boot command line.
Signed-off-by: Grant Erickson <marathon96@gmail.com>
Fixed excessive white space.
Signed-off-by: Wolfgang Denk <wd@denx.de>
The README file lists 4 defined that were not actually present in the .h
file but that were needed to get things working with settings compiled in.
They are
Added these to the .h file
(the values above are the ones from the README file)
Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Instead of linking the file into $(obj) tree use directly the source file.
This also prevents littered source tree if building not out-of-tree.
Signed-off-by: Andreas Bießmann <biessmann@corscience.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Remove MK_STR from places that consume CONFIG_BOOTFILE to force all definitions to be string literals.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Wolfgang Denk <wd@denx.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Remove MK_STR from places that consume CONFIG_ROOTPATH to force all definitions to be string literals.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Wolfgang Denk <wd@denx.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Patch fixes this issue:
fw_env.c: In function ‘fw_setenv’:
fw_env.c:492:5: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 3 has type ‘size_t’ [-Wformat]
fw_env.c: In function ‘flash_write_buf’:
fw_env.c:806:6: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 3 has type ‘size_t’ [-Wformat]
Signed-off-by: Luka Perkov <lists@lukaperkov.net>
Acked-by: Mike Frysinger <vapier@gentoo.org>
The 'trab' board configuration is broken, and there is nobody who is
interested and willing to fix it. Drop it.
This includes support for VFD displays which have always been used by
this board only.
Signed-off-by: Wolfgang Denk <wd@denx.de>
This fixes two bugs with comparison of redundant environment flags on
read.
flag0 and flag1 in fw_env_open() were declared signed instead of
unsigned char breaking BOOLEAN mode "== 0xFF" tests and in INCREMENTAL
mode the wrong environment would be chosen where the flag values are
127 and 128 (either way round). With both flags over 128, both signs
flipped and the logic worked by happy accident.
Also there was a logic bug in the INCREMENTAL test (after signedness was
fixed) in the case flag0=0, flag1=255, env 1 would be incorrectly chosen.
Fix both of these.
Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
* The sector size for SPI-dataflash (like AT45 flashes) are not always
a power-of-2. So, the sector calculations are rewritten such that it
works for either power-of-2 as any size sectors.
* Make the flash sector size optional in case it is the same value as
the environment size.
Signed-off-by: Remy Bohmer <linux@bohmer.net>
This patch makes tools/env/Makefile more similar to tools/imls:
- define HOSTSRCS and HOSTCPPFLAGS, so that .depend generation works.
- include U-Boot headers using -idirafter to prevent picking up
u-boot/include/errno.h.
- use HOSTCFLAGS_NOPED (fw_env.c does not conform to -pedantic).
In order to cross-compile tools/env, override the HOSTCC variable
as in this example:
make tools env HOSTCC=bfin-uclinux-gcc
Signed-off-by: Daniel Hobi <daniel.hobi@schmid-telecom.ch>
Tested-by: Detlev Zundel <dzu@denx.de>
Tested-by: Steve Sakoman <steve.sakoman@linaro.org>
In commit bd7b26f8 (Tools: set multiple variable with fw_setenv utility),
the option parsing was changed to getopt_long(3), but option "-n"
of fw_printenv was not included.
This leads to an error message "invalid option -- 'n'" on stderr,
although the output on stdout is correct.
Signed-off-by: Daniel Hobi <daniel.hobi@schmid-telecom.ch>
The invalidation of the old environment instance did not work for flashes
supporting hardware locking. Now we unlock/lock around this update also.
Signed-off-by: Detlev Zundel <dzu@denx.de>
Add a sort of batch mode to fw_setenv, allowing to set
multiple variables in one shot, without updating the flash after
each set as now. It is added the possibility to pass
a config file with a list of pairs <variable, value> to be set,
separated by a TAB character.
Signed-off-by: Stefano Babic <sbabic@denx.de>
Now that the other architecture-specific lib directories have been
moved out of the top-level directory there's not much reason to have the
'_generic' suffix on the common lib directory.
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>