From 95a1d2b5d200cb872061ebb0d6ff86d8a08217ec Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 17 Jul 2026 19:04:28 +0800 Subject: [PATCH] =?UTF-8?q?docs(roadmap):=20=E6=9D=BF=E8=BD=BDW25Q32(4MB)?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4,=20=E5=88=86=E5=8C=BA=E4=B8=8E=E5=AE=B9?= =?UTF-8?q?=E9=87=8F=E9=A2=84=E7=AE=97=E6=8C=89=E5=AE=9E=E9=99=85=E9=87=8D?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 分区: 参数64KB / 事件流256KB(~8000条) / OTA暂存512KB / 快照区~3.2MB - 快照容量三场景预算: 快档压满~4.4h / 繁忙车道~1.5天 / 一般车道~18天 - 补充延长保留的两个手段: 落盘与上报解耦 / 沿事件预触发环形 - 移除'W25Q型号确认'前置项 --- docs/ROADMAP.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index da19d77..5ef2430 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -65,23 +65,31 @@ ### P1.2 脱机日志子系统 🆕(W25Qxx SPI NOR) -**硬件底子**:DBN 外挂 W25Qxx(SPI1,驱动支持 Q80~Q128,**板上型号待确认**——容量决定快照保留时长)。参数区只占头部 <1KB,其余全部可规划。 +**硬件底子**:DBN 外挂 **W25Q32(SPI1,32Mbit = 4MB,已确认)**。参数区只占头部 <1KB,其余全部可规划。 -**分区规划(建议,按 W25Q64/8MB 算)**: +**分区规划(W25Q32 / 4MB)**: | 分区 | 容量 | 用途 | |------|------|------| | 参数区 | 64KB(0x000000 起,现用 <1KB) | 现有配置,留余量 | -| 事件日志区 | 256KB | 环形,关键事件流,不被快照冲掉 | -| 传感快照区 | ~6MB | 环形,0xC0 帧原样落盘 | +| 事件日志区 | 256KB(~8000 条 @32B) | 环形,关键事件流,不被快照冲掉 | | OTA 镜像暂存区 | 512KB | Loop 固件(64KB×2 版本回滚)+ 预留 DBN 镜像 | +| 传感快照区 | ~3.2MB(其余全部) | 环形,0xC0 帧原样落盘 | **两条日志流分开存**: 1. **事件流(必录,低速率)**:car_enter/car_leave(含时间量)、线圈断线/恢复、继电器动作、上电/复位(含复位原因)、MQTT/TCP 连接与断开、event_report ACK 超时/重发/放弃、配置变更(含来源:BLE/MQTT/TCP)、灵敏度换档、**时钟同步锚点**、固件升级开始/结果、日志清除操作(审计自记录) 2. **快照流(环形可覆盖)**:0xC0 帧二进制原样 + 头部(序号/boot_seq/mstick),~64B/条,**记录节奏与网络上报同频**(空闲按 interval、活动 300ms、car 沿立即)——直接挂在 `iot_sensor_ingest()` 同源出口,天然与上报一致 -**容量预算**(W25Q64):6MB 快照区 ≈ 9.8 万条;快档 300ms 连续压满也能存 ~8 小时,实际车流场景(空闲 30s + 过车突发)可保留**数周**。W25Q80(1MB)则只有 ~1.1 万条,**所以先确认板上焊的哪颗**。 +**容量预算**(W25Q32,快照区 3.2MB ≈ 5.2 万条 @64B): + +| 场景 | 落盘节奏 | 保留时长 | +|------|---------|---------| +| 最坏情况:快档 300ms 连续压满 | 3.3 条/s | ~4.4 小时 | +| 繁忙出入口(日均 2000 车次,每车次 ~15 条突发 + 空闲 30s 底噪) | ~3.3 万条/天 | ~1.5 天 | +| 一般车道(空闲 30s 为主) | ~2900 条/天 | **~18 天** | + +若现场要求更长保留:把空闲档快照落盘间隔与上报解耦(如落盘固定 60s),或快照只存"有沿事件前后 ±N 条"(预触发环形),容量立刻翻数倍——**实施时按现场需求选**。 **⚠ 无 RTC 的时间戳设计(最容易踩的坑)**:断电后 mstick 归零,纯 Unix 时间戳不可行。方案:每条记录带 `(boot_seq, mstick)`;每次时钟同步成功时写一条**时间锚点事件**(boot_seq ↔ unix_ts 映射);导出时由平台/小程序用锚点回算绝对时间。从未同步过的 boot 段只有相对时间——协议文档里要写明这个语义。 @@ -182,7 +190,7 @@ | 版本 | 内容 | 前置 | |------|------|------| | v1.1.0 | P0 全部(BLE 收尾 + TODO 清剿 + 回归全绿) | — | -| v1.2.x | P1 设备侧(脱机日志 + Loop 远程 OTA + 协议 V1.06) | edc_server 对接联调;W25Q 型号确认 | +| v1.2.x | P1 设备侧(脱机日志 + Loop 远程 OTA + 协议 V1.06) | edc_server 对接联调 | | v2.0.0 | P2 算法深化(抗干扰 + 测速分类 + 方向) | 现场干扰数据采集 | | v2.x | P3 会车控制 | P1 平台 + P2 方向判别 |