From 99ef6348d73316191de2e7b50e264a3636a3b584 Mon Sep 17 00:00:00 2001 From: wangfq Date: Wed, 12 Aug 2026 19:39:50 +0800 Subject: [PATCH] =?UTF-8?q?test(vd960DBN):=20=E8=B7=B3=E8=BF=87=20offlog?= =?UTF-8?q?=5Fboot=20=E5=86=99=20=E2=80=94=20=E4=BA=8C=E5=88=86=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=20SPI=20=E8=A7=A6=E5=8F=91=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit f766530(跳过snap)仍崩 → 非快照SPI; 旧固件也有 offlog_boot 32B 写 → 硬件一直有问题只是未暴露; 另一差异: 事件区 0x010000(旧) vs 0x090000(新) 本版: #if 0 offlog_boot 写 (保留 RMVF 清除) 不崩 → offlog_boot 写(或切扇区擦除)触发; 崩 → 更早 SPI 读操作/非SPI --- .../OnlyUpdateApp_Peripheral/APP/peripheral_main.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c index dac2a87..7945969 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/peripheral_main.c @@ -329,12 +329,17 @@ int main(void) PRINT("INIT: snap skipped (offlog-only SPI seq)\n"); #endif - /* 复位原因: 必须在初始化后立即读 (离复位时刻最近), 并清除标志, - 保证下次上电只反映本次复位原因 (RCC_RSTSCKR, STM32F1/CH32V20x 兼容) */ + /* ===== 实验: 跳过 offlog_boot SPI 写 (2026-08-12) ===== + 目的: 二分定位 — 跳过 snap 仍崩 → 是否是 offlog_boot 32B 写触发 + 不崩 → offlog_boot 写(含切扇区擦除)触发; 崩 → 更早 SPI 读操作或非SPI */ { uint32_t rcc_rst = OFFLOG_RCC_RSTSCKR; +#if 0 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();