diff --git a/AGENTS.md b/AGENTS.md index f122407..c76b33a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -47,7 +47,7 @@ LDC1612(电涡流/电感数字转换器)+ TMP112(板载温度),RS485 ``` 0x08000000 ┌─────────────────┐ - │ Bootloader │ 8K 页 0~7 复用 MB 板 BL bin(V0.1.0,4,044B,MD5 f7b447cf…) + │ Bootloader │ 8K 页 0~7 专属分支 bootloader_CeramixNano_EDDY(V0.1.0,4,040B) 0x08002000 ├─────────────────┤ │ FW_A 运行槽 │ 36K 页 8~43 OTA/Ymodem 接收区;锚点 A 记录@0x0800AFFC 0x0800B000 ├─────────────────┤ @@ -57,9 +57,11 @@ LDC1612(电涡流/电感数字转换器)+ TMP112(板载温度),RS485 0x08010000 └─────────────────┘ ``` -- **BL 复用**:直接使用 `gd32e230_bootloader` 仓库 `bootloader_CeramixNano_MB` 分支 - V0.1.0 bin(RS485 引脚/波特率/DE 方案与 EDDY 完全一致;唯一差异 LED 引脚 - MB=PA14 / EDDY=PB1——BL 的 LED 仅 Ymodem 收包闪烁,纯装饰,EDDY 板不亮无碍)。 +- **BL = 并列板卡分支 `bootloader_CeramixNano_EDDY`**(BL 仓库,2026-10-24 自 MB 分支 + 创建;板卡宏 CERAMIXNANO_EDDY,**LED=PB1**,Ymodem 每成功烧录一包翻转一次,逻辑 + 同 MB 分支;版本独立编号 V0.1.0 = 4,040B,MD5 1dcc17bf…)。RS485 配置与 MB 逐宏 + 相同;**PA14 不被 BL 占用 ⇒ 升级会话期间 SWD 保持可用**(MB 分支 BL 的 LED=PA14 + 会占 SWCLK,勿混烧)。 - **A 线 = dev/main**:链接 0x08002000 / **LENGTH 36K**(LD 上限防溢出 B 槽), VTOR 0x2000;版本从 V1.0.3 起(首个双固件 A 版本,码 26)。 - **B 线 = release/golden**:链接 0x0800B000 / LENGTH 0x4BF8(19K−8B,B 记录由打包 @@ -86,15 +88,17 @@ LDC1612(电涡流/电感数字转换器)+ TMP112(板载温度),RS485 - 2026-10-02:IIC 驱动改进导入(总线恢复重试/超时辅助/read_raw/scan AERR 处理); 硬件全命令实测通过;DAPLink 烧录问题解决;发布 V1.0.2(Gitea Release + tag) - **2026-10-24:双固件(出厂救援)方案移植完成并全链路实测通过**(详见下节) - - BL 复用 MB V0.1.0 bin(未改动 BL 代码,仅文档说明) + - BL 仓库新建并列板卡分支 `bootloader_CeramixNano_EDDY`(LED=PB1,V0.1.0 = 4,040B, + 每收包翻转一次;此前短暂采用"复用 MB bin"方案,因 LED 引脚不同已废弃并重打包) - dev:LD 54K→36K、命名 CeramixNano-EDDY、板卡码 26、V1.0.3; golden:V1.0.2 冻结命名 + variant=golden - 两线 CMake 补齐 `--gap-fill=0xFF` 与 `LD LINK_DEPENDS` - fw_pack 新增 `CeramixNano_EDDY_Dual_FW` profile(55 项回归过,skill 缓存已同步) - 产物(`Build/test/dualfw_2026-10-24/`):UPDATE(12 页,trailer 0x5C09000C)、 - FULL(A=V1.0.3/B=V1.0.2,19 项校验过)、FACTORY(12 项校验过)+ MD5 清单; + FULL(EDDY BL + A=V1.0.3/B=V1.0.2,19 项校验过)、FACTORY(12 项校验过)+ MD5 清单; 独立 python XMODEM 复算全部命中 - - **硬件实测矩阵(SWD 探针 PC 采样 + 485 命令双重手段,全部 PASS)**: + - **硬件实测矩阵(SWD 探针 PC 采样 + 485 命令双重手段,全部 PASS;先用 MB bin 实测, + 换 EDDY 专属 BL 后 FULL/FACTORY/OTA 全周期复测通过)**: FACTORY→跳B(v26.1.0.2) / FULL→记录路径跳A(v26.1.0.3) / PC 模拟 SOC 完整 OTA 44s 成功+读回整片逐字节与包一致(B 区在真实 OTA 中毫发无损)/ 擦锚点页→legacy 跳A / 锚点在位毁A体→CRC 拦截直落B(防降级)/ @@ -114,12 +118,13 @@ LDC1612(电涡流/电感数字转换器)+ TMP112(板载温度),RS485 或 RSTFC 清),此后任何复位 BL 都直进升级模式、不跳 APP——表现为"设备沉默, M999 无响应,但 0x30 能回 ok"。排障/测试时须 SWD `mww 0x40021024 0x01000000` 清标志后再放跑(`swd.py boot` 已内置)。 -- **BL 收到 0x30 后 SWD 必死**:复用的 MB BL 在 0x30 应答后调用 gpio_init 把 - PA14(EDDY 板=SWCLK)切为 LED 输出。因此:探针类 SWD 操作前**不要**发 0x30; - OTA/升级会话结束后 SWD 失联属预期,恢复 = `M9999` 复位(PA14 回默认)后再连。 - 若 APP 也没在跑(BL 卡收包),用 connect_assert_srst 变体 cfg - (`Toolchain/eddy_test/daplink_srst.cfg`)脉冲 SRST 复位恢复——SRST 线已验证接通, - 但该 DAPLink 下 examination 必失败属正常,复位本身生效。 +- **(历史)误烧 MB 分支 BL 会让 SWD 在 0x30 后失联**:MB 分支 BL 的 LED=PA14 + (SWCLK),0x30 应答后切输出 ⇒ SWD 死。**本板专用 `bootloader_CeramixNano_EDDY` + 分支 LED=PB1,PA14 不占用,升级会话期间 SWD 全程可用**(2026-10-24 起所有镜像 + 均为 EDDY BL,此坑仅存档)。若真误烧:`M9999` 复位(有 APP 时)或用 + connect_assert_srst 变体 cfg(`Toolchain/eddy_test/daplink_srst.cfg`)脉冲 SRST + 复位恢复——SRST 线已验证接通,但该 DAPLink 下 examination 必失败属正常, + 复位本身生效。 - **Ymodem 文件头 ACK 后是 ACK+'C' 连发**:发送器若分两次等会永远等不到第二个 'C' (首次 OTA 调试即栽在此,BL 无超时会卡死;随后发 5×CA 可解)。 - OpenOCD `program`/`dump_image` 的文件路径必须转正斜杠,否则 Tcl 吃掉 `\l` `\t`。 diff --git a/README.md b/README.md index e590814..f3b43cf 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ GD32E230F8(64KB Flash)采用与 CeramixNano-MB 相同的双固件(出厂 | 区域 | 地址范围 | 说明 | |---|---|---| -| Bootloader | `0x08000000` - `0x08001FFF`(8KB,页 0~7) | **复用 CeramixNano-MB 板 BL**(V0.1.0,4,044B)——RS485 引脚/波特率/DE 方案完全一致;启动判定链 + RS485 Ymodem OTA | +| Bootloader | `0x08000000` - `0x08001FFF`(8KB,页 0~7) | **专属分支 `bootloader_CeramixNano_EDDY`**(V0.1.0,4,040B,LED=PB1,Ymodem 每烧录一包翻转一次;与 MB 分支并列、版本独立编号)——启动判定链 + RS485 Ymodem OTA;PA14 不占用,升级会话期间 SWD 可用 | | FW_A 运行槽(本仓库 dev/main) | `0x08002000` - `0x0800AFFF`(36KB,页 8~43) | 唯一 OTA/Ymodem 接收区;链接 `ORIGIN=0x08002000, LENGTH=36K`(上限防溢出 B 槽);槽尾锚点 A 记录 @`0x0800AFFC` | | FW_B 出厂保底槽(release/golden 分支) | `0x0800B000` - `0x0800FBFF`(19KB,页 44~62) | 出厂救援固件(版本冻结 V1.0.2),OTA 永不擦写;B 记录 @`0x0800FBF8` | | 末页标志页 | `0x0800FC00` - `0x0800FFFF`(1KB,页 63) | legacy 标志 `0xEEEE` @`0x0800FFFC` |