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:
@@ -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 超时 + 主循环喂狗 */
|
||||
|
||||
Reference in New Issue
Block a user