Files
GD32E50X_BOOT/GD32E50X_BOOT.csolution.yml
T
cbb 46adcb790c feat(boot): BOOT 常驻原生 EtherCAT 刷 APP,跳转前按 HBI 使用情况补发 ESC 复位
把 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 不再降级。
2026-09-15 00:19:33 +08:00

48 lines
1.1 KiB
YAML

# A solution is a collection of related projects that share same base configuration.
solution:
created-for: CMSIS-Toolbox@2.13.0
cdefault: # use CMSIS-Toolbox default Compiler options
# Compilers that can be selected
select-compiler:
- compiler: AC6
- compiler: GCC
- compiler: IAR
- compiler: CLANG
# List of miscellaneous tool-specific controls
misc:
- for-compiler: AC6 # GDB requires DWARF 5, remove when using uVision Debugger
C-CPP:
- -gdwarf-5
ASM:
- -gdwarf-5
# List different hardware targets that are used to deploy the solution.
target-types:
- type: GD32E508VE
device: GD32E508VE
target-set:
- set:
images:
- project-context: GD32E50X_BOOT.Release
debugger:
name: ST-Link@pyOCD
clock: 4000000
protocol: swd
# List of different build configurations.
build-types:
- type: Debug
debug: on
optimize: none
- type: Release
debug: off
optimize: balanced
# List related projects.
projects:
- project: GD32E50X_BOOT/GD32E50X_BOOT.cproject.yml
compiler: AC6