env: Rework ENV_IS_EMBEDDED and related logic slightly

- Drop CONFIG_BUILD_ENVCRC as this is never set directly but instead
  means ENV_IS_EMBEDDED, so reference that in code and rename the Makefile
  usage to BUILD_ENVCRC.
- Remove extra-$(CONFIG_ENV_IS_EMBEDDED) line as it could never be true,
  and likely why there is an extra- line for CONFIG_ENV_IS_IN_FLASH (the
  only use case today of embedded environments).
- With these slight changes we can then see that using the calculated
  symbol of ENV_IS_EMBEDDED is the right thing to use in any code which
  needs to know this situation and can remove CONFIG_ENV_IS_EMBEDDED
  entirely.

Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2022-12-02 16:42:17 -05:00
parent 2440b5bb52
commit 6bd2372094
6 changed files with 7 additions and 39 deletions

5
README
View file

@ -1542,11 +1542,6 @@ The following definitions that deal with the placement and management
of environment data (variable area); in general, we support the of environment data (variable area); in general, we support the
following configurations: following configurations:
- CONFIG_BUILD_ENVCRC:
Builds up envcrc with the target environment so that external utils
may easily extract it and embed it in final U-Boot images.
BE CAREFUL! The first access to the environment happens quite early BE CAREFUL! The first access to the environment happens quite early
in U-Boot initialization (when we try to get the setting of for the in U-Boot initialization (when we try to get the setting of for the
console baudrate). You *MUST* have mapped your NVRAM area then, or console baudrate). You *MUST* have mapped your NVRAM area then, or

1
env/Makefile vendored
View file

@ -11,7 +11,6 @@ obj-$(CONFIG_$(SPL_TPL_)ENV_SUPPORT) += flags.o
ifndef CONFIG_SPL_BUILD ifndef CONFIG_SPL_BUILD
obj-y += callback.o obj-y += callback.o
obj-$(CONFIG_ENV_IS_IN_EEPROM) += eeprom.o obj-$(CONFIG_ENV_IS_IN_EEPROM) += eeprom.o
extra-$(CONFIG_ENV_IS_EMBEDDED) += embedded.o
obj-$(CONFIG_ENV_IS_IN_EEPROM) += embedded.o obj-$(CONFIG_ENV_IS_IN_EEPROM) += embedded.o
extra-$(CONFIG_ENV_IS_IN_FLASH) += embedded.o extra-$(CONFIG_ENV_IS_IN_FLASH) += embedded.o
obj-$(CONFIG_ENV_IS_IN_NVRAM) += embedded.o obj-$(CONFIG_ENV_IS_IN_NVRAM) += embedded.o

2
env/embedded.c vendored
View file

@ -27,7 +27,7 @@
* Generate embedded environment table * Generate embedded environment table
* inside U-Boot image, if needed. * inside U-Boot image, if needed.
*/ */
#if defined(ENV_IS_EMBEDDED) || defined(CONFIG_BUILD_ENVCRC) #if defined(ENV_IS_EMBEDDED)
/* /*
* Put the environment in the .text section when we are building * Put the environment in the .text section when we are building
* U-Boot proper. The host based program "tools/envcrc" does not need * U-Boot proper. The host based program "tools/envcrc" does not need

View file

@ -41,10 +41,6 @@
(CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
# define ENV_IS_EMBEDDED # define ENV_IS_EMBEDDED
# endif # endif
# ifdef CONFIG_ENV_IS_EMBEDDED
# error "do not define CONFIG_ENV_IS_EMBEDDED in your board config"
# error "it is calculated automatically for you"
# endif
#endif /* CONFIG_ENV_IS_IN_FLASH */ #endif /* CONFIG_ENV_IS_IN_FLASH */
#if defined(CONFIG_ENV_IS_IN_NAND) #if defined(CONFIG_ENV_IS_IN_NAND)
@ -57,23 +53,6 @@ extern unsigned long nand_env_oob_offset;
# endif /* CONFIG_ENV_OFFSET_OOB */ # endif /* CONFIG_ENV_OFFSET_OOB */
#endif /* CONFIG_ENV_IS_IN_NAND */ #endif /* CONFIG_ENV_IS_IN_NAND */
/*
* For the flash types where embedded env is supported, but it cannot be
* calculated automatically (i.e. NAND), take the board opt-in.
*/
#if defined(CONFIG_ENV_IS_EMBEDDED) && !defined(ENV_IS_EMBEDDED)
# define ENV_IS_EMBEDDED
#endif
/* The build system likes to know if the env is embedded */
#ifdef DO_DEPS_ONLY
# ifdef ENV_IS_EMBEDDED
# ifndef CONFIG_ENV_IS_EMBEDDED
# define CONFIG_ENV_IS_EMBEDDED
# endif
# endif
#endif
#include "compiler.h" #include "compiler.h"
#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
@ -88,7 +67,7 @@ extern unsigned long nand_env_oob_offset;
* If the environment is in RAM, allocate extra space for it in the malloc * If the environment is in RAM, allocate extra space for it in the malloc
* region. * region.
*/ */
#if defined(CONFIG_ENV_IS_EMBEDDED) #if defined(ENV_IS_EMBEDDED)
#define TOTAL_MALLOC_LEN CONFIG_SYS_MALLOC_LEN #define TOTAL_MALLOC_LEN CONFIG_SYS_MALLOC_LEN
#elif (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE < CONFIG_SYS_MONITOR_BASE) || \ #elif (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE < CONFIG_SYS_MONITOR_BASE) || \
(CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) || \ (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) || \

View file

@ -36,21 +36,20 @@ endif
subdir-$(HOST_TOOLS_ALL) += gdb subdir-$(HOST_TOOLS_ALL) += gdb
# Merge all the different vars for envcrc into one # Merge all the different vars for envcrc into one
ENVCRC-$(CONFIG_ENV_IS_EMBEDDED) = y
ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y
ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y
CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y) BUILD_ENVCRC ?= $(ENVCRC-y)
hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params
hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo
HOSTCFLAGS_bmp_logo.o := -pedantic HOSTCFLAGS_bmp_logo.o := -pedantic
hostprogs-$(CONFIG_BUILD_ENVCRC) += envcrc hostprogs-$(BUILD_ENVCRC) += envcrc
envcrc-objs := envcrc.o lib/crc32.o env/embedded.o lib/sha1.o envcrc-objs := envcrc.o lib/crc32.o env/embedded.o lib/sha1.o
hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr

View file

@ -40,10 +40,6 @@
# endif # endif
#endif /* CONFIG_ENV_IS_IN_FLASH */ #endif /* CONFIG_ENV_IS_IN_FLASH */
#if defined(ENV_IS_EMBEDDED) && !defined(CONFIG_BUILD_ENVCRC)
# define CONFIG_BUILD_ENVCRC
#endif
#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
# define ENV_HEADER_SIZE (sizeof(uint32_t) + 1) # define ENV_HEADER_SIZE (sizeof(uint32_t) + 1)
#else #else
@ -53,17 +49,17 @@
#define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE) #define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
#ifdef CONFIG_BUILD_ENVCRC #ifdef ENV_IS_EMBEDDED
# include <env_internal.h> # include <env_internal.h>
extern unsigned int env_size; extern unsigned int env_size;
extern env_t embedded_environment; extern env_t embedded_environment;
#endif /* CONFIG_BUILD_ENVCRC */ #endif /* ENV_IS_EMBEDDED */
extern uint32_t crc32(uint32_t, const unsigned char *, unsigned int); extern uint32_t crc32(uint32_t, const unsigned char *, unsigned int);
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
#ifdef CONFIG_BUILD_ENVCRC #ifdef ENV_IS_EMBEDDED
unsigned char pad = 0x00; unsigned char pad = 0x00;
uint32_t crc; uint32_t crc;
unsigned char *envptr = (unsigned char *)&embedded_environment, unsigned char *envptr = (unsigned char *)&embedded_environment,