Env在u-boot中通常有两种存在方式,在永久性存储介质中(flash、NVRAM等),在SDRAM中。可配置不适用env的永久存储方式,但不常用。U-boot在启动时会将存储在永久性存储介质中的env重新定位到RAM中,这样可以快速访问,同时可以通过saveenv将RAM保存到永久性存储介质中。
-
相关结构体
env_t定义于include/environment.h中
typedef struct environment_s {
uint32_t crc; /* CRC32 over data bytes */
#ifdef CFG_REDUNDAND_ENVIRONMENT
unsigned char flags; /* active/obsolete flags */
#endif
unsigned char data[ENV_SIZE];
} env_t;
结构说明:
crc是u-boot在保存env的时候加上去的校验头,在第一次启动时一般crc校验会出错,这很正常,因为此时Flash中的数据无效。
data字段保存实际的环境变量。U-boot的env采用name=value”