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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user