# To setup the uboot system environment store setting
config ENV_SIZE
hex
default 0x20000 if ENV_IS_IN_NAND
default 0x10000 if ENV_IS_IN_SPI_FLASH
default 0x40000 if ENV_IS_IN_MMC
default 0x2000 if ENV_IS_NOWHERE
"ENV_IS_NOWHERE"是一个在嵌入式系统编程中常见的宏定义。它的含义是U-Boot环境变量没有存储在任何地方。在一些嵌入式系统中,U-Boot环境变量通常被存储在内存或者闪存等地方,以便于启动和运行程序时能够快速获取这些环境变量的信息。然而,当定义了"ENV_IS_NOWHERE"这个宏后,就意味着这些环境变量没有被存储在任何地方,这可能会导致一些问题,比如无法正确启动程序等。
在实际应用中,如果遇到因为"ENV_IS_NOWHERE"导致的错误,可能需要检查相关的配置文件,确保U-Boot环境变量被正确地存储在了合适的地方。在一些情况下,可能需要修改相关的代码或配置,以确保程序能够在没有环境变量的情况下正常运行。
分区在flash中的便宜和大小要设置正确
CONFIG_ENV_SIZE=0x10000
CONFIG_ENV_OFFSET=0x00D0000
CONFIG_ENV_SECT_SIZE=0x10000
CONFIG_SYS_MALLOC_LEN=0x300000
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE=""
保存成功:
Saving Environment to SPIFlash... NOR version: 1.0.12
xxx_spinor_reset: spi flash pinmux 0x1
get reg: 0x130131f0
dbg clkdiv: 0x130131f0
config nor pad driving: todo
nor chip_sel = <0>
id = 0xc2 0x20 0x19 0xc2 0x00
STDR256FW with page size 256 Bytes, erase size 4 KiB, total 32 MiB
xxx spinor 12000000 Hz
IO mode: 1-bit write / 2-bit read
DTR mode: 0, Dummy clk: 0, DQS mode: 0
Erasing SPI flash...Writing to SPI flash...done
OK
打印
uboot # pri
do_env_print
env_print
arch=arm
baudrate=115200
board=xxx-nsxxxxx
board_name=xxx-nsxxxxx
bootargs=rootwait nprofile_irq_duration=on boot_mode=0
bootdelay=3
cpu=armv7
dbg=0
ethaddr=0a:0b:0c:0d:0e:01
fdtcontroladdr=7c5d8f0
gatewayip=10.12.98.254
hostname=soclnx
ipaddr=10.12.98.223
netmask=255.255.255.0
serverip=10.12.98.119
stderr=serial
stdin=serial
stdout=serial
vendor=xxxxx
ver=U-Boot 2021.10-svn4314 (May 03 2024 - 13:09:15 +0800)
verify=0
Environment size: 448/65532 bytes