Files
luban-lite-t3e-pro/doc/topics/sdk/spinand/spi-nand_config-lite.html
2025-01-23 16:37:00 +08:00

430 lines
52 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="26.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="SPI NAND 驱动配置 Baremetal 配置 在 Luban-Lite 根目录下执行 scons --menuconfig ,进入 menuconfig 的功能配置界面,按如下选择。 Board options ---&gt; [*] Using Qspi0 [ ] Using Qspi1 [ ] Using Qspi2 [ ] Using Qspi3 Qspi0 Parameter ---&gt; ..."/><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="topic"/><meta name="DC.relation" content="../../../topics/sdk/spinand/spi-nand-user-guide_2.html"/><meta name="DC.relation" content="../../../topics/sdk/spinand/spi-nand-user-guide_2.html"/><meta name="DC.relation" content="../../../topics/sdk/spinand/spi-nand-debug_guide-lite.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="id"/><meta name="DC.language" content="zh-CN"/><title>SPI NAND 配置</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content="id-d5856e3519"/><meta name="wh-source-relpath" content="topics/sdk/spinand/spi-nand_config-lite.dita"/><meta name="wh-out-relpath" content="topics/sdk/spinand/spi-nand_config-lite.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="id" 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="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS 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="chapter-memory"><div class="title"><a href="../../../topics/chapter-title/chapter-memory-sdk.html">存储</a><div class="wh-tooltip"><p class="shortdesc">SDMC、SPI NAND、SPI NOR<span class="ph"> 以及文件系统</span> 等存储模块的介绍和使用说明。</p></div></div></div></li><li><div class="topicref" data-id="spi_nand_user_guide"><div class="title"><a href="../../../topics/sdk/spinand/spi-nand-user-guide_2.html">SPI NAND 使用指南</a></div></div></li><li class="active"><div class="topicref" data-id="id"><div class="title"><a href="../../../topics/sdk/spinand/spi-nand_config-lite.html">SPI NAND 配置</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/spinand/spi-nand-user-guide_2.html" title="SPI NAND 使用指南" aria-label="上一主题: SPI NAND 使用指南" rel="prev"></a></span>
<span class="navnext"><a class="- topic/link link" href="../../../topics/sdk/spinand/spi-nand-debug_guide-lite.html" title="调试指南" aria-label="下一主题: 调试指南" 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-d5856e989" 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_rtos.html" id="revinfo_linux-d5856e989-link">修订记录</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d5856e1003" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e1003-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/env/sdk-compile.html" id="id-d5856e1003-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="id-d5856e1152" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e1152-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/advanced/sdk-usage.html" id="id-d5856e1152-link">使用指南</a><div class="wh-tooltip"><p class="shortdesc">系统镜像、编译选项、开发板、应用等相关的详细使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_rcx_czh_pzb-d5856e1416" 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-d5856e1416-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-app.html" id="concept_rcx_czh_pzb-d5856e1416-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-d5856e2119" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e2119-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/peripheral/peripheral-intro.html" id="id-d5856e2119-link">外设移植</a><div class="wh-tooltip"><p class="shortdesc"><span class="ph">CTP、U 盘、SD 卡、有线和无线网络</span>等外设的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d5856e2244" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e2244-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/bringup/chapter-bringup.html" id="id-d5856e2244-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-d5856e2345" class="topicref" data-id="id" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action id-d5856e2345-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-advanced-app.html" id="id-d5856e2345-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="false"><div data-tocid="_0-d5856e2360" class="topicref" data-id="_0" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action _0-d5856e2360-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/boot/lite_boot_direct.html" id="_0-d5856e2360-link">启动引导</a><div class="wh-tooltip"><p class="shortdesc">启动引导程序 Bootloader 可以实现加载启动应用程序、 烧录和升级功能。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="chapter-system-d5856e2435" class="topicref" data-id="chapter-system" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action chapter-system-d5856e2435-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-system.html" id="chapter-system-d5856e2435-link">系统</a><div class="wh-tooltip"><p class="shortdesc"></p></div></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="chapter-memory-d5856e3357" class="topicref" data-id="chapter-memory" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action chapter-memory-d5856e3357-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-memory-sdk.html" id="chapter-memory-d5856e3357-link">存储</a><div class="wh-tooltip"><p class="shortdesc">SDMC、SPI NAND、SPI NOR<span class="ph"> 以及文件系统</span> 等存储模块的介绍和使用说明。</p></div></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem" aria-expanded="false"><div data-tocid="id-d5856e3375" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e3375-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/sdmc/sdmc-user-guide_2.html" id="id-d5856e3375-link">SDMC 使用指南</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d5856e3447" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e3447-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/psram/psram-user-guide.html" id="id-d5856e3447-link">PSRAM 使用指南</a></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="spi_nand_user_guide-d5856e3507" class="topicref" data-id="spi_nand_user_guide" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action spi_nand_user_guide-d5856e3507-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand-user-guide_2.html" id="spi_nand_user_guide-d5856e3507-link">SPI NAND 使用指南</a></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem" class="active"><div data-tocid="id-d5856e3519" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand_config-lite.html" id="id-d5856e3519-link">SPI NAND 配置</a></div></div></li><li role="treeitem"><div data-tocid="id-d5856e3531" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand-debug_guide-lite.html" id="id-d5856e3531-link">调试指南</a></div></div></li><li role="treeitem"><div data-tocid="id-d5856e3543" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand_test_guide.html" id="id-d5856e3543-link">测试指南</a></div></div></li><li role="treeitem"><div data-tocid="id-d5856e3555" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand_lib_design_guide.html" id="id-d5856e3555-link">SPINAND 库设计说明</a></div></div></li><li role="treeitem"><div data-tocid="spi_nand_rtos_design_intro_luban_lite-d5856e3567" class="topicref" data-id="spi_nand_rtos_design_intro_luban_lite" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand_rtos_design_guide_lite.html" id="spi_nand_rtos_design_intro_luban_lite-d5856e3567-link">RTOS 设计说明</a></div></div></li><li role="treeitem"><div data-tocid="spi_nand_baremetal_design_intro_luban_lite-d5856e3579" class="topicref" data-id="spi_nand_baremetal_design_intro_luban_lite" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinand/spi-nand_baremetal_design_guide-lite.html" id="spi_nand_baremetal_design_intro_luban_lite-d5856e3579-link">Baremetal 设计说明</a></div></div></li></ul></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d5856e3591" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d5856e3591-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/spinor/spinor_user_guide_lite.html" id="id-d5856e3591-link">SPI NOR 使用指南</a></div></div></li></ul></li><li role="treeitem" aria-expanded="false"><div data-tocid="concept_mcc_32s_nbc-d5856e3639" 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-d5856e3639-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-multi-media-sdk.html" id="concept_mcc_32s_nbc-d5856e3639-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-d5856e4868" 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-d5856e4868-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-interface-sdk.html" id="concept_nww_hzh_pzb-d5856e4868-link">接口</a><div class="wh-tooltip"><p class="shortdesc">CAN<span class="ph">、CAP</span>、CIR、GPAI、GPIO、I2C、PSADC、PWM 等接口模块的介绍和使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="chapter-safety-d5856e6083" class="topicref" data-id="chapter-safety" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action chapter-safety-d5856e6083-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/chapter-title/chapter-safety-sdk.html" id="chapter-safety-d5856e6083-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 topic" 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" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/spinand/spi-nand_config-lite.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">SPI NAND 配置</h1><div class="date inPage">15 Jan 2024</div><div style="color: gray;">
Read time: 7 minute(s)
</div><div class="- topic/body body"><section class="- topic/section section" id="id__spi-nand" data-ofbid="id__spi-nand"><h2 class="- topic/title title sectiontitle">SPI NAND 驱动配置</h2>
<ul class="- topic/ul ul" id="id__ul_ucn_j2y_3dc" data-ofbid="id__ul_ucn_j2y_3dc"><li class="- topic/li li" data-ofbid="d215767e25__20250121171644">
<div class="- topic/div div section" id="id__baremetal">
<strong class="+ topic/ph hi-d/b ph b">Baremetal 配置</strong>
<p class="- topic/p p" data-ofbid="d215767e32__20250121171644"><span class="- topic/ph ph">Luban-Lite</span> 根目录下执行 <span class="+ topic/keyword sw-d/cmdname keyword cmdname">scons --menuconfig</span>,进入
menuconfig
的功能配置界面,按如下选择。</p><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_zqs_tyh_bdc" data-ofbid="id__codeblock_zqs_tyh_bdc">Board options ---&gt;
[*] Using Qspi0
[ ] Using Qspi1
[ ] Using Qspi2
[ ] Using Qspi3
Qspi0 Parameter ---&gt;
(<span class="hl-number">1</span>) Max frequency(Hz)
Set SPI0 bus width (Quad) ---&gt; <em class="hl-comment">//配置 QSPI data width</em>
[*] QSPI0 Devices: SPINAND ---&gt;
--- QSPI0 Devices: SPINAND
(<span class="hl-number">100000000</span>) SPINAND bus frequency(Hz)
[*] Continuous Read Mode Enable <em class="hl-comment">//部分 SPI NAND 支持该模式</em>
Drivers options ---&gt;
Peripheral ---&gt;
-*- SPINAND Driver library
[*] Support Winbond SPI NAND <em class="hl-comment">//使能对应 spinand 芯片厂家配置</em>
AIC Bare Driver ---&gt;
[*] Enable AIC MTD Bare Driver
</pre><div class="- topic/note note note note_note" id="id__note_l2r_qn3_ddc" data-ofbid="id__note_l2r_qn3_ddc"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d215767e44__20250121171644">为了方便配置, 使能 AIC_QSPI0_DEVICE_SPINAND 后, 会自动选上 AIC_SPINAND_DRV,
LPKG_USING_SPINAND, AIC_MTD_BARE_DRV</p>
</div></div>
</li><li class="- topic/li li" data-ofbid="d215767e48__20250121171644">
<div class="- topic/div div section" id="id__rtos">
<strong class="+ topic/ph hi-d/b ph b">RTOS 配置</strong>
<p class="- topic/p p" data-ofbid="d215767e55__20250121171644"><span class="- topic/ph ph">Luban-Lite</span> 根目录下执行 <span class="+ topic/keyword sw-d/cmdname keyword cmdname">scons --menuconfig</span>,进入
menuconfig 的功能配置界面,按如下选择:</p><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_ars_tyh_bdc" data-ofbid="id__codeblock_ars_tyh_bdc">Board options ---&gt;
[*] Using Qspi0
[ ] Using Qspi1
[ ] Using Qspi2
[ ] Using Qspi3
Qspi0 Parameter ---&gt;
(<span class="hl-number">100000000</span>) Max frequency(Hz)
Set SPI0 bus width (Quad) ---&gt; <em class="hl-comment">//配置 QSPI data width</em>
[*] QSPI0 Devices: SPINAND ---&gt;
--- QSPI0 Devices: SPINAND
(<span class="hl-number">100000000</span>) SPINAND bus frequency(Hz)
[*] Continuous Read Mode Enable <em class="hl-comment">//部分 SPI NAND 支持该模式</em>
Drivers options ---&gt;
Peripheral ---&gt;
-*- SPINAND Driver library
[*] Support Winbond SPI NAND <em class="hl-comment">//使能对应 spinand 芯片厂家配置</em>
Rt-Thread options ---&gt;
RT-Thread Components ---&gt;
Device Drivers ---&gt;
-*- Using MTD Nand Flash device drivers
</pre>
<div class="- topic/note note note note_note" id="id__note_m2r_qn3_ddc" data-ofbid="id__note_m2r_qn3_ddc"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d215767e70__20250121171644">为了方便配置,使能 AIC_QSPI0_DEVICE_SPINAND 后, 会自动选上
AIC_SPINAND_DRV,
LPKG_USING_SPINAND, RT_USING_MTD_NAND</p>
</div></div>
</li></ul></section><section class="- topic/section section" id="id__id2" data-ofbid="id__id2"><h2 class="- topic/title title sectiontitle">SPI NAND 移植指南</h2>
<p class="- topic/p p" data-ofbid="d215767e82__20250121171644">SPI NAND 移植工作需要 SoC 端 SPI 模块的驱动能力以及对 SPI NAND 模块的正确配置。本节以 <code class="+ topic/ph pr-d/codeph ph codeph">Foresee</code>
<code class="+ topic/ph pr-d/codeph ph codeph">F35SQA001G</code> 为例,详细说明 SPI NAND 器件的移植流程。</p><div class="- topic/note note note note_note" id="id__note_n2r_qn3_ddc" data-ofbid="id__note_n2r_qn3_ddc"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d215767e94__20250121171644">SPI NAND 在 Boot 和 RTOS 中的实现一致。</p>
</div>
<ol class="- topic/ol ol" id="id__ol_dgn_n2y_3dc" data-ofbid="id__ol_dgn_n2y_3dc"><li class="- topic/li li" data-ofbid="d215767e100__20250121171644">
<div class="- topic/div div section" id="id__id3">
<strong class="+ topic/ph hi-d/b ph b">准备文件</strong>
<ol class="- topic/ol ol simple" type="a" id="id__ul_brs_tyh_bdc" data-ofbid="id__ul_brs_tyh_bdc"><li class="- topic/li li" data-ofbid="d215767e108__20250121171644">
<p class="- topic/p p" data-ofbid="d215767e110__20250121171644"><span class="+ topic/ph sw-d/filepath ph filepath">bsp/peripheral/spinand/</span> 目录下创建带相应公司标识的文件,如
<span class="+ topic/ph sw-d/filepath ph filepath">foresee.c</span>。如果该公司的文件已经存在,则略过此步,直接添加新器件支持即可。</p>
<p class="- topic/p p" data-ofbid="d215767e119__20250121171644">一般情况下,同一个公司的 SPI NAND 的操作接口类似,创建一个文件可方便管理公司的接口配置。</p>
</li><li class="- topic/li li" data-ofbid="d215767e122__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e124__20250121171644"><span class="+ topic/ph sw-d/filepath ph filepath">bsp/peripheral/spinand/inc/spinand.h</span>
中声明如下:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_ksy_wy1_ndc" data-ofbid="id__codeblock_ksy_wy1_ndc"><strong class="hl-keyword">extern</strong> <strong class="hl-keyword">const</strong> <strong class="hl-keyword">struct</strong> spinand_manufacturer foresee_spinand_manufacturer;
</pre></div>
</li></ol></div>
</li><li class="- topic/li li" data-ofbid="d215767e133__20250121171644">
<div class="- topic/div div section" id="id__id4">
<strong class="+ topic/ph hi-d/b ph b">添加驱动索引</strong>
<p class="- topic/p p" data-ofbid="d215767e140__20250121171644">通过两级列表,设置 RTOS 支持的 SPI NAND 设备和驱动的关联。</p><ol class="- topic/ol ol simple" type="a" id="id__ul_crs_tyh_bdc" data-ofbid="id__ul_crs_tyh_bdc"><li class="- topic/li li" data-ofbid="d215767e143__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e145__20250121171644">检查 <span class="+ topic/ph sw-d/filepath ph filepath">bsp/peripheral/spinand/spinand.c</span> 中的
<code class="+ topic/ph pr-d/codeph ph codeph">spinand_manufacturers</code>
信息,查看新设备的厂商是否在列表之中:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_drs_tyh_bdc" data-ofbid="id__codeblock_drs_tyh_bdc"><strong class="hl-keyword">static</strong> <strong class="hl-keyword">const</strong> <strong class="hl-keyword">struct</strong> spinand_manufacturer *spinand_manufacturers[] = {
&amp;winbond_spinand_manufacturer,
&amp;xtx_spinand_manufacturer,
&amp;gigadevice_spinand_manufacturer,
&amp;foresee_spinand_manufacturer,
};</pre></div>
<p class="- topic/p p" data-ofbid="d215767e156__20250121171644"><code class="+ topic/ph pr-d/codeph ph codeph">spinand_manufacturer</code> 数据结构为第一级索引,用来描述厂商的系列器件信息,是
SPI NAND 驱动的核心。</p>
</li><li class="- topic/li li" data-ofbid="d215767e161__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e163__20250121171644">检查具体的设备厂商文件,确认具体的型号是否在列表之中。<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_s33_143_ddc" data-ofbid="id__codeblock_s33_143_ddc"><strong class="hl-keyword">const</strong> <strong class="hl-keyword">struct</strong> aic_spinand_info foresee_spinand_table[] = {
<em class="hl-comment">/*devid page_size oob_size block_per_lun pages_per_eraseblock is_die_select*/</em>
<em class="hl-comment">/*F35SQA512M*/</em>
{ DEVID(<span class="hl-number">0x70</span>), PAGESIZE(<span class="hl-number">2048</span>), OOBSIZE(<span class="hl-number">64</span>), BPL(<span class="hl-number">512</span>), PPB(<span class="hl-number">64</span>), PLANENUM(<span class="hl-number">1</span>),
DIE(<span class="hl-number">0</span>), <span class="hl-string">"foresee 64MB: 2048+64@64@512"</span>, cmd_cfg_table },
<em class="hl-comment">/*F35SQA001G*/</em>
{ DEVID(<span class="hl-number">0x71</span>), PAGESIZE(<span class="hl-number">2048</span>), OOBSIZE(<span class="hl-number">64</span>), BPL(<span class="hl-number">1024</span>), PPB(<span class="hl-number">64</span>), PLANENUM(<span class="hl-number">1</span>),
DIE(<span class="hl-number">0</span>), <span class="hl-string">"foresee 128MB: 2048+64@64@1024"</span>, cmd_cfg_table },
<em class="hl-comment">/*F35SQA002G*/</em>
{ DEVID(<span class="hl-number">0x72</span>), PAGESIZE(<span class="hl-number">2048</span>), OOBSIZE(<span class="hl-number">64</span>), BPL(<span class="hl-number">2048</span>), PPB(<span class="hl-number">64</span>), PLANENUM(<span class="hl-number">1</span>),
DIE(<span class="hl-number">0</span>), <span class="hl-string">"foresee 256MB: 2048+64@64@2048"</span>, cmd_cfg_table },
<em class="hl-comment">/*FS35ND04G*/</em>
{ DEVID(<span class="hl-number">0xEC</span>), PAGESIZE(<span class="hl-number">2048</span>), OOBSIZE(<span class="hl-number">64</span>), BPL(<span class="hl-number">4096</span>), PPB(<span class="hl-number">64</span>), PLANENUM(<span class="hl-number">1</span>),
DIE(<span class="hl-number">0</span>), <span class="hl-string">"foresee 512MB: 2048+64@64@4096"</span>, cmd_cfg_table },
};</pre></div>
<p class="- topic/p p" data-ofbid="d215767e168__20250121171644">一般 SPI NAND 都采用标准操作接口,接口比较固定但参数可能会有差别,而参数主要由
SPINAND_INFO
描述。</p>
</li></ol></div>
</li><li class="- topic/li li" data-ofbid="d215767e176__20250121171644">
<div class="- topic/div div section" id="id__xxx-cmd-cfg-table">
<strong class="+ topic/ph hi-d/b ph b">配置 xxx_cmd_cfg_table</strong>
<p class="- topic/p p" data-ofbid="d215767e183__20250121171644">SPI NAND
的接口和操作命令基本统一,一般无需特殊处理。驱动上为了更好的兼容性,预留了部分接口方便配置使用。如无需自定义配置,可略过此步。</p></div>
</li><li class="- topic/li li" data-ofbid="d215767e186__20250121171644">
<div class="- topic/div div section" id="id__f35sqa001g">
<strong class="+ topic/ph hi-d/b ph b">配置 F35SQA001G
相关参数</strong><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_grs_tyh_bdc" data-ofbid="id__codeblock_grs_tyh_bdc">#<span class="hl-directive">define</span> SPINAND_MFR_FORESEE <span class="hl-number">0xCD</span>
<em class="hl-comment">/*F35SQA001G*/</em>
{ DEVID(<span class="hl-number">0x71</span>), PAGESIZE(<span class="hl-number">2048</span>), OOBSIZE(<span class="hl-number">64</span>), BPL(<span class="hl-number">1024</span>), PPB(<span class="hl-number">64</span>), PLANENUM(<span class="hl-number">1</span>),
DIE(<span class="hl-number">0</span>), <span class="hl-string">"foresee 128MB: 2048+64@64@1024"</span>, cmd_cfg_table },</pre><p class="- topic/p p" data-ofbid="d215767e194__20250121171644">以下是对相关参数的说明:</p><div class="table-container"><table class="- topic/table table frame-all" id="id__table_hrs_tyh_bdc" data-ofbid="id__table_hrs_tyh_bdc" data-cols="3"><caption class="- topic/title title tablecap" data-caption-side="top" data-is-repeated="true"><span class="table--title-label"><span class="table--title-label-number"> 1</span><span class="table--title-label-punctuation">. </span></span><span class="table--title"><strong class="+ topic/ph hi-d/b ph b">F35SQA001G 参数描述</strong></span></caption><colgroup><col style="width:15.384615384615385%"/><col style="width:30.615384615384617%"/><col style="width:53.99999999999999%"/></colgroup><thead class="- topic/thead thead"><tr class="- topic/row"><th class="- topic/entry entry colsep-1 rowsep-1" id="id__table_hrs_tyh_bdc__entry__1">参数 ID</th><th class="- topic/entry entry colsep-1 rowsep-1" id="id__table_hrs_tyh_bdc__entry__2">参数名字</th><th class="- topic/entry entry colsep-0 rowsep-1" id="id__table_hrs_tyh_bdc__entry__3">说明</th></tr></thead><tbody class="- topic/tbody tbody"><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">1</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">devid</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">设备 id</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">2</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">page_size</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">page 大小</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">3</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">oob_size</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">oob 大小</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">4</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">block_per_lun</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">一个目标节点内包含 block 个数</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">5</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">pages_per_eraseblock</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">一个 block 里包含 page 个数</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">6</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">is_die_select</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">是否需要选择目标节点,一般单 die设置为 0 即可<p class="- topic/p p" data-ofbid="d215767e273__20250121171644"><code class="+ topic/ph pr-d/codeph ph codeph">rtt
spinand</code> 不需要太大容量128MB
即可满足要求。因此一般只有一个目标节点is_die_select 设置为 0。</p></td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__1">7</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">sz_description</code>
</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="id__table_hrs_tyh_bdc__entry__3">spinand 芯片描述信息</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-0" headers="id__table_hrs_tyh_bdc__entry__1">8</td><td class="- topic/entry entry colsep-1 rowsep-0" headers="id__table_hrs_tyh_bdc__entry__2">
<code class="+ topic/ph pr-d/codeph ph codeph">cmd</code>
</td><td class="- topic/entry entry colsep-0 rowsep-0" headers="id__table_hrs_tyh_bdc__entry__3">特定芯片操作命令组合</td></tr></tbody></table></div></div>
</li><li class="- topic/li li" data-ofbid="d215767e298__20250121171644">
<div class="- topic/div div section" id="id__foresee">
<strong class="+ topic/ph hi-d/b ph b">使能 Foresee 厂家的配置</strong>
<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_irs_tyh_bdc" data-ofbid="id__codeblock_irs_tyh_bdc">Drivers options ---&gt;
Peripheral ---&gt;
-*- SPINAND Driver library
[*] Support Foresee SPI NAND
</pre><div class="- topic/note note note note_note" id="id__note_p2r_qn3_ddc" data-ofbid="id__note_p2r_qn3_ddc"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d215767e310__20250121171644">Boot 和 RTOS 需要同时配置</p>
</div></div>
</li><li class="- topic/li li" data-ofbid="d215767e315__20250121171644">
<div class="- topic/div div section" id="id__ecc-status">
<strong class="+ topic/ph hi-d/b ph b">配置 状态寄存器 ECC Status处理函数替换</strong>
<ul class="- topic/ul ul" id="id__ul_ahf_wz1_ndc" data-ofbid="id__ul_ahf_wz1_ndc"><li class="- topic/li li" data-ofbid="d215767e323__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e325__20250121171644">寄存器 ECC Status Bit 返回状态值一般为通用值,使用默认
<code class="+ topic/ph pr-d/codeph ph codeph">spinand_check_ecc_status</code> 处理函数。如果 ECC Status
打印错误信息:<ul class="- topic/ul ul" id="id__ul_snw_sz1_ndc" data-ofbid="id__ul_snw_sz1_ndc"><li class="- topic/li li" data-ofbid="d215767e331__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e333__20250121171644">返回如下信息,表示发现了新的坏块:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_jrs_tyh_bdc" data-ofbid="id__codeblock_jrs_tyh_bdc">ECC status error[<span class="hl-number">0x20</span>].</pre></div>
</li><li class="- topic/li li" data-ofbid="d215767e338__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e340__20250121171644">返回如下信息,表示需要单独适配 ECC Status Bit
返回值:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_krs_tyh_bdc" data-ofbid="id__codeblock_krs_tyh_bdc">ECC status error[<span class="hl-number">0x30</span>].</pre></div>
</li><li class="- topic/li li" data-ofbid="d215767e345__20250121171644">
<p class="- topic/p p" data-ofbid="d215767e347__20250121171644">对于 0x30 Bit 返回值,厂家一般不会使用,因此也不会打印该值。如果厂家使用,则表示检测了 1 ~
4 位 ecc 位校验纠正情况,具体需以用户手册为准。</p>
</li></ul></div>
</li><li class="- topic/li li" data-ofbid="d215767e351__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e353__20250121171644">正常情况下ECC Status Bit 有 2 位。对于 ECC Status Bit 有 3 位或者 4
位的芯片,需要单独适配该寄存器:<ol class="- topic/ol ol" type="a" id="id__ol_im1_g1b_ndc" data-ofbid="id__ol_im1_g1b_ndc"><li class="- topic/li li" data-ofbid="d215767e356__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e358__20250121171644">以 ETRON EM73C044VCF 为例,在对应 SPINAND 厂家文件
<span class="+ topic/ph sw-d/filepath ph filepath">bsp/peripheral/spinand/etron.c</span>
里面,添加 ECC Status
处理函数:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_fts_p43_ddc" data-ofbid="id__codeblock_fts_p43_ddc"><strong class="hl-keyword">static</strong> <strong class="hl-keyword">int</strong> em73c044vcf_ecc_get_status(<strong class="hl-keyword">struct</strong> aic_spinand *flash, u8 status)
{
<strong class="hl-keyword">switch</strong> (status &amp; STATUS_ECC_MASK) {
<strong class="hl-keyword">case</strong> STATUS_ECC_NO_BITFLIPS:
<strong class="hl-keyword">return</strong> <span class="hl-number">0</span>; <em class="hl-comment">//没有检测到 ecc 位校验纠正情况</em>
<strong class="hl-keyword">case</strong> STATUS_ECC_HAS_<span class="hl-number">1</span>_<span class="hl-number">4</span>_BITFLIPS:
<strong class="hl-keyword">return</strong> <span class="hl-number">4</span>; <em class="hl-comment">//检测了 1 ~ 4 位 ecc 位校验纠正情况</em>
<strong class="hl-keyword">case</strong> STATUS_ECC_UNCOR_ERROR:
<strong class="hl-keyword">return</strong> -SPINAND_ERR_ECC; <em class="hl-comment">//ecc 位校验纠正失败,错误 bit 超过 4 位,需要标记坏块</em>
<strong class="hl-keyword">case</strong> STATUS_ECC_MASK:
<strong class="hl-keyword">return</strong> <span class="hl-number">4</span>; <em class="hl-comment">//检测了 1 ~ 4 位 ecc 位校验纠正情况</em>
<strong class="hl-keyword">default</strong>:
<strong class="hl-keyword">break</strong>;
}
<strong class="hl-keyword">return</strong> -SPINAND_ERR;
}</pre></div>
</li><li class="- topic/li li" data-ofbid="d215767e366__20250121171644">
<div class="- topic/p p" data-ofbid="d215767e368__20250121171644">将功能函数地址添加到对应 SPINAND 配置上,以替换 ECC Status
通用处理函数。<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_gj3_q43_ddc" data-ofbid="id__codeblock_gj3_q43_ddc">{ DEVID(<span class="hl-number">0x25</span>), PAGESIZE(<span class="hl-number">2048</span>), OOBSIZE(<span class="hl-number">64</span>), BPL(<span class="hl-number">1024</span>), PPB(<span class="hl-number">64</span>), PLANENUM(<span class="hl-number">1</span>),
DIE(<span class="hl-number">0</span>), <span class="hl-string">"etron 128MB: 2048+64@64@1024"</span>, cmd_cfg_table,
em73c044vcf_ecc_get_status},</pre></div>
</li></ol></div>
</li></ul></div>
</li></ol></section><section class="- topic/section section" id="id__id5" data-ofbid="id__id5"><h2 class="- topic/title title sectiontitle">文件系统配置</h2>
<ul class="- topic/ul ul" id="id__ul_odk_rdb_ndc" data-ofbid="id__ul_odk_rdb_ndc"><li class="- topic/li li" data-ofbid="d215767e381__20250121171644">
<div class="- topic/div div section" id="id__rt-thread-fatfs">
<strong class="+ topic/ph hi-d/b ph b">RT-Thread FatFS 配置</strong>
<div class="- topic/p p" data-ofbid="d215767e388__20250121171644"><span class="+ topic/ph ui-d/uicontrol ph uicontrol">Using mount table for filesystem</span> 选项打开时,系统启动后会根据一个
Table 配置来自动挂载文件系统。该 Table 定义在 <span class="+ topic/ph sw-d/filepath ph filepath">board.c</span>
中:<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_dn4_q43_ddc" data-ofbid="id__codeblock_dn4_q43_ddc">Local packages options ---&gt;
Third-party packages options ---&gt;
[*] UFFS: Ultra-low-cost Flash File System. ---&gt;
UFFS ECC mode (<span class="hl-number">3</span>: Hardware calculate the ECC and automatically write to spare.) ---&gt;</pre></div></div>
</li><li class="- topic/li li" data-ofbid="d215767e399__20250121171644">
<div class="- topic/div div section" id="id__rt-thread-uffs">
<strong class="+ topic/ph hi-d/b ph b">RT-Thread UFFS 配置</strong>
<div class="- topic/p p" data-ofbid="d215767e406__20250121171644"><span class="+ topic/ph ui-d/uicontrol ph uicontrol">Using mount table for filesystem</span> 选项打开时,系统启动后会根据一个
Table 配置来自动挂载文件系统。该 Table 定义在 <span class="+ topic/ph sw-d/filepath ph filepath">board.c</span> 中:
<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_ygx_q43_ddc" data-ofbid="id__codeblock_ygx_q43_ddc">#ifdef RT_USING_DFS_MNTTABLE
#include &lt;dfs_fs.h&gt;
<strong class="hl-keyword">const</strong> <strong class="hl-keyword">struct</strong> dfs_mount_tbl mount_table[] = {
#ifdef LPKG_USING_DFS_UFFS
{<span class="hl-string">"data"</span>, <span class="hl-string">"/data"</span>, <span class="hl-string">"uffs"</span>, <span class="hl-number">0</span>, <span class="hl-number">0</span>, <span class="hl-number">1</span>},
#endif
{<span class="hl-number">0</span>}
};
#endif</pre></div></div>
</li></ul></section><section class="- topic/section section" id="id__id6" data-ofbid="id__id6"><h2 class="- topic/title title sectiontitle"> 文件系统镜像制作和烧录</h2>
<div class="- topic/div div section" id="id__fatfs">
<strong class="+ topic/ph hi-d/b ph b">FatFS
镜像</strong><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="id__codeblock_rvb_r43_ddc" data-ofbid="id__codeblock_rvb_r43_ddc">Application options ---&gt;
[*] Using File System Image <span class="hl-number">0</span> ---&gt;
Select File System Type (FATFS) ---&gt;
(application/os/helloworld/lvgl/base_demo/lvgl_src/) Data Directory
(rodata.fatfs) Image Name
[*] <strong class="hl-keyword">auto</strong> calcuate image size
(<span class="hl-number">1</span>) size of cluster in fatfs image</pre>
</div></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="#id__spi-nand" data-tocid="id__spi-nand">SPI NAND 驱动配置</a></div></li><li class="section-item"><div class="section-title"><a href="#id__id2" data-tocid="id__id2">SPI NAND 移植指南</a></div></li><li class="section-item"><div class="section-title"><a href="#id__id5" data-tocid="id__id5">文件系统配置</a></div></li><li class="section-item"><div class="section-title"><a href="#id__id6" data-tocid="id__id6"> 文件系统镜像制作和烧录</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-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<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>