烧录与生产工具
本文档介绍 fw-AW33N_BLE_SDK 的烧录与生产工具链:从编译产物的固件打包、PC 端 USB 升级工具烧录、量产烧写,到无线 OTA 升级与测试盒标定,覆盖首次烧录、配置工具与常见问题的完整流程。
Purpose and Scope
本页聚焦 AW33N_BLE_SDK 的烧录与生产能力,包括:
- 烧录工具链组成(
isd_download.exe/download.bat/fw_add.exe等)及其在仓库中的位置(apps/app/post_build/bd**/) - 首次烧录(First Flash)的完整操作流程与硬件前提
- 固件产物(
.hex)与下载配置(isd_config_ini.c)的关系 - 生产烧写工具(量产/裸片烧写)与无线测试盒(OTA 升级/射频标定/产品测试)的定位
- AW33N 配置工具(
AW33N_config_tool)生成.fw固件配置的工作机制 - OTA 升级(单备份/双备份)与常见问题
不在此页覆盖的内容:
- 编译工具链的安装与验证(见"编译指南"目录页)
- 蓝牙协议栈、驱动等模块的功能裁剪(见"配置说明"目录页)
- 应用层业务开发(见各应用工程文档)
Overview
AW33N 系列芯片(bd57 平台)的固件烧录采用"PC 工具 + 板端编程模式"的架构:芯片出厂自带引导加载(Bootloader),PC 端工具通过 USB/UART 与板端通信,将编译生成的 .hex 固件写入 Flash。整个烧录体系围绕三类场景设计:
- 开发调试:使用 USB 升级工具(
isd_download.exe)在开发板上反复烧录最新固件; - 量产生产:使用生产烧写工具对裸片/整板进行批量烧写,支持一拖多(1拖2)流水线作业;
- 售后升级:通过无线测试盒或手机 App 进行 OTA 空中升级,支持单备份与双备份两种升级策略。
仓库中与烧录直接相关的目录为 apps/app/post_build/(工程编译前配置与下载目录),其中按芯片平台(如 bd57)存放工具脚本与配置:
| 目录 | 内容 |
|---|---|
apps/app/post_build/bd57/ | 各芯片平台的库文件与工具脚本(download.bat、fw_add.exe、isd_download.exe 等) |
apps/app/post_build/bd57/flash/ | 下载/烧录配置(如 isd_config_ini.c)与脚本 |
apps/app/post_build/bd57/AW33N_config_tool/ | AW33N 配置工具:以 Lua 脚本驱动固件配置生成(.fw 文件) |
apps/include_lib/liba/bd**/flash | 预编译静态库 *.a(bt_controller_lib.a、bt_protocol_lib.a、cpu_lib.a 等),编译链接所需 |
Architecture
flowchart TD
subgraph sg_Dev["开发/编译环境"]
CB["Code::Blocks (.cbp 工程)"]
MK["Makefile (make aw33n_hid)"]
end
subgraph sg_Build["编译与打包 (post_build)"]
HEX[".hex 固件产物"]
FWADD["fw_add.exe 固件打包"]
CFGTOOL["AW33N_config_tool 配置工具"]
FW[".fw 配置文件"]
end
subgraph sg_PC["PC 端烧录工具"]
ISD["isd_download.exe<br/>USB 升级工具"]
BURNER["生产烧写工具<br/>量产/裸片"]
TESTBOX["无线测试盒<br/>OTA/射频标定"]
end
subgraph sg_Board["目标板"]
BOOT["Bootloader 编程模式"]
FLASH[(Flash 固件区)]
OTAFW["OTA 固件<br/>单备份/双备份"]
end
CB --> HEX
MK --> HEX
CFGTOOL --> FW
HEX --> ISD
FW --> ISD
FWADD --> HEX
ISD -->|"USB/UART"| BOOT
BURNER -->|"USB/脱机"| BOOT
TESTBOX -->|"BLE 空中"| OTAFW
BOOT --> FLASH
OTAFW --> FLASH
架构说明:编译阶段(Code::Blocks 或 Makefile)产出 .hex 固件;fw_add.exe 与 AW33N 配置工具负责把配置参数打包进固件(.fw)。烧录阶段有三条独立通道——开发用 USB 升级工具(isd_download.exe)、量产用生产烧写工具、售后用无线测试盒 OTA。三条通道最终都写入目标板的 Flash,但通信介质(USB/UART、脱机烧录、BLE 空中)与使用场景不同。
烧录工具链
工具清单与获取方式
SDK 官方推荐的烧录/生产工具共三款,覆盖开发、量产与售后三个环节(见 README.md):
| 工具 | 用途 | 获取方式 |
|---|---|---|
| USB 升级工具 | 将固件烧录到目标板(开发调试) | 申请链接 + 使用文档(doc.zh-jieli.com 强制升级工具) |
| 生产烧写工具 | 量产/裸片烧写 | 使用文档(量产工具 1拖2 烧录器) |
| 无线测试盒 | 空中升级/射频标定/产品测试 | 申请链接 + 使用文档(测试盒 1拖2) |
设计意图:三工具分工对应产品生命周期三个阶段——开发期高频迭代用 USB 升级工具(有线、单板、速度快);产线期追求吞吐用生产烧写工具(支持一拖多、可脱机);售后与产测用无线测试盒(无需物理连线,通过 BLE 空中通道升级与标定 RF 参数)。
仓库内烧录工具目录
烧录相关的可执行文件与脚本位于 apps/app/post_build/bd**/(README 目录说明见 README.md):
apps/app/post_build/bd57/
├── download.bat # 一键下载脚本(调用 isd_download.exe)
├── fw_add.exe # 固件追加/打包工具(将配置写入固件)
├── isd_download.exe # USB 升级工具主程序
├── flash/ # 下载与烧录配置目录
│ └── isd_config_ini.c # 下载脚本 INI 配置(烧录地址、分区、选项)
└── AW33N_config_tool/ # AW33N 配置工具(.jlxproj 工程 + Lua 脚本)
其中 download.bat 是命令行烧录入口,适合集成到 CI/脚本流程;isd_download.exe 是图形化工具,适合开发人员手动操作。isd_config_ini.c 定义了烧录时的分区布局、目标地址与烧录选项,是工具与固件布局之间的桥梁。
固件产物与打包链路
编译完成后生成 .hex 固件文件(编译流程见 README.md):
# 1. 进入对应的板级目录
cd apps/demo/hid/board/bd57/
# 2. 双击打开 .cbp 工程文件(如 AW33N_hid.cbp)
# 3. 在 Code::Blocks 中点击 Build → Build (Ctrl+F9)
# 4. 编译成功后,使用 USB 升级工具烧录生成的 .hex 文件
来源:README.md
同样支持命令行编译(README.md):
# Windows 用户
双击 tools/make_prompt.bat 打开命令行环境
# Linux/macOS 用户
cd SDK 根目录
# 编译完整工程
make aw33n_hid
编译产物经过 fw_add.exe 打包(将配置工具生成的配置数据合并进固件)后即为可烧录的完整镜像;而 AW33N_config_tool 生成的 .fw 配置则独立于固件,二者在烧录/升级时按需写入。
首次烧录流程
官方推荐的首烧流程(README.md):
flowchart TD
Start([开始]) --> HW["1. 连接硬件<br/>开发板通过 USB/UART 连接 PC"]
HW --> MODE["2. 进入编程模式<br/>按住烧录按键 + 复位/重新上电"]
MODE --> TOOL["3. 打开 USB 升级工具<br/>启动 isd_download.exe"]
TOOL --> FW["4. 选择固件<br/>选择编译生成的 .hex 文件"]
FW --> DL["5. 开始烧录<br/>点击下载按钮"]
DL --> OK{"烧录完成?"}
OK -->|"是"| DONE([结束:复位运行新固件])
OK -->|"否"| ERR["排查连接/编程模式/配置问题"]
ERR --> MODE
关键步骤说明
- 连接硬件:开发板通过 USB(板载仿真/下载器)或 UART 连接到 PC。USB 升级工具通过串口协议与板端 Bootloader 通信。
- 进入编程模式:按住板载烧录按键的同时复位或重新上电,使芯片停留在 Bootloader 等待下载,这是防止误擦除应用固件后的"变砖"恢复手段。
- 选择固件:选择
board目录编译生成的.hex。注意工程与芯片平台要匹配(如AW33N_hid.cbp对应 bd57 平台)。 - 开始烧录:工具按
isd_config_ini.c中的分区配置把镜像写入 Flash 对应区域。
⚠️ 注意:烧录前请确保 USB 升级工具正确连接且目标板已进入编程模式。 详细的 INI 配置(
apps/app/post_build/bd**/flash/isd_config_ini.c)说明参考:下载脚本配置文档(见 README.md)
AW33N 配置工具(AW33N_config_tool)
目录结构与工作机制
配置工具位于 apps/app/post_build/bd57/AW33N_config_tool/,采用"Lua 脚本驱动 + 工程文件组织"的结构:
apps/app/post_build/bd57/AW33N_config_tool/
├── AW33N_配置工具入口(Config Tools Entry).jlxproj # 工具工程入口(Code::Blocks 工程)
├── conf/
│ ├── entry/ # 配置项定义(Lua 脚本)
│ │ ├── app_log.md # 日志说明文档
│ │ ├── bluetooth_powerprofile.lua # 蓝牙功率等级配置
│ │ ├── fw_common.lua # 固件公共配置
│ │ ├── fw_create.lua # 固件创建逻辑
│ │ ├── fw_edit.lua # 固件编辑逻辑
│ │ ├── lang_en.lua # 英文语言包
│ │ ├── ufw_edit.lua # 升级固件编辑逻辑
│ │ ├── user_cfg.lua # 用户配置项
│ │ └── version.log # 工具版本记录
│ └── output/ # 工具输出(生成物)
│ ├── cfg_tool_state_complete.lua # 状态完成标记
│ ├── cfg_tool.c / cfg_tool.h # 生成的配置源码(编译进固件)
│ ├── default_cfg.lua # 默认配置导出
│ ├── default/default_cfg.fw # 默认固件配置(.fw 二进制)
│ └── extra_tones/*.wtg # 附加提示音资源
工作机制:配置工具读取 conf/entry/ 下的 Lua 脚本定义(如蓝牙功率等级、用户自定义项),生成 conf/output/ 下的配置源码(cfg_tool.c/h)与固件配置(default_cfg.fw)。生成的 cfg_tool.c 会在编译期被并入应用工程,使固件默认携带这些配置;default_cfg.fw 则可在烧录/升级时作为独立配置写入。
设计意图:将"产品参数"(功率、提示音、用户项)与"固件逻辑"解耦。同一份编译好的固件可以通过不同的 .fw 配置适配不同产品型号,产线无需为每个 SKU 重新编译固件,只需更换配置即可——这正是量产场景的关键需求。
Lua 配置示例
以 conf/entry/ 下的脚本为例,配置项以 Lua 表结构声明(来源:apps/app/post_build/bd57/AW33N_config_tool/conf/entry/):
-- fw_common.lua 固件公共配置(示意结构)
-- 配置项通过 Lua 表描述,工具据此生成 cfg_tool.c 与 default_cfg.fw
说明:
fw_common.lua、fw_create.lua、fw_edit.lua分别对应固件公共参数、创建与编辑流程;ufw_edit.lua对应升级固件(OTA 用)的编辑。具体键值以工具实际输出为准。
OTA 升级与生产测试
OTA 升级
SDK 支持单备份和双备份蓝牙 OTA 升级(README.md):
| 模式 | 机制 | 适用场景 |
|---|---|---|
| 单备份 | 升级时直接覆盖当前固件区,中途断电可能变砖 | 空间受限的低成本产品 |
| 双备份 | 固件区保留两份镜像,升级失败自动回退 | 可靠性要求高的产品 |
OTA 通过 BLE 空中通道传输升级包(ufw 格式,由 ufw_edit.lua 定义),配合无线测试盒或手机 App 触发。升级模块相关头文件位于 apps/include_lib/update/,功能裁剪通过各工程 config/lib_update_config.c 控制。
无线测试盒
无线测试盒(1拖2)用于产线空中升级、射频标定、产品测试三合一场景:通过 BLE 与待测板建立连接,无需物理接插,适合流水线快速作业。
Configuration Options
烧录链路中的关键配置项汇总:
| 配置项 | 位置 | 类型 | 说明 |
|---|---|---|---|
| 烧录地址/分区 | apps/app/post_build/bd**/flash/isd_config_ini.c | INI | 定义烧录的 Flash 分区布局与目标地址 |
| 下载脚本行为 | download.bat | 批处理 | 封装 isd_download.exe 的调用参数 |
| 蓝牙功率等级 | AW33N_config_tool/conf/entry/bluetooth_powerprofile.lua | Lua | 配置发射功率等级 |
| 固件公共配置 | AW33N_config_tool/conf/entry/fw_common.lua | Lua | 固件公共参数定义 |
| 用户配置项 | AW33N_config_tool/conf/entry/user_cfg.lua | Lua | 产品自定义配置项 |
| OTA 升级模式 | apps/demo/*/config/lib_update_config.c | C 配置 | 选择单备份/双备份升级策略 |
| 语言包 | AW33N_config_tool/conf/entry/lang_en.lua | Lua | 工具界面英文语言包 |
常见问题与失败模式
烧录失败排查
| 现象 | 可能原因 | 解决方式 |
|---|---|---|
| 工具无法识别设备 | 未进入编程模式 / USB 驱动未装 | 按住烧录键复位重新上电;检查设备管理器 |
| 烧录中途失败 | 连接线材/接口接触不良 | 更换 USB/UART 线材,重试 |
| 校验不通过 | 固件与芯片平台不匹配 | 确认 .hex 来自正确的 board/bd57 工程 |
| 量产烧录异常 | 配置工具生成的 .fw 与固件版本不匹配 | 重新用 AW33N_config_tool 生成配置 |
可靠性设计要点
- 编程模式兜底:芯片 Bootloader 独立于应用固件,即使应用区损坏,仍可通过"烧录按键 + 复位"进入编程模式重新烧录,避免变砖。
- 双备份 OTA:升级失败时回退到旧镜像,保障售后升级可靠性;单备份模式需注意升级过程中避免断电。
- 配置与固件解耦:
.fw配置独立生成,产线可预先准备多种配置模板,按产品型号选择,减少编译环节的产线依赖。
Related Links
- 编译指南(本页编译产物
.hex的来源) - 配置说明(
lib_update_config.c等模块裁剪) - README.md — 烧录与升级章节
- README.md — 安装烧录工具
- README-en.md — Flashing & Upgrading
- 下载脚本配置文档(官方)
- OTA 开发文档(官方)