linuxOS_D21X/doc/topics/sdk/boot/save-env-variable-on-memory-medium.html
2025-01-23 16:35:08 +08:00

325 lines
39 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="27.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="在使用过程中,保存在存储设备上的环境变量内容可能会被修改,因此选择存储位置时需要考虑存储介质的特点。 比如 MTD 设备上要注意保存在独立的擦除块上,以免在修改时影响其他数据的完整性。 常见的保存方式有下面两种: 与 U-Boot 一起保存 在使用 MMC 存储时,有些方案会将 ENV 保存在 U-Boot 的分区,并且放在 U-Boot 分区的尾部。 通过在 DTS 中指定分区名字即可访问到。 ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.relation" content="../../../topics/sdk/boot/environment-variables.html"/><meta name="DC.relation" content="../../../topics/sdk/boot/configure-default-environment-variable.html"/><meta name="DC.relation" content="../../../topics/sdk/boot/uboot-dts.html"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-01-15"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="concept_qhg_gl3_pzb"/><meta name="DC.language" content="zh-CN"/><title>存储介质上的保存</title><!-- Generated with build number 2024112209. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content="concept_qhg_gl3_pzb-d4445e2257"/><meta name="wh-source-relpath" content="topics/sdk/boot/save-env-variable-on-memory-medium.dita"/><meta name="wh-out-relpath" content="topics/sdk/boot/save-env-variable-on-memory-medium.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2024112209"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2024112209"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250123154945"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2024112209"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250123154945"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2024112209"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2024112209"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2024112209"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2024112209"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2024112209"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2024112209"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2024112209"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2024112209"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2024112209"/></head>
<body id="concept_qhg_gl3_pzb" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt=" Linux SDK 使用指南 SDK 指南文件 "/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"> <span class="ph mainbooktitle">Linux SDK 使用指南</span> <span class="ph booktitlealt">SDK 指南文件</span> </span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "><ol class="d-print-none"><li><span class="home"><a href="../../../index.html"><span>主页</span></a></span></li><li><div class="topicref" data-id="id"><div class="title"><a href="../../../topics/sdk/chapter-advanced-app.html">高级应用</a><div class="wh-tooltip"><p class="shortdesc">系统、存储、多媒体、接口、安全等模块的详细配置和设计说明。</p></div></div></div></li><li><div class="topicref" data-id="uBoot"><div class="title"><a href="../../../topics/sdk/boot/uboot-module.html">U-Boot</a><div class="wh-tooltip"><p class="shortdesc">启动支持的基本功能以及运行时的基本硬件环境。</p></div></div></div></li><li><div class="topicref" data-id="concept_lbx_3n3_pzb"><div class="title"><a href="../../../topics/sdk/boot/environment-variables.html">环境变量</a></div></div></li><li class="active"><div class="topicref" data-id="concept_qhg_gl3_pzb"><div class="title"><a href="../../../topics/sdk/boot/save-env-variable-on-memory-medium.html">存储介质上的保存</a></div></div></li></ol></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_navigation_links "><span id="topic_navigation_links" class="navheader">
<span class="navprev"><a class="- topic/link link" href="../../../topics/sdk/boot/configure-default-environment-variable.html" title="初始环境变量设置" aria-label="上一主题: 初始环境变量设置" rel="prev"></a></span>
<span class="navnext"><a class="- topic/link link" href="../../../topics/sdk/boot/uboot-dts.html" title="DTS" aria-label="下一主题: DTS" rel="next"></a></span> </span></div>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
<button type="button" id="wh_toc_button" class="custom-toggler navbar-toggler collapsed wh_toggle_button navbar-light" aria-expanded="false" aria-label="Toggle publishing table of content" aria-controls="wh_publication_toc">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<nav id="wh_publication_toc" class="col-lg-3 col-md-3 col-sm-12 d-md-block d-none d-print-none" aria-label="Table of Contents Container">
<div id="wh_publication_toc_content">
<div class=" wh_publication_toc " data-tooltip-position="right"><span class="expand-button-action-labels"><span id="button-expand-action" role="button" aria-label="Expand"></span><span id="button-collapse-action" role="button" aria-label="Collapse"></span><span id="button-pending-action" role="button" aria-label="Pending"></span></span><ul role="tree" aria-label="Table of Contents"><li role="treeitem"><div data-tocid="revinfo_linux-d4445e1079" class="topicref" data-id="revinfo_linux" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/revinfo/revinfo_linux.html" id="revinfo_linux-d4445e1079-link">修订记录</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d4445e1096" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d4445e1096-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/env/sdk-compile.html" id="id-d4445e1096-link">SDK 编译</a><div class="wh-tooltip"><p class="shortdesc">介绍不同编译环境下 SDK 的详细编译流程。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="tocId-d4445e1240" class="topicref" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action tocId-d4445e1240-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/advanced/lb_usage_commands.html" id="tocId-d4445e1240-link">使用指南</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_rcx_czh_pzb-d4445e1360" class="topicref" data-id="concept_rcx_czh_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_rcx_czh_pzb-d4445e1360-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-app.html" id="concept_rcx_czh_pzb-d4445e1360-link">应用场景</a><div class="wh-tooltip"><p class="shortdesc">描述了 SDK 在不同应用场景中的配置和使用包括系统更新、OTA、安全方案等。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d4445e1678" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d4445e1678-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/peripheral/peripheral-intro.html" id="id-d4445e1678-link">外设移植</a><div class="wh-tooltip"><p class="shortdesc"><span class="ph">触摸屏、显示器、WIFI 模块、按键</span>等外设的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d4445e1964" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d4445e1964-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/bringup/chapter-bringup.html" id="id-d4445e1964-link">BringUp</a><div class="wh-tooltip"><p class="shortdesc">在硬件上电后快速初始化系统,为操作系统的启动准备好必要的硬件环境。</p></div></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="id-d4445e2153" class="topicref" data-id="id" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action id-d4445e2153-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-advanced-app.html" id="id-d4445e2153-link">高级应用</a><div class="wh-tooltip"><p class="shortdesc">系统、存储、多媒体、接口、安全等模块的详细配置和设计说明。</p></div></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem" aria-expanded="true"><div data-tocid="uBoot-d4445e2170" class="topicref" data-id="uBoot" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action uBoot-d4445e2170-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-module.html" id="uBoot-d4445e2170-link">U-Boot</a><div class="wh-tooltip"><p class="shortdesc">启动支持的基本功能以及运行时的基本硬件环境。</p></div></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem"><div data-tocid="_65-d4445e2187" class="topicref" data-id="_65" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-hardware-env.html" id="_65-d4445e2187-link">硬件运行环境</a></div></div></li><li role="treeitem"><div data-tocid="_1601-d4445e2201" class="topicref" data-id="_1601" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-parameter.html" id="_1601-d4445e2201-link">启动参数</a></div></div></li><li role="treeitem"><div data-tocid="_1601_0-d4445e2215" class="topicref" data-id="_1601_0" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/boot-memory.html" id="_1601_0-d4445e2215-link">内存相关</a></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="concept_lbx_3n3_pzb-d4445e2229" class="topicref" data-id="concept_lbx_3n3_pzb" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action concept_lbx_3n3_pzb-d4445e2229-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/environment-variables.html" id="concept_lbx_3n3_pzb-d4445e2229-link">环境变量</a></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem"><div data-tocid="concept_ndp_fl3_pzb-d4445e2243" class="topicref" data-id="concept_ndp_fl3_pzb" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/configure-default-environment-variable.html" id="concept_ndp_fl3_pzb-d4445e2243-link">初始环境变量设置</a></div></div></li><li role="treeitem" class="active"><div data-tocid="concept_qhg_gl3_pzb-d4445e2257" class="topicref" data-id="concept_qhg_gl3_pzb" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/save-env-variable-on-memory-medium.html" id="concept_qhg_gl3_pzb-d4445e2257-link">存储介质上的保存</a></div></div></li></ul></li><li role="treeitem"><div data-tocid="dts-d4445e2271" class="topicref" data-id="dts" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-dts.html" id="dts-d4445e2271-link">DTS</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="spl-d4445e2285" class="topicref" data-id="spl" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action spl-d4445e2285-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/spl-program-stage.html" id="spl-d4445e2285-link">SPL 阶段</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="uBoot_0-d4445e2411" class="topicref" data-id="uBoot_0" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action uBoot_0-d4445e2411-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-stage.html" id="uBoot_0-d4445e2411-link">U-Boot 阶段</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_q5s_jn3_pzb-d4445e2495" class="topicref" data-id="concept_q5s_jn3_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_q5s_jn3_pzb-d4445e2495-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-driver-support.html" id="concept_q5s_jn3_pzb-d4445e2495-link">驱动支持</a></div></div></li><li role="treeitem"><div data-tocid="concept_l2d_xk3_pzb-d4445e2607" class="topicref" data-id="concept_l2d_xk3_pzb" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-partition-config.html" id="concept_l2d_xk3_pzb-d4445e2607-link">配置启动分区</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_afz_xk3_pzb-d4445e2621" class="topicref" data-id="concept_afz_xk3_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_afz_xk3_pzb-d4445e2621-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-core.html" id="concept_afz_xk3_pzb-d4445e2621-link">启动内核</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_uzy_yk3_pzb-d4445e2692" class="topicref" data-id="concept_uzy_yk3_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_uzy_yk3_pzb-d4445e2692-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/bundle-images.html" id="concept_uzy_yk3_pzb-d4445e2692-link">打包镜像</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_yfv_1l3_pzb-d4445e2832" class="topicref" data-id="concept_yfv_1l3_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_yfv_1l3_pzb-d4445e2832-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/uboot-chapter-image-burn.html" id="concept_yfv_1l3_pzb-d4445e2832-link">镜像烧录</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="userid-d4445e2888" class="topicref" data-id="userid" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action userid-d4445e2888-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/userid-burn.html" id="userid-d4445e2888-link">UserID 烧录</a></div></div></li><li role="treeitem"><div data-tocid="concept_azt_bl3_pzb-d4445e2944" class="topicref" data-id="concept_azt_bl3_pzb" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/logo-display.html" id="concept_azt_bl3_pzb-d4445e2944-link">图像显示</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="_1601_1-d4445e2958" class="topicref" data-id="_1601_1" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action _1601_1-d4445e2958-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/debug-configuration.html" id="_1601_1-d4445e2958-link">调试配置</a></div></div></li><li role="treeitem"><div data-tocid="opensbi-d4445e3000" class="topicref" data-id="opensbi" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/opensbi.html" id="opensbi-d4445e3000-link">OpenSBI</a></div></div></li><li role="treeitem"><div data-tocid="pbp-d4445e3014" class="topicref" data-id="pbp" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/pre-boot-program.html" id="pbp-d4445e3014-link">Pre-Boot Program (PBP)</a></div></div></li></ul></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_mtx_tk3_pzb-d4445e3028" class="topicref" data-id="concept_mtx_tk3_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_mtx_tk3_pzb-d4445e3028-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/linux/chapter_linux.html" id="concept_mtx_tk3_pzb-d4445e3028-link">Linux</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="chapter-system-d4445e3198" class="topicref" data-id="chapter-system" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action chapter-system-d4445e3198-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-system.html" id="chapter-system-d4445e3198-link">系统</a><div class="wh-tooltip"><p class="shortdesc"></p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="chapter-memory-d4445e4054" class="topicref" data-id="chapter-memory" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action chapter-memory-d4445e4054-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-memory-sdk.html" id="chapter-memory-d4445e4054-link">存储</a><div class="wh-tooltip"><p class="shortdesc">SDMC、SPI NAND、SPI NOR 等存储模块的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_mcc_32s_nbc-d4445e4438" class="topicref" data-id="concept_mcc_32s_nbc" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_mcc_32s_nbc-d4445e4438-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-multi-media-sdk.html" id="concept_mcc_32s_nbc-d4445e4438-link">多媒体</a><div class="wh-tooltip"><p class="shortdesc">GE、VE、Display、DVP、MPP、MPP 播放器等多媒体模块的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_nww_hzh_pzb-d4445e5947" class="topicref" data-id="concept_nww_hzh_pzb" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action concept_nww_hzh_pzb-d4445e5947-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-interface-sdk.html" id="concept_nww_hzh_pzb-d4445e5947-link">接口</a><div class="wh-tooltip"><p class="shortdesc">CAN、CIR、GPAI、GPIO、I2C、PSADC、PWM 等接口模块的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="chapter-safety-d4445e7944" class="topicref" data-id="chapter-safety" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action chapter-safety-d4445e7944-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-safety-sdk.html" id="chapter-safety-d4445e7944-link">安全</a><div class="wh-tooltip"><p class="shortdesc">SPI ENC、CE、eFuse 等安全模块的介绍和使用说明。</p></div></div></div></li></ul></li></ul></div>
</div>
</nav>
<div class="col-lg-7 col-md-9 col-sm-12" id="wh_topic_body">
<button id="wh_close_publication_toc_button" class="close-toc-button d-none" aria-label="Toggle publishing table of content" aria-controls="wh_publication_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<button id="wh_close_topic_toc_button" class="close-toc-button d-none" aria-label="Toggle topic table of content" aria-controls="wh_topic_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1">
<span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" title="Edit this document" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/boot/save-env-variable-on-memory-medium.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">存储介质上的保存</h1>
<div class="date inPage">15 Jan 2024</div><div style="color: gray;">
Read time: 2 minute(s)
</div>
<div class="- topic/body concept/conbody body conbody">
<p class="- topic/p p" data-ofbid="d78927e33__20250123155205">在使用过程中,保存在存储设备上的环境变量内容可能会被修改,因此选择存储位置时需要考虑存储介质的特点。 比如 MTD
设备上要注意保存在独立的擦除块上,以免在修改时影响其他数据的完整性。</p>
<p class="- topic/p p" data-ofbid="d78927e36__20250123155205">常见的保存方式有下面两种:</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_ehm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_ehm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e41__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e43__20250123155205">与 U-Boot 一起保存</p>
<p class="- topic/p p" data-ofbid="d78927e46__20250123155205">在使用 MMC 存储时,有些方案会将 ENV 保存在 U-Boot 的分区,并且放在 U-Boot 分区的尾部。 通过在 DTS
中指定分区名字即可访问到。</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e50__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e52__20250123155205">单独分区保存</p>
<p class="- topic/p p" data-ofbid="d78927e55__20250123155205">多数方案使用单独的分区保存。</p>
</li>
</ul>
<p class="- topic/p p" data-ofbid="d78927e60__20250123155205">在 ArtInChip 平台上,不同存储介质上 ENV 的默认保存设置如下文所述。</p>
<section class="- topic/section section" id="concept_qhg_gl3_pzb__section_fhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__section_fhm_d1h_bzb"><h2 class="- topic/title title sectiontitle">MMC</h2>
<p class="- topic/p p" data-ofbid="d78927e68__20250123155205">MMC 的 ENV 存储位置可以通过下面几个方式进行设置:</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_ghm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_ghm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e73__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e75__20250123155205">Kconfig 配置指定 Offset 和 大小</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_hhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_hhm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e80__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e82__20250123155205">CONFIG_ENV_OFFSET</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e86__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e88__20250123155205">CONFIG_ENV_OFFSET_REDUND</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e92__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e94__20250123155205">CONFIG_ENV_SIZE</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e98__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e100__20250123155205">CONFIG_ENV_IS_IN_MMC</p>
</li>
</ul>
</li>
<li class="- topic/li li" data-ofbid="d78927e106__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e108__20250123155205">DTS 中配置 offsetKconfig 配置大小</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_ihm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_ihm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e113__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e115__20250123155205">“u-boot,mmc-env-offset”</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e119__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e121__20250123155205">“u-boot,mmc-env-offset-redundant”</p>
</li>
</ul>
</li>
<li class="- topic/li li" data-ofbid="d78927e127__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e129__20250123155205">DTS 中配置分区名字Kconfig 配置大小</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_jhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_jhm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e134__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e136__20250123155205">“u-boot,mmc-env-partition”</p>
</li>
</ul>
</li>
</ul>
<p class="- topic/p p" data-ofbid="d78927e143__20250123155205">目前默认的配置使用最后一种方式,通过 DTS 中的 config 节点配置:</p>
<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="concept_qhg_gl3_pzb__pre_khm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__pre_khm_d1h_bzb"><code>config{u-boot,mmc-env-partition=<span class="hl-string">"env"</span>;};</code></pre>
<p class="- topic/p p" data-ofbid="d78927e150__20250123155205">u-boot,mmc-env-partition = “env” 表示环境变量使用独立分区的方式,保存在 mmc 设备的”env”分区上。</p>
<p class="- topic/p p" data-ofbid="d78927e153__20250123155205">通过 Kconfig 设置 <span class="+ topic/keyword pr-d/parmname keyword parmname">CONFIG_ENV_SIZE</span> 大小为 16KB。</p>
<p class="- topic/p p" data-ofbid="d78927e159__20250123155205">保存 ENV 数据的区域为该分区的前 <span class="+ topic/keyword pr-d/parmname keyword parmname">CONFIG_ENV_SIZE</span> 大小。相关的源码在文件:
<span class="+ topic/ph sw-d/filepath ph filepath">board/artinchip/d211/mmc_env.c</span></p>
</section>
<section class="- topic/section section" id="concept_qhg_gl3_pzb__section_lhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__section_lhm_d1h_bzb"><h2 class="- topic/title title sectiontitle">SPI NAND</h2>
<p class="- topic/p p" data-ofbid="d78927e175__20250123155205">U-Boot 项目的源码本身没有支持 SPI NAND 启动,环境变量也没有支持从 SPI NAND 读取, ArtInChip 平台增加了 SPI NAND
的支持。</p>
<p class="- topic/p p" data-ofbid="d78927e178__20250123155205">ENV 存储位置的配置通过 Kconfig 进行,需要配置的选项有下面几个:</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_mhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_mhm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e183__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e185__20250123155205">CONFIG_ENV_OFFSET</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e189__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e191__20250123155205">CONFIG_ENV_SIZE</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e195__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e197__20250123155205">CONFIG_ENV_RANGE</p>
</li>
</ul>
<p class="- topic/p p" data-ofbid="d78927e202__20250123155205">相应的源码在 <span class="+ topic/ph sw-d/filepath ph filepath">env/spinand.c</span></p>
</section>
<section class="- topic/section section" id="concept_qhg_gl3_pzb__section_nhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__section_nhm_d1h_bzb"><h2 class="- topic/title title sectiontitle">SPI NOR</h2>
<p class="- topic/p p" data-ofbid="d78927e214__20250123155205">U-Boot 原本已经支持从 SPI NOR 启动和加载 ENV 内容。ENV 的存储位置通过 Kconfig 进行, 需要配置的选项有下面几个:</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_ohm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_ohm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e219__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e221__20250123155205">CONFIG_ENV_SPI_BUS</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e225__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e227__20250123155205">CONFIG_ENV_SPI_CS</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e231__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e233__20250123155205">CONFIG_ENV_SPI_MAX_HZ</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e237__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e239__20250123155205">CONFIG_ENV_SPI_MODE</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e243__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e245__20250123155205">CONFIG_ENV_OFFSET</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e250__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e252__20250123155205">CONFIG_ENV_OFFSET_REDUND</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e256__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e258__20250123155205">CONFIG_ENV_SECT_SIZE</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e262__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e264__20250123155205">CONFIG_ENV_SIZE</p>
</li>
<li class="- topic/li li" data-ofbid="d78927e268__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e270__20250123155205">CONFIG_ENV_IS_IN_SPI_FLASH</p>
</li>
</ul>
<p class="- topic/p p" data-ofbid="d78927e275__20250123155205">相应的源码在 <span class="+ topic/ph sw-d/filepath ph filepath">env/sf.c</span></p>
</section>
<section class="- topic/section section" id="concept_qhg_gl3_pzb__section_phm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__section_phm_d1h_bzb"><h2 class="- topic/title title sectiontitle">RAM</h2>
<p class="- topic/p p" data-ofbid="d78927e287__20250123155205">ArtInChip 平台上增加了从 DRAM 指定地址加载环境变量的功能,主要用于 USB 升级的场景。 在 USB 升级的过程中,主机端会先发送一个 env.bin
到设备指定内存地址,然后再启动 u-boot 进行升级。</p>
<p class="- topic/p p" data-ofbid="d78927e290__20250123155205">相关的配置通过 Kconfig 进行,需要配置的选项有:</p>
<ul class="- topic/ul ul" id="concept_qhg_gl3_pzb__ul_qhm_d1h_bzb" data-ofbid="concept_qhg_gl3_pzb__ul_qhm_d1h_bzb">
<li class="- topic/li li" data-ofbid="d78927e295__20250123155205">
<p class="- topic/p p" data-ofbid="d78927e297__20250123155205">CONFIG_ENV_RAM_ADDR</p>
</li>
</ul>
<p class="- topic/p p" data-ofbid="d78927e302__20250123155205">相应的源码在 <span class="+ topic/ph sw-d/filepath ph filepath">board/artinchip/d211/env_location.c</span></p>
</section>
</div>
</article></main></div>
</div>
<nav role="navigation" id="wh_topic_toc" aria-label="On this page" class="col-lg-2 d-none d-lg-block navbar d-print-none">
<div id="wh_topic_toc_content">
<div class=" wh_topic_toc "><div class="wh_topic_label">在本页上</div><ul><li class="section-item"><div class="section-title"><a href="#concept_qhg_gl3_pzb__section_fhm_d1h_bzb" data-tocid="concept_qhg_gl3_pzb__section_fhm_d1h_bzb">MMC</a></div></li><li class="section-item"><div class="section-title"><a href="#concept_qhg_gl3_pzb__section_lhm_d1h_bzb" data-tocid="concept_qhg_gl3_pzb__section_lhm_d1h_bzb">SPI NAND</a></div></li><li class="section-item"><div class="section-title"><a href="#concept_qhg_gl3_pzb__section_nhm_d1h_bzb" data-tocid="concept_qhg_gl3_pzb__section_nhm_d1h_bzb">SPI NOR</a></div></li><li class="section-item"><div class="section-title"><a href="#concept_qhg_gl3_pzb__section_phm_d1h_bzb" data-tocid="concept_qhg_gl3_pzb__section_phm_d1h_bzb">RAM</a></div></li></ul></div>
</div>
</nav>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-23
</div>
</div>
</div>
</footer>
<button id="go2top" class="d-print-none" title="返回顶部">
<span class="oxy-icon oxy-icon-up"></span>
</button>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>