diff --git a/GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp b/GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp index e0e8f11..c2492da 100644 --- a/GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp +++ b/GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp @@ -504,7 +504,15 @@ extern "C" void bootEcatDeinit(void) exti_flag_clear(ESC_IRQ_EXTI); writeReg32(LAN9252_REG_INT_EN, 0U); /* 免得 APP 起来后 PB1 还挂着 ESC 驱动的电平 */ writeReg32(LAN9252_REG_IRQ_CFG, 0U); - escResetForJump(); /* 1.1.0.13: 交还总线前把芯片复位到上电默认态 */ + /** [WJ-TEST 1.1.0.18] 单变量裁决:暂时短路跳转前这发 RST#。 + * 板上实测(2026-09-16):刷完 warm jump 进不去 APP,但按一下 reset 走 + * cold jump 就正常起 —— 两条路唯一差异是 s_escBusUp 为真时下面这些真跑了, + * 而 escResetForJump 释放 RST# 后只忙等 2ms 就交 CPU(对照 BOOT 自己起板 + * exmcInit 轮询 HBI_IDX_0==0x1234 上限 300ms)。 + * 预期代价=1.1.0.13 的原病回来(APP 自检「EXMC 未就绪/降级 ethercat」、 + * IDX_0 读到 0x0054);那是"能起但降级",与"起不来"形态不同,可分开判读。 + * 起来 ⇒ 元凶=这发复位的时序;仍起不来 ⇒ 转查 PD/PE 留在 AF 的 MCU 侧残留。 */ + /* escResetForJump(); */ /* 1.1.0.13: 交还总线前把芯片复位到上电默认态 */ exmc_norsram_disable(EXMC_BANK0_NORSRAM_REGION0); rcu_periph_clock_disable(RCU_EXMC); /* PD/PE 回浮空,交还 APP 自己初始化 */ DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk; diff --git a/GD32E50X_BOOT/sys/config.h b/GD32E50X_BOOT/sys/config.h index 9e724f2..2dfd10c 100644 --- a/GD32E50X_BOOT/sys/config.h +++ b/GD32E50X_BOOT/sys/config.h @@ -180,11 +180,24 @@ typedef uint32_t u32; * 则 [BOOT][ESC] jump reset 出现、APP 起板 IDX_0 探到 0x1234。若直跳仍卡,说明与 * RST# 无关,转查 v1.1.0.12 首次上板的两条(10s 窗口并 ecatSessionActive、 * main.cpp:69 新增 snprintf —— BOOT 栈只有 1KB,拿 .map + fromelf 数栈余量)。 + * v1.1.0.18 [WJ-TEST]: 单变量裁决 warm jump 失败(板上实测 2026-09-16)。 + * 现象:刷完 warm jump 进不去 APP;按一下 reset 走 cold jump 同一镜像正常起 + * ⇒ APP 启动链无罪,差异全在 s_escBusUp 为真时 bootEcatDeinit 真干了活。 + * 本版只做一件事:把 bootEcatDeinit 里的 escResetForJump() 调用注释掉 + * (boot_ecat_hw.cpp:507),其余逐指令与 14 相同。 + * 版本号取 18 不复用 15/16/17 —— 那三版都真上过板,[J6] 读数必须唯一可辨。 + * 判读:warm jump 能起(哪怕自检报 EXMC 未就绪/降级、IDX_0=0x0054) + * ⇒ 元凶=那发复位的 2ms 交 CPU 时序,改成轮询就绪后再跳或交给 APP; + * warm jump 仍起不来 ⇒ 与复位无关,转查 PD/PE 停在 AF、EXMC 时钟被关 + * 的 MCU 侧残留(509 行那句"PD/PE 回浮空"是错的,关外设时钟不切 GPIO)。 + * 注:本版与 1.1.0.15~17(关中断跳转实验、BKP 面包屑、EXTI15 清理)无关, + * 那批改动未提交且已整体回退到 46adcb7,补丁存于 + * G:/Robot_v2/DCU/_revert_backup_20260916/。 */ #define BOOT_FW_VERSION_MAJOR 1U #define BOOT_FW_VERSION_MINOR 1U #define BOOT_FW_VERSION_PATCH 0U -#define BOOT_FW_VERSION_BUILD 14U /* 变更来由见上方注释块 */ +#define BOOT_FW_VERSION_BUILD 18U /* 变更来由见上方注释块 */ /** * Flash 布局说明(GD32E508VE,512KB)