46adcb790c59dd3ecc10b70b88024ff0470f8947
把 BOOT 侧已上板跑通的 SSC/HBI 移植层一次性入库(comm/ecat + gd32e50x_exmc), 并修掉「刷完首启 APP 报 EXMC 总线未就绪、断电重上即好」这条实测链: - v1.1.0.13:jumpToApplication 前补一发 LAN9252 RST#。BOOT 侧 HBI 全是索引两步事务, bootEcatDeinit 末尾的 writeReg32 把 HBI_IDX_0 留在 0x0054,而 APP 起板探针判 IDX_0==0x1234(DS 9.5.4.2 复位默认值),带着残值跳进去就直接报总线未就绪。 - v1.1.0.14:那一发不能无条件下发。path=jump_latest_now(上电 3ms 直跳、这轮 ESC 从没 起过)也在电源刚稳的窗口里拉了 RST#,释放点距上电仅约 15ms,板上表现为每次上电都停 在 BOOT 里(串口停在 [J5-HEX];microlib + putChar 逐字符阻塞等 TBE,故日志停在半截 = CPU 真停在那儿,不是尾巴没刷出来)。现由 s_escBusUp 门控(bootEcatBringup 里 exmcInit 成功才置位);脉宽从 delay_1us(按 4cycle/迭代标定,实测 30ms 只走出 8ms) 换成 DWT CYCCNT 真 30ms + 释放后 2ms;跳转前打 [J6] boot v<ver> handoff。 delay_1ms 在这里不可用:本函数跑在 __disable_irq() 之后,SysTick 中断不递减就是永久 死等,而 BOOT 没开 IWDG —— 那会变成刷完直接静默变砖。 v1.1.0.12 的两条一并入库:10s OTA 窗口的活性判据并上 ecatSessionActive(防半截灌写被 当合法 APP 跳进去、HardFault→复位→留守 10s 形成活锁);0x100A 上报真版本串 (DEVICE_SW_VERSION_LEN 0x3→0x10,acSoftwareversion 显式给 LEN+1 防越界读)。 板上实测:v1.1.0.14 上电直跳恢复正常,APP v1.6.34 起板,自检 ethercat 不再降级。
Description
No description provided
1.2 MiB
Languages
C
81.2%
C++
17.3%
Assembly
1.5%