test(vd960DBN): 跳过 offlog_boot 写 — 二分定位 SPI 触发点
f766530(跳过snap)仍崩 → 非快照SPI; 旧固件也有 offlog_boot 32B 写 → 硬件一直有问题只是未暴露; 另一差异: 事件区 0x010000(旧) vs 0x090000(新) 本版: #if 0 offlog_boot 写 (保留 RMVF 清除) 不崩 → offlog_boot 写(或切扇区擦除)触发; 崩 → 更早 SPI 读操作/非SPI
This commit is contained in:
@@ -329,12 +329,17 @@ int main(void)
|
|||||||
PRINT("INIT: snap skipped (offlog-only SPI seq)\n");
|
PRINT("INIT: snap skipped (offlog-only SPI seq)\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* 复位原因: 必须在初始化后立即读 (离复位时刻最近), 并清除标志,
|
/* ===== 实验: 跳过 offlog_boot SPI 写 (2026-08-12) =====
|
||||||
保证下次上电只反映本次复位原因 (RCC_RSTSCKR, STM32F1/CH32V20x 兼容) */
|
目的: 二分定位 — 跳过 snap 仍崩 → 是否是 offlog_boot 32B 写触发
|
||||||
|
不崩 → offlog_boot 写(含切扇区擦除)触发; 崩 → 更早 SPI 读操作或非SPI */
|
||||||
{
|
{
|
||||||
uint32_t rcc_rst = OFFLOG_RCC_RSTSCKR;
|
uint32_t rcc_rst = OFFLOG_RCC_RSTSCKR;
|
||||||
|
#if 0
|
||||||
offlog_boot(rcc_rst);
|
offlog_boot(rcc_rst);
|
||||||
OFFLOG_RCC_RSTSCKR |= OFFLOG_RST_RMVF; /* RMVF (bit24): 清复位标志 (原写 bit27=PORRSTF 无效) */
|
#else
|
||||||
|
PRINT("SKIP: offlog_boot write skipped\n");
|
||||||
|
#endif
|
||||||
|
OFFLOG_RCC_RSTSCKR |= OFFLOG_RST_RMVF; /* RMVF (bit24): 清复位标志 */
|
||||||
}
|
}
|
||||||
|
|
||||||
load_cfg_from_flash();
|
load_cfg_from_flash();
|
||||||
|
|||||||
Reference in New Issue
Block a user