Files
luban-lite/doc/topics/sdk/burnsys/burn_packaged_spinor.html
刘可亮 11c97ef399 v1.2.1
2025-07-22 11:15:46 +08:00

430 lines
46 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.1">
<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="针对支持合封 NOR Flash 的芯片,设备生产厂商可能希望在主控芯片焊接到板子前对于合封 NOR 进行镜像数据烧录。这种离线烧录方法,可以确保芯片在出厂前已经包含了必要的固件或应用程序。 本节介绍如何使用外部烧录器对合封 NOR 进行离线烧录,适用于支持合封 NOR Flash 的匠心创芯片。 使用离线烧录方式,可烧录如下内容: 烧录 eFuse 烧录内置的 SPINOR 机器烧录 ..."/><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/burnsys/burner_offline_lite.html"/><meta name="DC.relation" content="../../../topics/sdk/burnsys/burn_spinand.html"/><meta name="DC.relation" content="../../../topics/sdk/app/usb-display.html"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2025-05-16"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="burn_packaged_spinor"/><title>烧录内置 SPI NOR</title><!-- Generated with build number 2025051600. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content="burn_packaged_spinor-d3752e1692"/><meta name="wh-source-relpath" content="topics/sdk/burnsys/burn_packaged_spinor.dita"/><meta name="wh-out-relpath" content="topics/sdk/burnsys/burn_packaged_spinor.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2024041900"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2024041900"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250519091401"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2024041900"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250519091401"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2024041900"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2024041900"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-styles-web-internal.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/notes.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-common.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-images.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/footnote.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/aic-highlight-changes.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/search-in-header.css?buildId=2024041900"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/css/topic-body-list.css?buildId=2024041900"/></head>
<body id="burn_packaged_spinor" 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 xmlns:whc="http://www.oxygenxml.com/webhelp/components" 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="https://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo.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 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>
</div>
</header>
<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="concept_rcx_czh_pzb"><div class="title"><a href="../../../topics/sdk/chapter-app.html">应用场景</a><div class="wh-tooltip"><p class="shortdesc">描述了 SDK 在不同应用场景中的配置和使用包括系统更新、OTA、安全方案等。</p></div></div></div></li><li><div class="topicref" data-id="id"><div class="title"><a href="../../../topics/sdk/burnsys/burner_offline_lite.html">离线烧录</a></div></div></li><li class="active"><div class="topicref" data-id="burn_packaged_spinor"><div class="title"><a href="../../../topics/sdk/burnsys/burn_packaged_spinor.html">烧录内置 SPI NOR</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/burnsys/burn_spinand.html" title="烧录 SPI NAND" aria-label="上一主题: 烧录 SPI NAND" rel="prev"></a></span>
<span class="navnext"><a class="- topic/link link" href="../../../topics/sdk/app/usb-display.html" title="USB Display 方案" aria-label="下一主题: USB Display 方案" 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-d3752e463" 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-d3752e463-link">修订记录</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e480" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e480-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/env/sdk-compile.html" id="id-d3752e480-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-d3752e604" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e604-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/advanced/sdk-usage.html" id="id-d3752e604-link">使用指南</a><div class="wh-tooltip"><p class="shortdesc">命令详解,编译选项,镜像和分区配置,添加应用和驱动等的详细使用说明。</p></div></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="concept_rcx_czh_pzb-d3752e1004" class="topicref" data-id="concept_rcx_czh_pzb" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action concept_rcx_czh_pzb-d3752e1004-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-app.html" id="concept_rcx_czh_pzb-d3752e1004-link">应用场景</a><div class="wh-tooltip"><p class="shortdesc">描述了 SDK 在不同应用场景中的配置和使用包括系统更新、OTA、安全方案等。</p></div></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem"><div data-tocid="id-d3752e1021" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/usb/udisk.html" id="id-d3752e1021-link">挂载 U 盘 </a></div></div></li><li role="treeitem"><div data-tocid="id-d3752e1035" class="topicref" data-id="id" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/sdmc/sdcard.html" id="id-d3752e1035-link">挂载 SD 卡</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1049" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1049-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burnsys_user_guide.html" id="id-d3752e1049-link">系统更新</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1163" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1163-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/ota/ota_guide.html" id="id-d3752e1163-link">OTA 方案</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1283" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1283-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/xip/xip_user_guide.html" id="id-d3752e1283-link">XIP 方案 </a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1372" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1372-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/dm.html" id="id-d3752e1372-link">动态加载 (DM-APP)</a></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1442" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1442-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/secure/chapter-secure.html" id="id-d3752e1442-link">安全方案</a></div></div></li><li role="treeitem"><div data-tocid="mkfs_partition_image-d3752e1636" class="topicref" data-id="mkfs_partition_image" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/mkfs_partition_image.html" id="mkfs_partition_image-d3752e1636-link">制作分区镜像</a></div></div></li><li role="treeitem" aria-expanded="true"><div data-tocid="id-d3752e1650" class="topicref" data-id="id" data-state="expanded"><span role="button" tabindex="0" aria-labelledby="button-collapse-action id-d3752e1650-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burner_offline_lite.html" id="id-d3752e1650-link">离线烧录</a></div></div><ul role="group" class="navbar-nav nav-list"><li role="treeitem"><div data-tocid="burn_spinor-d3752e1664" class="topicref" data-id="burn_spinor" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burn_spinor.html" id="burn_spinor-d3752e1664-link">烧录 SPI NOR</a></div></div></li><li role="treeitem"><div data-tocid="burn_spinand-d3752e1678" class="topicref" data-id="burn_spinand" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burn_spinand.html" id="burn_spinand-d3752e1678-link">烧录 SPI NAND</a></div></div></li><li role="treeitem" class="active"><div data-tocid="burn_packaged_spinor-d3752e1692" class="topicref" data-id="burn_packaged_spinor" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/burnsys/burn_packaged_spinor.html" id="burn_packaged_spinor-d3752e1692-link">烧录内置 SPI NOR</a></div></div></li></ul></li><li role="treeitem" aria-expanded="false"><div data-tocid="usb_display-d3752e1706" class="topicref" data-id="usb_display" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action usb_display-d3752e1706-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/usb-display.html" id="usb_display-d3752e1706-link">USB Display 方案</a></div></div></li><li role="treeitem"><div data-tocid="backtrace-d3752e1833" class="topicref" data-id="backtrace" data-state="leaf"><span role="button" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/app/backtrace.html" id="backtrace-d3752e1833-link">Backtrace 栈回溯</a></div></div></li></ul></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e1848" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e1848-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/peripheral/peripheral-intro.html" id="id-d3752e1848-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-d3752e2022" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e2022-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/bringup/chapter-bringup.html" id="id-d3752e2022-link">BringUp</a><div class="wh-tooltip"><p class="shortdesc">主要描述板卡的各项配置,使 SDK 的环境和板卡匹配,并确保 SDK 编译后的固件能够在板子上正常运行。</p></div></div></div></li><li role="treeitem" aria-expanded="false"><div data-tocid="id-d3752e2418" class="topicref" data-id="id" data-state="not-ready"><span role="button" tabindex="0" aria-labelledby="button-expand-action id-d3752e2418-link" class="wh-expand-btn"></span><div class="title"><a href="../../../topics/sdk/chapter-advanced-app.html" id="id-d3752e2418-link">高级应用</a><div class="wh-tooltip"><p class="shortdesc">系统、存储、多媒体、接口、安全等模块的详细配置和设计说明。</p></div></div></div></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://aicdocco/taskstopics/sdk/burnsys/burn_packaged_spinor.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">烧录内置 SPI NOR</h1>
<div class="date inPage">16 May 2025</div><div style="color: gray;">
Read time: 4 minute(s)
</div>
<div class="- topic/body body">
<p class="- topic/p p" data-ofbid="d52014e28__20250519091507">针对支持合封 NOR Flash 的芯片,设备生产厂商可能希望在主控芯片焊接到板子前对于合封 NOR
进行镜像数据烧录。这种离线烧录方法,可以确保芯片在出厂前已经包含了必要的固件或应用程序。</p>
<p class="- topic/p p" data-ofbid="d52014e31__20250519091507">本节介绍如何使用外部烧录器对合封 NOR 进行离线烧录,适用于支持合封 NOR Flash 的匠心创芯片。</p>
<div class="- topic/p p" data-ofbid="d52014e34__20250519091507">使用离线烧录方式,可烧录如下内容:<ul class="- topic/ul ul" id="burn_packaged_spinor__ul_npw_cmf_cfc" data-ofbid="burn_packaged_spinor__ul_npw_cmf_cfc">
<li class="- topic/li li" data-ofbid="d52014e38__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e40__20250519091507"><a class="- topic/xref xref" href="../secure/spienc-generate-efuse-V1.html">烧录 eFuse</a></p>
</li>
<li class="- topic/li li" data-ofbid="d52014e46__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e48__20250519091507">烧录内置的 SPINOR</p>
</li>
</ul></div>
<section class="- topic/section section" id="burn_packaged_spinor__section_wf3_rmf_cfc" data-ofbid="burn_packaged_spinor__section_wf3_rmf_cfc"><h2 class="- topic/title title sectiontitle">机器烧录</h2>
<p class="- topic/p p" data-ofbid="d52014e58__20250519091507">机器烧录具有成本低、效率高、时间短等优点,但同时对烧录的量有要求,因此投资比较大,一般都和三方烧录公司合作。</p>
<p class="- topic/p p" data-ofbid="d52014e61__20250519091507">AIC 拥有合作的烧录公司,具备完整的配套工作体系和标准工作流程。由于机器烧录适合大批量生产,首次与烧录厂合作时,建议提前与 AIC 或者经销商进行充分沟通。</p>
<div class="- topic/p p" data-ofbid="d52014e64__20250519091507"><strong class="+ topic/ph hi-d/b ph b">工作原理</strong><ul class="- topic/ul ul" id="burn_packaged_spinor__ul_d2g_tkf_cfc" data-ofbid="burn_packaged_spinor__ul_d2g_tkf_cfc">
<li class="- topic/li li" data-ofbid="d52014e70__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e72__20250519091507">烧录板上配备 TF 卡槽,用于存储烧录用固件。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e76__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e78__20250519091507">烧录机器的机械臂负责完成芯片的吸取和放置操作。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e82__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e84__20250519091507">芯片准确放置到位后,烧录机器控制烧录板的 TypeC 接口上电。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e88__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e90__20250519091507">上电后,直接启动 TFCard 烧录流程。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e94__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e96__20250519091507">烧录完成后,烧录板通过一个 GPIO(PA1) 端口向烧录机器发送通知。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e101__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e103__20250519091507">烧录机器下电,吸取烧录好的芯片并放置到托盘中。</p>
</li>
</ul></div>
<div class="- topic/p p" data-ofbid="d52014e108__20250519091507">
<figure class="- topic/fig fig fignone" id="burn_packaged_spinor__fig_qvl_vkf_cfc" data-ofbid="burn_packaged_spinor__fig_qvl_vkf_cfc">
<div class="- topic/p p" data-ofbid="d52014e112__20250519091507">
<figure class="- topic/fig fig fignone" id="burn_packaged_spinor__fig_odk_2lf_cfc" data-ofbid="burn_packaged_spinor__fig_odk_2lf_cfc">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="burn_packaged_spinor__image_pdk_2lf_cfc" src="../../../images/burnsys/burn_spi_nor_with_machine.jpg" width="576"/></div><br/>
<figcaption data-caption-side="bottom" class="- topic/title title figcapcenter"><span class="figtitleprefix fig--title-label"><span class="fig--title-label-number"> 1</span><span class="fig--title-label-punctuation">. </span></span><span class="fig--title">机器烧录工作示例</span></figcaption></figure>
</div>
</figure>
</div>
</section>
<section class="- topic/section section" id="burn_packaged_spinor__section_yrx_tmf_cfc" data-ofbid="burn_packaged_spinor__section_yrx_tmf_cfc"><h2 class="- topic/title title sectiontitle">手工烧录</h2>
<p class="- topic/p p" data-ofbid="d52014e131__20250519091507">手工烧录可以作为机器烧录的补充,适用于少量芯片的烧录工作。</p>
<p class="- topic/p p" data-ofbid="d52014e134__20250519091507">AIC 提供可以进行手工烧录的电路板。</p>
<div class="- topic/p p" data-ofbid="d52014e137__20250519091507">手工烧录的工作原理如下:<ul class="- topic/ul ul" id="burn_packaged_spinor__ul_mxs_qlf_cfc" data-ofbid="burn_packaged_spinor__ul_mxs_qlf_cfc">
<li class="- topic/li li" data-ofbid="d52014e141__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e143__20250519091507">烧录板上有 TF 卡槽存储烧录用固件。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e147__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e149__20250519091507">借助工具,手工完成芯片的吸取和放置。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e153__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e155__20250519091507">合上烧录盖后上电,直接启动 TFCard 烧录流程。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e159__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e161__20250519091507">可通过串口信息或者 PA1UART RX端口判断烧录是否成功。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e165__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e167__20250519091507">烧录完成后断电,吸取烧录好的芯片并放置到托盘中,并进行下一颗芯片的烧录。</p>
</li>
</ul></div>
<div class="- topic/p p" data-ofbid="d52014e172__20250519091507">
<figure class="- topic/fig fig fignone" id="burn_packaged_spinor__fig_qj2_xmf_cfc" data-ofbid="burn_packaged_spinor__fig_qj2_xmf_cfc">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="burn_packaged_spinor__image_ymk_slf_cfc" src="../../../images/burnsys/burn_spinor_individual.jpg"/></div><br/>
<figcaption data-caption-side="bottom" class="- topic/title title figcapcenter"><span class="figtitleprefix fig--title-label"><span class="fig--title-label-number"> 2</span><span class="fig--title-label-punctuation">. </span></span><span class="fig--title">手工烧录工作示例</span></figcaption></figure>
</div>
</section>
</div>
<article class="- topic/topic topic nested1" aria-labelledby="ariaid-title2" id="topic_rrn_jyl_cfc">
<span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://aicdocco/taskstopics/sdk/burnsys/burn_packaged_spinor.dita">Edit online</a></span><h2 class="- topic/title title topictitle2" id="ariaid-title2">固件处理</h2>
<div class="- topic/body body">
<div class="- topic/p p" data-ofbid="d52014e209__20250519091507">离线烧录内置 SPINOR 的固件时,需要进行一些特殊的操作。从需求角度来看,该固件既要驱动烧录板并完成烧录,又要驱动量产板,因此需要启用双 BootLoader
功能:<ul class="- topic/ul ul" id="topic_rrn_jyl_cfc__ul_syf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__ul_syf_3yl_cfc">
<li class="- topic/li li" data-ofbid="d52014e213__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e215__20250519091507">烧录 BootLoader用于驱动烧录板完成烧录工作并通过 GPIO 等提示烧录成功。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e219__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e221__20250519091507">量产 BootLoader即客户的量产 BootLoader用于驱动客户量产板。</p>
</li>
</ul></div>
<p class="- topic/p p" data-ofbid="d52014e226__20250519091507">目前的 <span class="+ topic/ph sw-d/filepath ph filepath">image_cfg.json</span> 文件支持对这两个 BootLoader 进行配置。</p>
<section class="- topic/section section" id="topic_rrn_jyl_cfc__section_tyf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__section_tyf_3yl_cfc"><h3 class="- topic/title title sectiontitle">烧录
BootLoader</h3><p class="- topic/p p" data-ofbid="d52014e235__20250519091507"><strong class="+ topic/ph hi-d/b ph b">烧录板配置</strong></p><p class="- topic/p p" data-ofbid="d52014e238__20250519091507">烧录板的配置应遵循尽量简洁的原则,按下面步骤操作:</p><ul class="- topic/ul ul" id="topic_rrn_jyl_cfc__ul_uyf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__ul_uyf_3yl_cfc">
<li class="- topic/li li" data-ofbid="d52014e242__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e244__20250519091507">通过 bm 命令打开 BootLoader 的配置界面。</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e248__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e250__20250519091507"><span class="+ topic/ph ui-d/uicontrol ph uicontrol">Board options</span> 界面打开如下配置项,其他配置项可以关闭。</p>
<ul class="- topic/ul ul" id="topic_rrn_jyl_cfc__ul_wyf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__ul_wyf_3yl_cfc">
<li class="- topic/li li" data-ofbid="d52014e258__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e260__20250519091507">Uart0</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e264__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e266__20250519091507">Using SPI0</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e270__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e272__20250519091507">Using SDMC1</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e276__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e278__20250519091507">Using DMA</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e282__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e284__20250519091507">Using WRI</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e289__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e291__20250519091507">Using RTC</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e295__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e297__20250519091507">Using Watchdog</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e301__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e303__20250519091507">Using Efuse/SID</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e307__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e309__20250519091507">Using Syscfg: 打开</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e313__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e315__20250519091507">Using Syscfg: 同时打开 SiP Flash Enable 和 SYSCFG LDO1X enable</p>
</li>
</ul>
</li>
<li class="- topic/li li" data-ofbid="d52014e321__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e323__20250519091507"><span class="+ topic/ph ui-d/menucascade ph menucascade"><span class="+ topic/ph ui-d/uicontrol ph uicontrol">BootLoader options</span><abbr> &gt; </abbr><span class="+ topic/ph ui-d/uicontrol ph uicontrol">Upgrading</span></span> 中打开 <span class="+ topic/ph ui-d/uicontrol ph uicontrol">Upgrading by SD Card</span></p>
</li>
</ul><strong class="+ topic/ph hi-d/b ph b">GPIO 控制</strong><ul class="- topic/ul ul" id="topic_rrn_jyl_cfc__ul_w2m_pyv_hfc" data-ofbid="topic_rrn_jyl_cfc__ul_w2m_pyv_hfc">
<li class="- topic/li li" data-ofbid="d52014e343__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e345__20250519091507">PA4 为烧录成功指示灯,显示绿灯</p>
</li>
<li class="- topic/li li" data-ofbid="d52014e349__20250519091507">
<p class="- topic/p p" data-ofbid="d52014e351__20250519091507">PA5 为烧录失败指示灯,显示红灯</p>
</li>
</ul><p class="- topic/p p" data-ofbid="d52014e355__20250519091507">由于 GPIO 默认为低电平,无需进行预控制操作,直接在代码中进行逻辑处理即可。具体代码修改如下:</p><div class="- topic/p p" data-ofbid="d52014e357__20250519091507">
<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="topic_rrn_jyl_cfc__codeblock_pr1_pyl_cfc" data-ofbid="topic_rrn_jyl_cfc__codeblock_pr1_pyl_cfc">-- a/application/baremetal/bootloader/cmd/aicupg.c
+++ b/application/baremetal/bootloader/cmd/aicupg.c
@@ -<span class="hl-number">25</span>,<span class="hl-number">6</span> +<span class="hl-number">25</span>,<span class="hl-number">7</span> @@
#include &lt;hal_rtc.h&gt;
#include &lt;wdt.h&gt;
#include &lt;progress_bar.h&gt;
+#include &lt;aic_hal_gpio.h&gt;
#ifdef LPKG_CHERRYUSB_HOST
#include &lt;usbh_core.h&gt;
#endif
@@ -<span class="hl-number">499</span>,<span class="hl-number">6</span> +<span class="hl-number">500</span>,<span class="hl-number">19</span> @@ <strong class="hl-keyword">static</strong> <strong class="hl-keyword">int</strong> do_fat_upg(<strong class="hl-keyword">int</strong> intf, <strong class="hl-keyword">char</strong> *<strong class="hl-keyword">const</strong> blktype)
<strong class="hl-keyword">char</strong> protection[PROTECTION_PARTITION_LEN] = {<span class="hl-number">0</span>};
ulong actread, offset, bootlen;
<strong class="hl-keyword">char</strong> *file_buf;
+ u32 pin_ok;
+ u32 pin_fail;
+
+ pin_ok = hal_gpio_name2pin(<span class="hl-string">"PA.4"</span>);
+ hal_gpio_set_func(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok), <span class="hl-number">1</span>);
+ hal_gpio_direction_output(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok));
+ hal_gpio_set_value(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok), <span class="hl-number">0</span>);
+
+ pin_fail = hal_gpio_name2pin(<span class="hl-string">"PA.5"</span>);
+ hal_gpio_set_func(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), <span class="hl-number">1</span>);
+ hal_gpio_direction_output(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail));
+ hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), <span class="hl-number">0</span>);
+
<strong class="hl-keyword">if</strong> (!strcmp(blktype, <span class="hl-string">"udisk"</span>)) {
<em class="hl-comment">/*usb init*/</em>
@@ -<span class="hl-number">524</span>,<span class="hl-number">18</span> +<span class="hl-number">538</span>,<span class="hl-number">21</span> @@ <strong class="hl-keyword">static</strong> <strong class="hl-keyword">int</strong> do_fat_upg(<strong class="hl-keyword">int</strong> intf, <strong class="hl-keyword">char</strong> *<strong class="hl-keyword">const</strong> blktype)
ret = mmc_init(intf);
<strong class="hl-keyword">if</strong> (ret) {
printf(<span class="hl-string">"sdmc %d init failed.\n"</span>, intf);
+ hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), <span class="hl-number">1</span>);
<strong class="hl-keyword">return</strong> ret;
}
ret = aic_fat_set_blk_dev(intf, BLK_DEV_TYPE_MMC);
<strong class="hl-keyword">if</strong> (ret) {
pr_err(<span class="hl-string">"set blk dev failed.\n"</span>);
+ hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), <span class="hl-number">1</span>);
<strong class="hl-keyword">return</strong> ret;
}
#<strong class="hl-keyword">else</strong>
pr_err(<span class="hl-string">"sdcard upgrade disabled.\n"</span>);
#endif
} <strong class="hl-keyword">else</strong> {
+ hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), <span class="hl-number">1</span>);
<strong class="hl-keyword">return</strong> ret;
}
@@ -<span class="hl-number">575</span>,<span class="hl-number">6</span> +<span class="hl-number">592</span>,<span class="hl-number">9</span> @@ <strong class="hl-keyword">static</strong> <strong class="hl-keyword">int</strong> do_fat_upg(<strong class="hl-keyword">int</strong> intf, <strong class="hl-keyword">char</strong> *<strong class="hl-keyword">const</strong> blktype)
printf(<span class="hl-string">"\nPlug-out SDCard/UDISK to reboot device.\n"</span>);
printf(<span class="hl-string">" CTRL+C exit to command line.\n"</span>);
+ <em class="hl-comment">/* Config PA1 output high level */</em>
+ hal_gpio_set_value(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok), <span class="hl-number">1</span>);
+
<em class="hl-comment">/* Reboot when SDCard/UDISK plug-out */</em>
<strong class="hl-keyword">while</strong> (<span class="hl-number">1</span>) {
<em class="hl-comment">/* If failed to read data, reboot */</em>
@@ -<span class="hl-number">595</span>,<span class="hl-number">6</span> +<span class="hl-number">615</span>,<span class="hl-number">7</span> @@ <strong class="hl-keyword">static</strong> <strong class="hl-keyword">int</strong> do_fat_upg(<strong class="hl-keyword">int</strong> intf, <strong class="hl-keyword">char</strong> *<strong class="hl-keyword">const</strong> blktype)
}
err:
+ hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), <span class="hl-number">1</span>);
<strong class="hl-keyword">if</strong> (file_buf)
aicos_free_align(<span class="hl-number">0</span>, file_buf);
#endif</pre>
</div><p class="- topic/p p" data-ofbid="d52014e362__20250519091507"><strong class="+ topic/ph hi-d/b ph b">BootLoader 准备</strong></p><div class="- topic/p p" data-ofbid="d52014e365__20250519091507">完成上述代码修改后,需对 BootLoader 进行编译。编译后的 BootLoader
将作为开发板专用的烧录 BootLoader放置到工程的 pack 目录中进行单独管理,具体操作如下:<ul class="- topic/ul ul" id="topic_rrn_jyl_cfc__ul_czf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__ul_czf_3yl_cfc">
<li class="- topic/li li" data-ofbid="d52014e369__20250519091507">
<div class="- topic/p p" data-ofbid="d52014e371__20250519091507"><span class="+ topic/ph sw-d/filepath ph filepath">output/开发板_rt-thread_helloworld/images/</span>
目录下,手动将 <span class="+ topic/ph sw-d/filepath ph filepath">BootLoader.aic</span> 备份为
<span class="+ topic/ph sw-d/filepath ph filepath">BootLoader-updater.aic</span><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="topic_rrn_jyl_cfc__codeblock_iny_ls1_3fc" data-ofbid="topic_rrn_jyl_cfc__codeblock_iny_ls1_3fc">cp output/g73x_scan_rt-thread_helloworld/images/bootloader.aic target/g73x/scan/pack/bootloader-updater.aic</pre></div>
</li>
<li class="- topic/li li" data-ofbid="d52014e386__20250519091507">
<div class="- topic/p p" data-ofbid="d52014e388__20250519091507"><span class="+ topic/ph sw-d/filepath ph filepath">target/soc/开发板/pack/image_cfg.json</span> 文件中,将烧录使用的
bootloader 指定为
<span class="+ topic/ph sw-d/filepath ph filepath">BootLoader-updater.aic具体修改如下</span><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="topic_rrn_jyl_cfc__codeblock_spm_ms1_3fc" data-ofbid="topic_rrn_jyl_cfc__codeblock_spm_ms1_3fc">--- a/target/g73x/scan/pack/image_cfg.json
+++ b/target/g73x/scan/pack/image_cfg.json
@@ -<span class="hl-number">20</span>,<span class="hl-number">7</span> +<span class="hl-number">20</span>,<span class="hl-number">7</span> @@
},
<span class="hl-string">"updater"</span>: { <em class="hl-comment">// Image writer which is downloaded to RAM by USB</em>
<span class="hl-string">"spl"</span>: {
- <span class="hl-string">"file"</span>: <span class="hl-string">"bootloader.aic"</span>,
+ <span class="hl-string">"file"</span>: <span class="hl-string">"bootloader-updater.aic"</span>,
<span class="hl-string">"attr"</span>: [<span class="hl-string">"required"</span>, <span class="hl-string">"run"</span>],
<span class="hl-string">"ram"</span>: <span class="hl-string">"0x30100000"</span>
},</pre></div>
</li>
</ul></div><div class="- topic/note note note note_note" id="topic_rrn_jyl_cfc__note_rsc_vyl_cfc" data-ofbid="topic_rrn_jyl_cfc__note_rsc_vyl_cfc"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d52014e402__20250519091507">烧录 BootLoader 的分区配置 (<span class="+ topic/ph sw-d/filepath ph filepath">image_cfg.json</span>) 必须使用量产分区。</p>
</div></section>
<section class="- topic/section section" id="topic_rrn_jyl_cfc__section_dzf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__section_dzf_3yl_cfc"><h3 class="- topic/title title sectiontitle">量产 BootLoader</h3>
<p class="- topic/p p" data-ofbid="d52014e414__20250519091507">将 BootLoader 的配置文件回退到量产固件配置后,重新编译固件,即可完成量产 BootLoader 的设置。</p>
</section>
<section class="- topic/section section" id="topic_rrn_jyl_cfc__section_ezf_3yl_cfc" data-ofbid="topic_rrn_jyl_cfc__section_ezf_3yl_cfc"><h3 class="- topic/title title sectiontitle">量产固件</h3>
<p class="- topic/p p" data-ofbid="d52014e423__20250519091507">经过上述配置,量产固件已成功配置了两个 BootLoader。对于其他部分如 OS按照常规方式维护和编译即可无需额外配置。</p>
</section>
</div>
</article>
</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="#burn_packaged_spinor__section_wf3_rmf_cfc" data-tocid="burn_packaged_spinor__section_wf3_rmf_cfc">机器烧录</a></div></li><li class="section-item"><div class="section-title"><a href="#burn_packaged_spinor__section_yrx_tmf_cfc" data-tocid="burn_packaged_spinor__section_yrx_tmf_cfc">手工烧录</a></div></li><li class="topic-item"><a href="#topic_rrn_jyl_cfc" data-tocid="topic_rrn_jyl_cfc">固件处理</a><ul><li class="section-item"><div class="section-title"><a href="#topic_rrn_jyl_cfc__section_tyf_3yl_cfc" data-tocid="topic_rrn_jyl_cfc__section_tyf_3yl_cfc">烧录
BootLoader</a></div></li><li class="section-item"><div class="section-title"><a href="#topic_rrn_jyl_cfc__section_dzf_3yl_cfc" data-tocid="topic_rrn_jyl_cfc__section_dzf_3yl_cfc">量产 BootLoader</a></div></li><li class="section-item"><div class="section-title"><a href="#topic_rrn_jyl_cfc__section_ezf_3yl_cfc" data-tocid="topic_rrn_jyl_cfc__section_ezf_3yl_cfc">量产固件</a></div></li></ul></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-2025 广东匠芯创科技有限公司. All rights reserved.</p>
</div>
<div>
<div class="generation_time">
Update Time: 2025-05-19
</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>