移除了CAN模块中未启用的DMA初始化相关代码,包括can_dma_init函数 和相关的调用。同时移除了SPI OTA模块中已废弃的中断处理函数和C风格 兼容包装函数,这些功能已被DMA方式替代。 BREAKING CHANGE: 移除了can_dma_init函数和spi_ota_irq_handler等C风格API。
6.6 KiB
6.6 KiB
Checklist
每个检查点对应 spec.md 中的一个删除目标或一项验证要求。 完成后请勾选
[x]。任一检查点失败,必须回到 tasks.md 创建修复任务并重新验证。 注:[x] 表示已通过本环境验证;[ ] 表示需用户在本地 IDE 中验证(如编译验证)。
A. 历史遗留字段
OTAHandler::ota_stateota_time字段已从 OTA.h 删除- 全工程 Grep
ota_stateota_time命中数为 0
B. OTA 兼容旧接口
OTAHandler::handleOTAMessage()声明已从 OTA.h 删除OTAHandler::handleOTAMessage()实现已从 OTA.cpp 删除- 全工程 Grep
handleOTAMessage命中数为 0 - OTA 业务流程(握手、收包、擦除、写 Flash、跳转)行为与清理前等价(仅删除死代码,未改业务)
C. CAN 兼容旧 ACK 接口
CAN_transmiter::sendDATA_ACK(u32, bool)声明已从 Can.h 删除CAN_transmiter::sendDATA_ACK(u32, bool)实现已从 Can.cpp 删除CAN_transmiter::sendDATA_ACK(u32, u8*)声明已从 Can.h 删除CAN_transmiter::sendDATA_ACK(u32, u8*)实现已从 Can.cpp 删除- 全工程 Grep
sendDATA_ACK命中数为 0 - CAN 收发主流程(
CANFD_AsyncSend/communication_check/onRx0Interrupt/onTxInterrupt)行为与清理前等价(仅删除死代码)
D. CAN DMA 占位接口
can_dma_init()声明已从 Can.h 删除can_dma_init()实现已从 Can.cpp 删除canfd_config()中对can_dma_init()的调用已移除- 全工程 Grep
can_dma_init命中数为 0 - CAN 初始化路径行为与清理前等价(FIFO 接收路径不变)
E. BootPlatform 预留占位接口
BootPlatform::getResetCause()与 C 包装get_reset_cause()已删除BootPlatform::initUnusedPins()与 C 包装unused_pin_init()已删除BootPlatform::printSystemClockInfo()与 C 包装print_system_clock_info()已删除BootPlatform::scanAppFlashContent()与 C 包装scanAppFlashContent()已删除BootPlatform类整体去留决策已记录:已整体删除(4 个静态方法删完后类已空)- 全工程 Grep
getResetCause|get_reset_cause|initUnusedPins|unused_pin_init|printSystemClockInfo|print_system_clock_info|scanAppFlashContent|class BootPlatform|BootPlatform::命中数为 0
F. SpiOta 保留空壳 ISR
SpiOta::onSpiInterrupt()去留决策已记录:删除(依据:configureSpi0()禁用 SPI0 RBNE/ERR/TBE 中断,未调用nvic_irq_enable(SPI0_IRQn, ...),NVIC 未使能 → ISR 永不触发;启动文件 [WEAK] 引用会自动落到默认空实现)onSpiInterrupt()实现、声明与对应extern "C" SPI0_IRQHandler已删除spi_ota_irq_handlerC 包装已删除- SPI OTA 收发主流程(
onCsAssert/onCsRelease/onCsExtiInterrupt/isrProcessFrame/poll)行为与清理前等价
G. 开发期备份文件
SpiOta.cpp.bak_20260528已删除SpiOta.cpp.bak_20260529_txdebug已删除RTE_Components(CBB-003的冲突副本1_2026-05-06 00-26-28).h已删除(决策:IDE 合并冲突产物;csolution 只引用RTE_Components.h,副本不会被编译器引用)
H. C 风格包装层审计
- systick.h / systick.cpp:删除
systick_config/delay_1s/delay_decrement;保留delay_1ms/delay_1us/system_soft_reset(有外部调用方) - initial.h / initial.cpp:除 Group E 已删除外,还删除
USART0_init/enter_deep_sleep/check_sleep;保留EXTI5_9_IRQHandler/EXTI10_15_IRQHandler(extern "C" IRQ Handler,启动文件 [WEAK] 引用) - SpiOta.h / SpiOta.cpp:删除全部 12 个
spi_ota_*C 包装(含spi_ota_irq_handler和spi_ota_cs_exti_handler);同步删除空的 extern "C" 块;同步更新 initial.cpp 中提到spi_ota_cs_exti_handler的注释 - Can.h / Can.cpp:
can_gpio_init/canfd_config保留(删除会破坏调用点,违反"严格只做删除"约束);CAN0_RX0_IRQHandler/CAN0_TX_IRQHandler保留(extern "C" IRQ Handler)
I. 注释一致性
- 全工程 Grep 所有已删符号名(
ota_stateota_time、handleOTAMessage、sendDATA_ACK、can_dma_init、get_reset_cause、unused_pin_init、print_system_clock_info、scanAppFlashContent、getResetCause、initUnusedPins、printSystemClockInfo、BootPlatform、onSpiInterrupt、spi_ota_irq_handler、spi_ota_cs_exti_handler、systick_config、delay_1s、delay_decrement)命中数为 0 SPI0_IRQHandler仅在启动文件RTE/Device/GD32E508VE/startup_gd32e50x_cl.s的 [WEAK] EXPORT 处出现,属预期(SpiOta.cpp 中已 0 命中)- 没有任何注释仍指向不存在的符号
J. 行为零变化验证
- BOOT 启动流程(
main→initHardware→run)行为与清理前等价(仅删除死代码,未改启动顺序) - OTA 握手 / 收包 / 擦除 / 写 Flash / 跳转流程行为与清理前等价(仅删除
handleOTAMessage死接口,所有实际链路走handleLinkMessage) - CAN OTA 链路行为与清理前等价(仅删除
sendDATA_ACK死接口和can_dma_init空占位,CANFD_AsyncSend等主流程未改) - SPI OTA 链路行为与清理前等价(仅删除永不触发的
SPI0_IRQHandler,DMA 收发路径未改) - 睡眠/唤醒(
BootSleepManager)流程行为与清理前等价(仅删除enter_deep_sleep/check_sleepC 包装,C++ 实现未改) - 应用跳转(
jumpToApplication)流程行为与清理前等价 - Flash 布局、配置页布局、CRC 校验逻辑未被改动
K. 编译验证
- 编译工具链可用性已检查:
cbuild/csolution/cbuildgen均不在 PATH;CMSIS_COMPILER_ROOT/CMSIS_PACK_ROOT未设置;ARM 编译器(armcc/armclang/arm-none-eabi-gcc)均未找到 - 编译验证未执行——当前环境编译工具链不可用,需用户在装有 CMSIS-Toolbox 的本地 IDE 中手动编译验证
- 注释一致性扫描通过,无遗漏引用(理论上不会出现
undefined reference)
L. 不漏不错自检
- 本 spec 涵盖 BOOT 自有源码(不含 RTE/Device 厂商库)中所有可识别的「旧版本兼容」「历史遗留」「预留占位」「死代码」目标
- 每个删除目标在删除前均以 Grep 确认无调用方
- 没有任何「错删仍在使用代码」的情况(保留项均明确记录保留原因:
delay_1ms/delay_1us/system_soft_reset/EXTI*_IRQHandler/CAN*_IRQHandler/can_gpio_init/canfd_config) - 没有任何「漏删可识别死代码」的情况(19 个已删符号全部 Grep 验证 0 命中)