烧录与量产工具
本文档介绍 fw-AW31N_BLE_SDK 固件的烧录与量产工具链,涵盖 USB 升级工具(isd_download.exe)、生产烧写工具、无线测试盒、首次烧录流程、OTA 升级方式以及相关配置,帮助开发者与产线工程师将编译生成的固件可靠地写入 AW31N 目标芯片。
Purpose and Scope
本页面聚焦于 AW31N BLE SDK 的固件烧录与量产环节,包括:
- 官方烧录/量产工具的种类、用途与获取方式(USB 升级工具、生产烧写工具、无线测试盒)
- 首次烧录的完整操作流程与编程模式进入方式
- 固件烧录相关目录(
apps/app/post_build/bd**/)与 INI 下载配置 - OTA(空中升级)与烧录(有线下载)两条升级路径的边界与关系
- 升级模块配置(
lib_update_config.c)对烧录/升级行为的影响
以下主题不在本页面范围内,由其他目录页分别覆盖:
- 固件编译流程与 Code::Blocks/Makefile 构建 → 参见「编译指南」
- 蓝牙 OTA 升级协议与单/双备份机制细节 → 参见「OTA 升级」相关文档
- 应用工程与板级配置 → 参见「配置说明」
Overview
AW31N BLE SDK 的交付物是可编译的工程源码,编译产物为 .hex 格式固件。要将该固件运行到目标硬件上,必须经过**烧录(Flashing)环节;而在产品量产阶段,还需要量产烧写(Mass Production)与产线测试(RF 标定/空中升级)**支持。
SDK 围绕两条升级/烧录路径组织工具链:
- 有线烧录路径:通过 USB/UART 连接 PC 与目标板,使用 USB 升级工具(
isd_download.exe)将.hex固件写入芯片。适用于开发调试与首片烧录。 - 量产烧录路径:使用生产烧写工具对裸片/裸板进行批量编程,使用无线测试盒完成空中升级、射频标定与产品功能测试,适用于产线场景。
两者共享同一套固件产物(.hex)与下载配置(isd_config_ini.c),其设计意图是:开发阶段用最简单的工具快速迭代,量产阶段用专用工具保证吞吐率与一致性,同时通过统一的配置格式(INI)降低两种场景之间的切换成本。
SDK 还内置了 update/ 固件升级处理模块与 lib_update_config.c 升级模块配置,支持单备份和双备份蓝牙 OTA 升级,使量产后的设备可以在不拆机的情况下通过空中升级维护固件。
Architecture
下图展示了从固件编译产物到目标芯片的烧录与量产工具整体架构:
flowchart TD
subgraph sg_Build["构建产物"]
HEX[".hex 固件文件"]
end
subgraph sg_Tools["烧录与量产工具链"]
ISD["USB 升级工具<br/>isd_download.exe"]
BURNER["生产烧写工具<br/>量产/裸片烧写"]
TESTBOX["无线测试盒<br/>空中升级/射频标定/产品测试"]
end
subgraph sg_Config["下载配置"]
INI["isd_config_ini.c<br/>INI 下载脚本配置"]
UPDATE_CFG["lib_update_config.c<br/>升级模块配置"]
end
subgraph sg_Device["目标设备"]
DEV["AW31N 目标板"]
OTA["OTA 升级模块<br/>单备份/双备份"]
end
HEX -->|"选择固件"| ISD
HEX -->|"批量编程"| BURNER
HEX -->|"空中升级"| TESTBOX
INI -->|"配置下载行为"| ISD
INI -->|"配置下载行为"| BURNER
UPDATE_CFG -->|"裁剪升级功能"| OTA
ISD -->|"USB/UART 烧录"| DEV
BURNER -->|"批量烧写"| DEV
TESTBOX -->|"OTA 空中升级"| OTA
OTA --> DEV
各组件职责说明:
- USB 升级工具(isd_download.exe):开发调试阶段的主力工具,通过 USB 或 UART 将
.hex固件写入目标板。使用时要求目标板先进入编程模式(见「首次烧录流程」)。 - 生产烧写工具:面向产线的批量烧写工具,支持裸片(bare die)编程,是量产阶段把固件写入芯片的关键环节。
- 无线测试盒:产线测试设备,提供空中升级、射频标定与产品功能测试能力,将烧录与测试合并在产线工位上。
- isd_config_ini.c:下载脚本的 INI 配置,控制下载工具的烧录行为,是连接工具与固件产物的配置纽带。
- lib_update_config.c:升级模块的裁剪配置,决定固件中是否编译/启用 OTA 升级能力,直接影响双备份升级策略的可用性。
架构设计意图:将工具(GUI/可执行程序)、**配置(源码内 INI/裁剪项)与目标固件(.hex)**解耦,开发者只需改动配置即可适配不同芯片平台(bd**/ 目录按平台区分),产线无需改动源码即可通过工具完成批量操作。
烧录工具详解
USB 升级工具(isd_download.exe)
USB 升级工具是 SDK 开发流程中最常用的烧录工具,负责将编译生成的 .hex 固件通过 USB 或 UART 写入目标板。它在 SDK 目录中的位置与配套文件如下:
| 文件/目录 | 作用 |
|---|---|
isd_download.exe | USB 升级工具主程序 |
download.bat | 一键下载批处理脚本(封装工具调用) |
fw_add.exe | 固件附加处理工具(如追加升级信息/校验) |
flash/isd_config_ini.c | 下载脚本的 INI 配置 |
Source: README.md(
apps/app/post_build/bd**/目录说明)
设计意图:将工具与脚本统一放在 post_build 目录下,是因为烧录发生在编译(build)之后,工具与构建产物的生命周期天然相邻;bd** 按芯片平台划分目录,保证不同平台的下载参数(地址、速度、配置)互不干扰。
生产烧写工具(量产/裸片烧写)
生产烧写工具面向量产场景,与 USB 升级工具的核心区别在于:
- 批量:支持一拖二(1tuo2)等并行烧写模式,提升产线吞吐率
- 裸片支持:可直接对未封装/未贴片的裸片(bare die)编程,适用于芯片出厂前烧录
- 配置复用:同样读取
isd_config_ini.c的 INI 配置,保证开发与量产烧录参数一致
无线测试盒
无线测试盒将产线中的三类操作合并到一台设备:
- 空中升级:通过 BLE 无线通道对已贴片设备进行固件升级(与 OTA 模块配合)
- 射频标定:对芯片射频参数进行校准,保证量产一致性
- 产品测试:执行产线功能测试项,实现烧录→测试一体化
首次烧录流程
README 第 8.1 节给出了完整的首次烧录步骤,这是所有开发者的必经路径:
1. 连接硬件:将开发板通过 USB 或 UART 连接到 PC
2. 进入编程模式:按住开发板上的烧录按键,然后复位或重新上电
3. 打开 USB 升级工具:启动 isd_download.exe
4. 选择固件:选择编译生成的 .hex 文件
5. 开始烧录:点击下载按钮,等待烧录完成
Source: README.md
其中编程模式是关键前提:AW31N 芯片在正常启动后运行应用固件,无法被下载工具直接写入;只有在上电/复位瞬间按住烧录按键,芯片才会进入 Bootloader 下载模式,等待 PC 端工具通过 USB/UART 发送固件数据。
烧录前置条件
- 工具已正确安装(USB 升级工具需向官方申请)
- 开发板通过 USB 或 UART 与 PC 建立物理连接
- 目标板已进入编程模式(烧录按键 + 复位/重新上电)
- 已编译生成
.hex固件文件(编译方式见「编译指南」页面)
烧录注意事项
README 明确提示:烧录前请确保 USB 升级工具正确连接且目标板已进入编程模式。若未进入编程模式,工具将无法枚举到目标设备或下载失败;若连接不稳定,烧录过程中断可能导致固件写入不完整。
核心烧录流程图
flowchart TD
Start([开始]) --> Connect["连接开发板到 PC<br/>USB 或 UART"]
Connect --> Boot{"进入编程模式?<br/>按住烧录按键 + 复位/上电"}
Boot -->|"否"| Retry["重新执行进入编程模式操作"]
Retry --> Boot
Boot -->|"是"| Open["启动 isd_download.exe"]
Open --> Select["选择编译生成的 .hex 固件"]
Select --> Download["点击下载按钮开始烧录"]
Download --> Check{"烧录完成?"}
Check -->|"是"| Success(["设备正常运行固件"])
Check -->|"否"| Fail["检查连接与编程模式<br/>重新烧录"]
Fail --> Boot
该流程图反映了 README 第 8.1 节描述的实际控制流:硬件连接与编程模式是前置条件,工具操作是三个连续步骤(打开 → 选择固件 → 点击下载),任何一步失败都回到编程模式检查环节,形成闭合的排错循环。
OTA 升级(空中升级)
除有线烧录外,SDK 支持蓝牙 OTA 升级,包括单备份和双备份两种模式,相关细节见 README 8.2 节:
支持单备份和双备份蓝牙 OTA 升级,详见:OTA 开发文档
Source: README.md
单备份与双备份
- 单备份:芯片内仅保存一份应用固件,OTA 升级时直接覆盖。实现简单、占用 flash 少,但升级失败可能造成设备无法启动(需要重新烧录恢复)。
- 双备份:芯片内保留当前固件 + 新固件两份,升级完成后切换启动。升级失败可回滚到旧固件,可靠性高,适合量产设备远程维护。
设计意图:两种模式的取舍本质是 flash 容量与可靠性之间的权衡。开发/小批量场景常用单备份节省空间;量产产品建议双备份以降低售后风险。具体启用哪种模式由 lib_update_config.c 升级模块配置控制(见「配置选项」节)。
配置选项
下载脚本配置(isd_config_ini.c)
下载脚本的 INI 配置位于 apps/app/post_build/bd**/flash/isd_config_ini.c,控制 USB 升级工具与生产烧写工具的下载行为。README 将其指向官方「下载脚本配置文档」:
详细的 INI 配置(apps/app/post_build/bd**/flash/isd_config_ini.c)说明请参考:下载脚本配置文档
Source: README.md
| 配置项(示意) | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 下载接口 | string | USB/UART | 工具与目标板的物理连接方式 |
| 固件路径 | string | 编译输出目录 | .hex 固件的查找路径 |
| 芯片平台参数 | string | 对应 bd** 平台 | 烧录地址、时钟、接口参数等 |
| 烧录校验 | bool | 开启 | 烧录完成后是否校验固件完整性 |
注:由于该文件为源码内配置且具体字段随芯片平台变化,表中为基于 README 描述归纳的配置维度;完整字段清单以官方「下载脚本配置文档」与仓库内
bd**/flash/实际文件为准。
升级模块配置(lib_update_config.c)
lib_update_config.c 位于应用工程的 config/ 目录下,用于裁剪升级模块功能,直接影响固件是否包含 OTA 升级能力:
apps/demo/hid/config/
├── lib_update_config.c # 升级模块配置
└── ...
Source: README.md
| 配置维度 | 说明 |
|---|---|
| OTA 升级使能 | 是否编译升级模块,关闭可减小固件体积 |
| 单/双备份选择 | 决定升级时是否保留可回滚的旧固件 |
| 升级传输通道 | BLE 空中通道参数(与无线测试盒配合) |
使用示例
示例一:安装烧录工具清单
README 第 3.3 节给出了烧录/量产工具的完整清单与获取方式:
| 工具 | 用途 | 获取方式 |
|------|------|---------|
| **USB 升级工具** | 将固件烧录到目标板 | 申请链接 · 使用文档 |
| **生产烧写工具** | 量产/裸片烧写 | 使用文档 |
| **无线测试盒** | 空中升级/射频标定/产品测试 | 申请链接 · 使用文档 |
Source: README.md
解读:三款工具覆盖了「开发烧录 → 量产烧写 → 产线测试」的完整生命周期。USB 升级工具需要申请(淘宝链接),生产烧写工具与无线测试盒同样需通过官方渠道获取,说明该工具链并非开源交付,而是杰理(Jieli)官方的闭源产线工具。
示例二:编译并烧录的完整命令流
# 1. 进入对应的板级目录
cd apps/demo/hid/board/bd47/
# 2. 双击打开 .cbp 工程文件(如 AW31N_hid.cbp)
# 3. 在 Code::Blocks 中点击 Build → Build (Ctrl+F9)
# 4. 编译成功后,使用 USB 升级工具烧录生成的 .hex 文件
Source: README.md
设计意图:烧录与编译在流程上紧耦合——先构建生成 .hex,再通过工具烧录。post_build 目录名也暗示了这一点:下载工具与构建脚本放在一起,方便开发者在同一目录完成「编译 → 烧录」闭环。
失败模式与边缘情况
基于 README 与目录结构,烧录/量产环节存在以下典型失败模式:
| 失败场景 | 表现 | 处理方式 |
|---|---|---|
| 未进入编程模式 | 工具无法识别设备 / 下载失败 | 重新按住烧录按键并复位/重新上电(README 8.1 明确提示) |
| USB/UART 连接不稳定 | 烧录中断、固件写入不完整 | 检查线缆与端口,重新烧录 |
| 工具未正确安装 | 启动 isd_download.exe 失败 | 按 README 3.3 重新申请/安装工具 |
| 固件文件缺失 | 工具无法选择 .hex | 回到编译环节重新构建 |
| 单备份 OTA 升级失败 | 设备无法启动,需有线恢复 | 量产设备建议使用双备份模式 |
边缘情况说明:
- 首次烧录(First Flash)与 OTA 升级的边界:首次烧录必须走有线路径(芯片内无可用固件),OTA 只适用于已烧录成功的设备——这也是工具链必须保留
isd_download.exe的原因。 - 量产烧写的裸片场景:生产烧写工具支持裸片编程,此时无板级烧录按键,进入编程模式由烧写夹具自动完成,与开发板的手动操作路径不同。
性能与运维注意事项
- 产线吞吐率:生产烧写工具支持一拖二(
burner_1tuo2文档路径暗示并行烧写)等批量模式,是产线效率的关键;USB 升级工具面向单板调试,不承担批量任务。 - 烧录校验:烧录完成后建议保持校验开启,避免不良固件流入下一工序。
- 升级可靠性:量产产品建议启用双备份 OTA,降低远程升级失败导致的返修成本;同时通过
lib_update_config.c裁剪非必要升级功能以控制固件体积。 - 环境一致性:开发与量产应使用同一份
isd_config_ini.c配置,避免参数漂移导致的烧录差异。
扩展点
- 新增芯片平台:在
apps/app/post_build/下新增对应bd**/目录,携带该平台的download.bat、fw_add.exe、isd_download.exe与flash/isd_config_ini.c配置,即可复用既有烧录流程。 - 定制下载脚本:通过修改
download.bat与isd_config_ini.c,可将烧录动作集成进 CI/产线自动化系统。 - 升级策略选择:通过
config/lib_update_config.c配置单/双备份升级策略,无需改动工具即可适配不同产品的可靠性要求。
Related Links
官方工具文档(外部)
- USB 升级工具使用文档(强制升级) — isd_download.exe 的详细使用方法
- 生产烧写工具使用文档(一拖二) — 量产/裸片烧写说明
- 无线测试盒使用文档(一拖二) — 空中升级/射频标定/产品测试说明
- 下载脚本配置文档 — isd_config_ini.c INI 配置详解
- OTA 开发文档 — 单备份/双备份蓝牙 OTA 升级机制
仓库内源文件
- README.md(烧录工具安装 §3.3) — 工具清单与获取方式
- README.md(编译并烧录 §4.4) — 编译到烧录的命令流
- README.md(关键目录 §5.1) — post_build 烧录工具目录说明
- README.md(烧录与升级 §8) — 首次烧录流程与 OTA 升级
- README.md(功能裁剪配置 §9.1) — lib_update_config.c 升级模块配置
相关目录页
- 编译指南 — 如何生成可烧录的
.hex固件(Code::Blocks / Makefile) - 配置说明 — 板级配置与功能裁剪(含
lib_update_config.c的完整说明) - 应用开发 — 目标固件的功能来源(transfer/hid 应用工程)