Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a85f68c5d | ||
|
|
5b302d13d1 | ||
|
|
b8de2dce3c | ||
|
|
5c46441b29 |
@@ -88,11 +88,13 @@ GD32E230 系列固件处理与烧录工具仓库。本文件为项目标杆文
|
|||||||
- 参数拼接审计:`flash_gui --pack -o` 加目录护栏(拒绝 .bin 路径,对齐根工具),
|
- 参数拼接审计:`flash_gui --pack -o` 加目录护栏(拒绝 .bin 路径,对齐根工具),
|
||||||
全链路冒烟(GUI 弹窗/CLI/命名拼接)通过;`bootloader_disasm*.txt` 为分析
|
全链路冒烟(GUI 弹窗/CLI/命名拼接)通过;`bootloader_disasm*.txt` 为分析
|
||||||
副产物留在工作区未入库。
|
副产物留在工作区未入库。
|
||||||
|
- 2026-10-22 **v2.6.0 发布**(tag `DAPLinkFlash-v2.6.0`):重建 onedir exe
|
||||||
|
(冻结新 fw_pack,`--pack` 默认 profile 显示 `CeramixNano_MB_Dual_FW`、
|
||||||
|
旧名拒绝、UPDATE/FULL/FACTORY 产物冻结态验证通过),组 zip 23.1 MB
|
||||||
|
(内置 OpenOCD 0.11 工具链 + cfgs),已传 Gitea Release。
|
||||||
|
|
||||||
### 计划 / TODO
|
### 计划 / TODO
|
||||||
|
|
||||||
- GUI v2.6.0 打包发布(build_exe → package_release → publish_gitea,需新 tag
|
|
||||||
`DAPLinkFlash-v2.6.0`;exe 已验证可打包 v2,zip 尚未组);
|
|
||||||
- (待用户物理排查)当前目标板对 SWD 完全无应答(`cannot read IDR`,复位下
|
- (待用户物理排查)当前目标板对 SWD 完全无应答(`cannot read IDR`,复位下
|
||||||
100k~4000k 全失败,同探针同工具链曾可连):需确认目标板供电、DAPLink RST →
|
100k~4000k 全失败,同探针同工具链曾可连):需确认目标板供电、DAPLink RST →
|
||||||
GD32 NRST 连线、必要时拔插 DAPLink USB / 目标板断电重上电;恢复后用
|
GD32 NRST 连线、必要时拔插 DAPLink USB / 目标板断电重上电;恢复后用
|
||||||
|
|||||||
+22
-4
@@ -10,7 +10,7 @@ fw_pack — GD32E230 双固件打包公共库 (CLI 与 FlashTool GUI 共用)
|
|||||||
锚点擦除态 → A 向量非法 → 落 B 记录校验 → 跳出厂固件)
|
锚点擦除态 → A 向量非法 → 落 B 记录校验 → 跳出厂固件)
|
||||||
*.md5.txt 产物 MD5 清单 + 布局摘要
|
*.md5.txt 产物 MD5 清单 + 布局摘要
|
||||||
|
|
||||||
规则与 BL dev_fact 侧 (v5.1) 逐字一致:
|
规则与双固件 bootloader 侧逐字一致:
|
||||||
- CRC-16/XMODEM (poly 0x1021, init 0x0000, 不反转, 无 xorout),
|
- CRC-16/XMODEM (poly 0x1021, init 0x0000, 不反转, 无 xorout),
|
||||||
自检向量 b"123456789" -> 0x31C3;
|
自检向量 b"123456789" -> 0x31C3;
|
||||||
- A 包: 补 0xFF 至整 N 页; body 恰整页或 余量 < 记录长 R -> 向后扩 1 页;
|
- A 包: 补 0xFF 至整 N 页; body 恰整页或 余量 < 记录长 R -> 向后扩 1 页;
|
||||||
@@ -38,7 +38,7 @@ __all__ = [
|
|||||||
'pack_all', 'suggest_full_name', 'suggest_factory_name',
|
'pack_all', 'suggest_full_name', 'suggest_factory_name',
|
||||||
]
|
]
|
||||||
|
|
||||||
TOOL_VERSION = '2.1'
|
TOOL_VERSION = '2.2' # 2.2: 新增内置 profile CeramixNano_EDDY_Dual_FW
|
||||||
|
|
||||||
# GD32E230 家族 SRAM: F8 最大 8K, SP 必须落在其中 (F4/F6 的 4K 也在范围内)
|
# GD32E230 家族 SRAM: F8 最大 8K, SP 必须落在其中 (F4/F6 的 4K 也在范围内)
|
||||||
SRAM_LO, SRAM_HI = 0x20000000, 0x20002000
|
SRAM_LO, SRAM_HI = 0x20000000, 0x20002000
|
||||||
@@ -197,7 +197,7 @@ class SlotSpec:
|
|||||||
# ═══════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════
|
||||||
|
|
||||||
BUILTIN_PROFILES = {
|
BUILTIN_PROFILES = {
|
||||||
# CeramixNano-MB v5.1 双固件 BL 的布局 (BL dev_fact@512bf7a)
|
# CeramixNano-MB 双固件 bootloader 的布局
|
||||||
'CeramixNano_MB_Dual_FW': {
|
'CeramixNano_MB_Dual_FW': {
|
||||||
'profile': 'CeramixNano_MB_Dual_FW',
|
'profile': 'CeramixNano_MB_Dual_FW',
|
||||||
'chip': 'GD32E230F8',
|
'chip': 'GD32E230F8',
|
||||||
@@ -214,6 +214,24 @@ BUILTIN_PROFILES = {
|
|||||||
'flag': {'page': 'last', 'addr': '0x0800FFFC', 'value': '0xEEEE'},
|
'flag': {'page': 'last', 'addr': '0x0800FFFC', 'value': '0xEEEE'},
|
||||||
'crc': 'xmodem',
|
'crc': 'xmodem',
|
||||||
},
|
},
|
||||||
|
# CeramixNano EDDY (LDC1612) 双固件布局——Flash 分配与 MB 完全相同;
|
||||||
|
# BL 用专属分支 bootloader_CeramixNano_EDDY 的 bin(LED=PB1,与 MB 分支并列、独立编号)
|
||||||
|
'CeramixNano_EDDY_Dual_FW': {
|
||||||
|
'profile': 'CeramixNano_EDDY_Dual_FW',
|
||||||
|
'chip': 'GD32E230F8',
|
||||||
|
'flash_base': '0x08000000',
|
||||||
|
'flash_size': '64K',
|
||||||
|
'page_size': 1024,
|
||||||
|
'bl': {'addr': '0x08000000', 'size': '8K'},
|
||||||
|
'slot_a': {'addr': '0x08002000', 'size': '36K',
|
||||||
|
'anchor': 'slot_end-4',
|
||||||
|
'record': '{pages16@+0, crc16@+2}'},
|
||||||
|
'slot_b': {'addr': '0x0800B000', 'size': '19K', 'fixed_slot': True,
|
||||||
|
'record': '{magic16@+0=0xC0DE, pages16@+2, crc16@+4}',
|
||||||
|
'record_addr': 'slot_end-8'},
|
||||||
|
'flag': {'page': 'last', 'addr': '0x0800FFFC', 'value': '0xEEEE'},
|
||||||
|
'crc': 'xmodem',
|
||||||
|
},
|
||||||
# 无保底槽的单槽布局 (旧 BL 升级过渡 / 无 B 槽工程)
|
# 无保底槽的单槽布局 (旧 BL 升级过渡 / 无 B 槽工程)
|
||||||
'f8_single_slot': {
|
'f8_single_slot': {
|
||||||
'profile': 'f8_single_slot',
|
'profile': 'f8_single_slot',
|
||||||
@@ -555,7 +573,7 @@ def build_full(profile, bl_data, a_pack, b_pack=None):
|
|||||||
def build_factory(profile, bl_data, b_pack):
|
def build_factory(profile, bl_data, b_pack):
|
||||||
"""工厂烧录镜像: BL + B 满槽(含记录) + flag, **无 A 包、无锚点**。
|
"""工厂烧录镜像: BL + B 满槽(含记录) + flag, **无 A 包、无锚点**。
|
||||||
|
|
||||||
上电判定链(v5.1 BL): A 锚点为擦除态(0xFFFF...) → legacy flag + A 向量校验
|
上电判定链(双固件 BL): A 锚点为擦除态(0xFFFF...) → legacy flag + A 向量校验
|
||||||
(A 槽全 0xFF → 向量非法) → 落 B 记录 {magic|pages|crc} 校验 → 跳出厂固件;
|
(A 槽全 0xFF → 向量非法) → 落 B 记录 {magic|pages|crc} 校验 → 跳出厂固件;
|
||||||
后续 OTA 写入 A 槽后即切运行固件。
|
后续 OTA 写入 A 槽后即切运行固件。
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user