chore: 内部迭代号出清收尾——CLI/测试/README 注释标签改中性表述,删除旧 profile 名迁移映射

- gd32e230_firmware_tool.py / test_fw_pack.py / README.md:v5/dev_fact 等会话自管理标签改为"双固件 bootloader"中性表述;参考产物 *_UPDATE_V5.bin 更名 *_UPDATE.bin(含验收包内 1.0.18),测试引用同步
- config.py:删除 _RENAMED_PROFILE 旧名迁移映射(ceramixnano_mb_v51 仅存在数小时;残留旧名加载 profile 时报错提示重选)
- AGENTS.md:留档出清进度,并修正"GUI 旧配置自动迁移"的过时表述(迁移映射已删)
- 55 项回归全绿;fw_pack.py 侧标签清理已随 5a85f68 入库
This commit is contained in:
2026-10-25 00:43:53 +08:00
parent 5a85f68c5d
commit 8af9264ae4
5 changed files with 19 additions and 12 deletions
+11 -1
View File
@@ -34,7 +34,7 @@ GD32E230 系列固件处理与烧录工具仓库。本文件为项目标杆文
FACTORY=BL+B 满槽+flag **无 A**(A 槽整体擦除态,上电判定链落 B 跳出厂固件), FACTORY=BL+B 满槽+flag **无 A**(A 槽整体擦除态,上电判定链落 B 跳出厂固件),
12 项字节校验;不再单独落盘 B 包文件(B 内容已含于 FULL/FACTORY)。 12 项字节校验;不再单独落盘 B 包文件(B 内容已含于 FULL/FACTORY)。
默认 profile 名为 `CeramixNano_MB_Dual_FW`(旧名 `ceramixnano_mb_v51` 已 默认 profile 名为 `CeramixNano_MB_Dual_FW`(旧名 `ceramixnano_mb_v51` 已
废弃不留别名,GUI 旧配置自动迁移)。 废弃不留别名;迁移映射已删,配置残留旧名会在加载时报错提示重选)。
回归基准(CeramixNano 实测):1.0.17→20 页 trailer=0xD30F0014;1.0.18→ 回归基准(CeramixNano 实测):1.0.17→20 页 trailer=0xD30F0014;1.0.18→
0x6F380014;V1.0.12 B→记录 `DE C0 13 00 6F 18 FF FF`;FULL 镜像 MD5 0x6F380014;V1.0.12 B→记录 `DE C0 13 00 6F 18 FF FF`;FULL 镜像 MD5
`f704b837...` 逐字节复现。**改 `fw_pack.py` 后必须 `f704b837...` 逐字节复现。**改 `fw_pack.py` 后必须
@@ -92,6 +92,16 @@ GD32E230 系列固件处理与烧录工具仓库。本文件为项目标杆文
(冻结新 fw_pack,`--pack` 默认 profile 显示 `CeramixNano_MB_Dual_FW`、 (冻结新 fw_pack,`--pack` 默认 profile 显示 `CeramixNano_MB_Dual_FW`、
旧名拒绝、UPDATE/FULL/FACTORY 产物冻结态验证通过),组 zip 23.1 MB 旧名拒绝、UPDATE/FULL/FACTORY 产物冻结态验证通过),组 zip 23.1 MB
(内置 OpenOCD 0.11 工具链 + cfgs),已传 Gitea Release。 (内置 OpenOCD 0.11 工具链 + cfgs),已传 Gitea Release。
- 2026-10-22 **内部迭代号出清**(用户定规:v4/v4.1/v5/v5.1、dev_fact 等
会话自管理标签只许存在于 AGENTS/SKILL 等文档,不得出现在任何代码):
清理 `fw_pack.py`/`gd32e230_firmware_tool.py`/`test_fw_pack.py`/`README.md`
注释中的标签表述(改"双固件 bootloader");**删除 config.py 的
`_RENAMED_PROFILE` 旧名迁移映射**(`ceramixnano_mb_v51` 仅存在数小时,
残留配置会在加载 profile 时报错提示重选);同步 skill 缓存
(fw_pack.py / gd32e230_firmware_tool.py 重新逐字节一致);参考产物
`*_UPDATE_V5.bin` 更名 `*_UPDATE.bin`(含验收包内 1.0.18),测试引用同步;
55 项回归全过。注:BL 侧 `bootloader.c` 同日清理 3 处注释标签(注释不影响
代码生成,已烧 BL bin 仍有效)。
### 计划 / TODO ### 计划 / TODO
+1 -4
View File
@@ -80,8 +80,7 @@ def _legacy_settings():
return path return path
# 旧内置 profile 名 → 现名 (改名前保存的配置一次性迁移, 旧名不再受支持) # 旧内置 profile 名已废弃: 配置里若残留旧名, 会在加载 profile 时报错提示重选
_RENAMED_PROFILE = {"ceramixnano_mb_v51": "CeramixNano_MB_Dual_FW"}
def load_settings(): def load_settings():
@@ -101,8 +100,6 @@ def load_settings():
for key in DEFAULTS: for key in DEFAULTS:
if key in stored: if key in stored:
data[key] = stored[key] data[key] = stored[key]
if data.get("pack_profile") in _RENAMED_PROFILE:
data["pack_profile"] = _RENAMED_PROFILE[data["pack_profile"]]
return data return data
+3 -3
View File
@@ -27,7 +27,7 @@
0x08010000 └──────────────────┘ 0x08010000 └──────────────────┘
``` ```
### 计算规则(与 BL dev_fact v5.1 逐字一致) ### 计算规则(与双固件 bootloader 逐字一致)
- **CRC-16/XMODEM**(poly 0x1021、init 0x0000、不反转、无 xorout), - **CRC-16/XMODEM**(poly 0x1021、init 0x0000、不反转、无 xorout),
启动自检向量 `"123456789" → 0x31C3`; 启动自检向量 `"123456789" → 0x31C3`;
@@ -162,8 +162,8 @@ python gd32e230_firmware_tool.py -m app.bin -a 0x0800B000 -b bl.bin # FW_B 槽
### 旧版脚本 ### 旧版脚本
`merge_bin.py` / `fill_bin.py` 为旧版命令行脚本,功能已合并进 `gd32e230_firmware_tool.py`, `merge_bin.py` / `fill_bin.py` 为旧版命令行脚本,功能已合并进 `gd32e230_firmware_tool.py`,
历史说明见 [README_old.md](README_old.md)。v5 格式临时脚本 `make_v5_update.py` 历史说明见 [README_old.md](README_old.md)。带 trailer 的临时打包脚本
已于 v2 落地后删除(能力并入 `fw_pack.py`)。 已在 v2 落地后删除(能力并入 `fw_pack.py`)。
### 烧录 ### 烧录
+1 -1
View File
@@ -8,7 +8,7 @@ v2 模式(默认): 输入编译好的 APP bin, 自动识别 A/B 槽, 产出
*_FULL.bin 整片镜像 (BL + A 包 + 槽尾锚点 + B 满槽 + 0xEEEE 标志) *_FULL.bin 整片镜像 (BL + A 包 + 槽尾锚点 + B 满槽 + 0xEEEE 标志)
*_FACTORY.bin 工厂烧录镜像 (BL + B 满槽 + flag, 无 A 内容; 上电跳 B) *_FACTORY.bin 工厂烧录镜像 (BL + B 满槽 + flag, 无 A 内容; 上电跳 B)
*.md5.txt 产物 MD5 清单 + 布局摘要 (随主镜像生成) *.md5.txt 产物 MD5 清单 + 布局摘要 (随主镜像生成)
打包规则与 BL (dev_fact v5.1) 逐字一致, 写盘后回读复核。计算与校验在 打包规则与双固件 bootloader 逐字一致, 写盘后回读复核。计算与校验在
fw_pack.py 公共库 (FlashTool GUI 共用)。 fw_pack.py 公共库 (FlashTool GUI 共用)。
legacy 模式(过渡期兼容, -f/-m 二选一时启用): 旧单槽方案 legacy 模式(过渡期兼容, -f/-m 二选一时启用): 旧单槽方案
+3 -3
View File
@@ -43,8 +43,8 @@ CAP = r'E:\Hulk-Coding\capsule_mb_camke_vscode\Build'
A17 = os.path.join(CAP, 'Release', 'CeramixNano-MB_V1.0.17_APP_2026-10-21.bin') A17 = os.path.join(CAP, 'Release', 'CeramixNano-MB_V1.0.17_APP_2026-10-21.bin')
A18 = os.path.join(CAP, 'Release', 'CeramixNano-MB_V1.0.18_APP_2026-10-21.bin') A18 = os.path.join(CAP, 'Release', 'CeramixNano-MB_V1.0.18_APP_2026-10-21.bin')
B12 = os.path.join(CAP, 'Release', 'CeramixNano-MB_V1.0.12_APP_2026-10-20.bin') B12 = os.path.join(CAP, 'Release', 'CeramixNano-MB_V1.0.12_APP_2026-10-20.bin')
U17_REF = os.path.join(CAP, 'test', 'CeramixNano-MB_V1.0.17_APP_2026-10-21_UPDATE_V5.bin') U17_REF = os.path.join(CAP, 'test', 'CeramixNano-MB_V1.0.17_APP_2026-10-21_UPDATE.bin')
U18_REF = os.path.join(CAP, 'test', 'CeramixNano-MB_V1.0.18_APP_2026-10-21_UPDATE_V5.bin') U18_REF = os.path.join(CAP, 'test', 'CeramixNano-MB_V1.0.18_APP_2026-10-21_UPDATE.bin')
FULL_REF = os.path.join(CAP, 'test', 'acceptance_2026-10-22', FULL_REF = os.path.join(CAP, 'test', 'acceptance_2026-10-22',
'CeramixNano-MB_FULL_A-V1.0.17_B-V1.0.12_2026-10-21.bin') 'CeramixNano-MB_FULL_A-V1.0.17_B-V1.0.12_2026-10-21.bin')
HAVE_REAL = all(os.path.isfile(p) for p in (A17, A18, B12, U17_REF, FULL_REF)) HAVE_REAL = all(os.path.isfile(p) for p in (A17, A18, B12, U17_REF, FULL_REF))
@@ -495,7 +495,7 @@ class TestFactory(unittest.TestCase):
# ═══════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════
# 8. 真机回归: CeramixNano v5.1 (字节级复现验收包) # 8. 真机回归: CeramixNano 双固件 (字节级复现验收包)
# ═══════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════
@unittest.skipUnless(HAVE_REAL, '需要 CeramixNano 固件(见 test_fw_pack.py 头部路径)') @unittest.skipUnless(HAVE_REAL, '需要 CeramixNano 固件(见 test_fw_pack.py 头部路径)')