chore(vd960DBN): 结案清理 — 移除临时诊断代码 (2026-08-17)

频繁复位问题闭环后清理:
- peripheral.c performPeriodicTask: 删 _dbg_cnt 500ms 调试心跳打印 (BLE 状态已由上层链路验证)
- peripheral_main.c: 删 g_boot_count(.noinit) + BOOT_CNT/END/SP 诊断打印块
- 保留 fault_diag 基础设施 + RST_REASON 一行 (诊断价值, 未来复用)
- 注意: peripheral.c 为 GBK+CRLF, 新注释用 ASCII
This commit is contained in:
wangfq
2026-08-17 16:42:59 +08:00
parent fed4335947
commit 8c0f135629
3 changed files with 9 additions and 27 deletions
@@ -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",
@@ -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 超时 + 主循环喂狗 */
+8 -1
View File
@@ -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)、