diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c index 84ad79f..b952881 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral.c @@ -684,15 +684,7 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven */ static void performPeriodicTask(void) { - static uint32_t _dbg_cnt = 0; - if(++_dbg_cnt >= 10) /* 500ms heartbeat: confirm TMOS periodic alive */ - { - _dbg_cnt = 0; - PRINT("BLE tick: ntf_len=%d ntf_flag=%d resp=%d amt=%d seq=%d off=%d\n", - g_notify_buftemp.len, g_notify_buftemp.flag, - g_buf_ble_response.flag, g_buf_ble_response.pkg_amount, - g_buf_ble_response.pkg_seq, g_buf_ble_response.dat_offset); - } + /* 2026-08-17 cleanup: removed _dbg_cnt 500ms debug heartbeat print */ if(g_flag_notify_temp){ g_flag_notify_temp = 0; PRINT("BLE send: len=%d resp=%d amt=%d seq=%d off=%d\n", diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c index f918544..3996932 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c @@ -89,10 +89,6 @@ uint32_t g_storage_uart_baud = 19200;//9600; uint8_t g_storage_uart_num_2 = 1; uint32_t g_storage_uart_baud_2 = 115200; //115200; -/* 实验A诊断 (2026-08-17): .noinit boot 计数器 — 跑飞重启不清零, 每次 main 重进 +1. - 真复位(POR/IWDG/软复位)后 .bss 清零但 .noinit 保留, 可区分复位与跑飞重启 */ -uint32_t g_boot_count __attribute__((section(".noinit"))); - uint32_t mstick(void){ return TimingDelayInc; } @@ -314,19 +310,6 @@ int main(void) /* 诊断: 复位原因寄存器 (bit31=IWDG bit30=WWDG bit29=LPWR bit26=NRST bit25=POR bit24=软复位) 每次上电必打, 区分看门狗死锁 vs 掉电 vs 外部复位 */ PRINT("RST_REASON: 0x%08lx\n", (unsigned long)OFFLOG_RCC_RSTSCKR); - g_boot_count++; - { - extern char _end[]; /* 堆起点 = .bss 末尾 (Link.ld) */ - uint32_t _sp; - __asm__ volatile("mv %0, sp" : "=r"(_sp)); - PRINT("BOOT_CNT:%lu @0x%08lx END:0x%08lx SP:0x%08lx\n", - (unsigned long)g_boot_count, (unsigned long)&g_boot_count, - (unsigned long)_end, (unsigned long)_sp); - /* 判读(2026-08-17): BOOT_CNT@0x2000f854 → .noinit 被推到 RAM 顶, - 栈顶 0x20010000 之下仅 ~1.9KB → .bss≈46KB(大数组), 栈溢出风险! - END = 堆起点(.bss 末): END - 0x20004000 - .data ≈ .bss 大小; - SP = 当前栈深(main 入口浅栈处, 栈顶下方 ~几十字节) */ - } fault_diag_init(); /* 打印上次复位现场 (HardFault mcause/mepc + 执行轨迹 marker) */ iot_watchdog_init(); /* 无条件 IWDG (2026-08-13): iot_enable=0 时 iot_mqtt_init 不调, 卡死无兜底 → 永久冻结。IWDG 4s 超时 + 主循环喂狗 */ diff --git a/vd960DBN/docs/devlog.md b/vd960DBN/docs/devlog.md index e96f475..9c32345 100644 --- a/vd960DBN/docs/devlog.md +++ b/vd960DBN/docs/devlog.md @@ -66,8 +66,15 @@ - 资源:DMA1 全空闲(WCHNET 用独立 ETH DMA、BLE 栈不用 DMA1)→ Ch6 独占无冲突 - 注意:.bss +512B(缓冲),栈 6.3KB → 5.8KB 仍充裕 +### 调试代码结案清理(2026-08-17 晚) +频繁"复位"问题闭环后,移除临时诊断代码: +- `peripheral.c` `performPeriodicTask()`:删除 `_dbg_cnt` 500ms 调试心跳打印(BLE 状态已由上层链路验证) +- `peripheral_main.c`:删除 `g_boot_count`(.noinit 计数器)+ BOOT_CNT/END/SP 诊断打印块 +- **保留**:`fault_diag`(FAULT_MARKER + .noinit 现场)——诊断基础设施,成本低,未来疑难杂症复用; + `RST_REASON` 一行打印(offlog_boot 同源,区分复位源) +- 注意:peripheral.c 为 GBK+CRLF,新增注释必须 ASCII(中文会被 GBK 编码搞乱) + ### 遗留 -- BOOT_CNT 打印保留(区分复位 vs 跑飞重启,诊断价值) - 快照区延后 3s 保留(非根因,但作为启动早期 SPI 减压无害) - (可选)g_report_cfg 1400B 结构体审查、WCHNET Mem_Heap 7.2KB 库配置——收益有限暂不动 - [ ] UART2 DMA 板级验证:Loop MCU 数据正常解析(无 checksum fail)、