fix(vd960DBN): 恢复 factory 配置写入 — 换新空片后配置永久丢失

8-13 止血(SPI 写触发复位)根因已 8-17 闭环(栈溢出+printf 重入, 非 SPI 问题),
offlog/snapshot 8-18 起持续 SPI 写入稳定 → 解除止血。
新空片(W25Q128)参数区无 magic + write_net_config 不写 magic → 每次上电
memory defaults, 保存配置永久丢失。恢复: mismatch 分支调 factory_dev_info()
写 magic+默认参数到 flash, 首次上电自动初始化。
This commit is contained in:
wangfq
2026-08-19 15:13:18 +08:00
parent f1d9ac4e48
commit 8e58d5fdd1
2 changed files with 39 additions and 8 deletions
@@ -241,12 +241,15 @@ void load_cfg_from_flash(void)
if(strncmp(mBuff, DEV_USER_FLASH_MAGIC, sizeof(DEV_USER_FLASH_MAGIC)) != 0)
{
free(mBuff);
/* ===== 止血 (2026-08-13): factory SPI 写触发硬件复位死循环 =====
现场: SPI_Flash_Write(参数区 0x00, 512B) → RST=0x00000000 硬件复位
→ magic 写不进 → 无限复位循环。SPI 写触发硬件复位实锤(与快照区无关)。
临时方案: 不写 Flash, 用内存默认配置继续 (恢复原逻辑删本块即可) */
/* 2026-08-17 栈溢出修复后恢复 (栈~4.75KB) */
PRINT("CFG: magic mismatch - MEMORY DEFAULTS (factory SPI write disabled)\n");
/* ===== 恢复 factory 写入 (2026-08-19) =====
8-13 止血背景: factory SPI 写触发硬件复位死循环 — 根因已在 8-17 闭环
(.bss 挤占 RAM → 栈溢出 + printf 重入, 非 SPI 硬件问题);
offlog/snapshot 自 8-18 起持续 SPI 写入稳定。
换新空片 (W25Q128) 参数区无 magic → 每次上电 memory defaults,
且 write_net_config 保存配置不写 magic → 配置永久丢失。
恢复: 首次 mismatch 写出厂默认 (magic+参数) 到 flash, 后续上电正常加载。 */
factory_dev_info();
PRINT("CFG: magic mismatch - factory defaults written\n");
memset(g_dev_number, 0, 6);
memcpy(g_dev_number, gMacAddr, 6);
sprintf(g_dev_number_str, "%02X%02X%02X%02X%02X%02X",
@@ -290,8 +293,7 @@ void load_cfg_from_flash(void)
g_sub_code_enable.dgdus_enable = 0;
g_sub_code_enable.wbdus_enable = 0;
g_sub_code_enable.radar_enable = 0;
/* 2026-08-17 栈溢出修复后恢复 */
PRINT("CFG: memory defaults OK (no factory write)\n");
PRINT("CFG: memory defaults OK (factory written)\n");
return;
}