u-boot bootloader如何读取/保存其环境变量?

 拍友2702933273 发布于 2023-02-11 14:23

是的,U-boot会将环境变量的内存块复制到RAM.

块来自的持久存储是特定于平台的.一些常见的存储选项(以及处理该存储选项的源文件):

NOR flash   env/flash.c
SPI flash   env/sf.c
MMC         env/mmc.c

include/configs/yourboard.h中的CONFIG_定义将确定详细信息.例如,对于映射在内存顶部的SPI闪存,可能:

#define CONFIG_ENV_IS_IN_SPI_FLASH
#define CONFIG_ENV_SIZE    0x00001000
#define CONFIG_ENV_ADDR    0xFFFFF000

CONFIG_ENV_ADDR是u-boot环境的地址Flash中的变量部分.

请注意,在将环境写入持久存储时,u-boot会自动在此部分创建CRC32.在启动时读取环境时检查CRC.如果没有通过CRC校验,则不使用存储的环境; 而是使用硬编码到程序代码中的新默认环境,这是一种特殊情况.

在U-Boot初始化期间,环境变量被导入到哈希表中.在操作中,所有读/写操作以及所有"printenv"(显示环境变量)和"setenv"(设置环境变量)命令都使用这些表条目.在完成命令"saveenv"之前,任何更改都是未保存的,这会写入持久存储.

有关详细信息,请参阅u-boot/common/cmd_nvedit.c第14-24行和u-boot/README第3474-3881行(行号适用于v2013.10).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有