docs(ROADMAP): 脱机日志分区规划调整 — OTA暂存提前 + 按存储类型动态容量
- 分区顺序: 参数区 → OTA镜像暂存区 → 事件日志区 → 传感快照区 - 参数区(64KB)/OTA暂存(512KB) 固定; 事件日志+传感快照 按 JEDEC ID 动态 - 新增 W25Q80/Q32/Q64/Q128/Q256 容量映射表 (EF 40 14/16/17/18/19) - 事件日志区等比翻倍 128KB→2MB, 快照吃剩余; W25Q80(1MB) 为最小配置 - 容量预算段注明以 W25Q32 为基准, 其他芯片等比缩放
This commit is contained in:
+24
-10
@@ -65,25 +65,39 @@
|
|||||||
|
|
||||||
### P1.2 脱机日志子系统 🆕(W25Qxx SPI NOR)
|
### P1.2 脱机日志子系统 🆕(W25Qxx SPI NOR)
|
||||||
|
|
||||||
**硬件底子**:DBN 外挂 **W25Q32(SPI1,32Mbit = 4MB,已确认)**。参数区只占头部 <1KB,其余全部可规划。
|
**硬件底子**:DBN 外挂 SPI NOR(SPI1)。默认 **W25Q32(32Mbit = 4MB,已确认)**;**兼容 W25Q80 / W25Q64 / W25Q128 / W25Q256**,上电先读 JEDEC ID 识别存储类型,再按类型映射各分区容量。
|
||||||
|
|
||||||
**分区规划(W25Q32 / 4MB)**:
|
**分区规划(顺序:参数区 → OTA 镜像暂存区 → 事件日志区 → 传感快照区)**:
|
||||||
|
|
||||||
| 分区 | 容量 | 用途 |
|
| 分区 | 容量策略 | 用途 |
|
||||||
|------|------|------|
|
|------|---------|------|
|
||||||
| 参数区 | 64KB(0x000000 起,现用 <1KB) | 现有配置,留余量 |
|
| 参数区 | **固定 64KB**(0x000000 起,现用 <1KB) | 现有配置,留余量 |
|
||||||
| 事件日志区 | 256KB(~8000 条 @32B) | 环形,关键事件流,不被快照冲掉 |
|
| OTA 镜像暂存区 | **固定 512KB** | Loop 固件(64KB×2 版本回滚)+ 预留 DBN 镜像 |
|
||||||
| OTA 镜像暂存区 | 512KB | Loop 固件(64KB×2 版本回滚)+ 预留 DBN 镜像 |
|
| 事件日志区 | **随存储类型**(见下表) | 环形,关键事件流,不被快照冲掉 |
|
||||||
| 传感快照区 | ~3.2MB(其余全部) | 环形,0xC0 帧原样落盘 |
|
| 传感快照区 | **随存储类型**(= 总容量 − 参数区 − OTA − 事件日志区) | 环形,0xC0 帧原样落盘 |
|
||||||
|
|
||||||
|
**存储类型 ↔ 容量映射表**(上电读 JEDEC ID 后选档):
|
||||||
|
|
||||||
|
| JEDEC ID | 芯片 | 总容量 | 参数区 | OTA 暂存 | 事件日志区 | 传感快照区 |
|
||||||
|
|----------|------|--------|--------|----------|-----------|-----------|
|
||||||
|
| EF 40 14 | W25Q80 | 1MB | 64KB | 512KB | **128KB**(~4000 条) | **320KB** |
|
||||||
|
| EF 40 16 | W25Q32(默认) | 4MB | 64KB | 512KB | **256KB**(~8000 条) | **~3.19MB** |
|
||||||
|
| EF 40 17 | W25Q64 | 8MB | 64KB | 512KB | **512KB**(~16000 条) | **~6.94MB** |
|
||||||
|
| EF 40 18 | W25Q128 | 16MB | 64KB | 512KB | **1MB**(~32000 条) | **~14.44MB** |
|
||||||
|
| EF 40 19 | W25Q256 | 32MB | 64KB | 512KB | **2MB**(~64000 条) | **~29.44MB** |
|
||||||
|
|
||||||
|
- 事件日志区容量随芯片**等比翻倍**(128KB→2MB),保证日志保留时长不随硬件降配而缩水
|
||||||
|
- 传感快照区吃剩余容量;W25Q80(1MB)为最小可部署配置,快照仅 320KB(约 5200 条 @64B),适合纯日志场景
|
||||||
|
- 分区边界在**上电初始化时**由 JEDEC ID 计算得出,offlog/快照代码按运行时分区表寻址,不写死
|
||||||
|
|
||||||
**两条日志流分开存**:
|
**两条日志流分开存**:
|
||||||
|
|
||||||
1. **事件流(必录,低速率)**:car_enter/car_leave(含时间量)、线圈断线/恢复、继电器动作、上电/复位(含复位原因)、MQTT/TCP 连接与断开、event_report ACK 超时/重发/放弃、配置变更(含来源:BLE/MQTT/TCP)、灵敏度换档、**时钟同步锚点**、固件升级开始/结果、日志清除操作(审计自记录)
|
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()` 同源出口,天然与上报一致
|
2. **快照流(环形可覆盖)**:0xC0 帧二进制原样 + 头部(序号/boot_seq/mstick),~64B/条,**记录节奏与网络上报同频**(空闲按 interval、活动 300ms、car 沿立即)——直接挂在 `iot_sensor_ingest()` 同源出口,天然与上报一致
|
||||||
|
|
||||||
**容量预算**(W25Q32,快照区 3.2MB ≈ 5.2 万条 @64B):
|
**容量预算**(**以 W25Q32 为基准**:事件日志 256KB / 快照区 ~3.19MB ≈ 5.2 万条 @64B;其他芯片按映射表等比缩放——W25Q64 快照保留时长 ×2.2,W25Q80 快照仅 ~5200 条,**事件日志保留时长不缩水**):
|
||||||
|
|
||||||
| 场景 | 落盘节奏 | 保留时长 |
|
| 场景 | 落盘节奏 | 保留时长(W25Q32) |
|
||||||
|------|---------|---------|
|
|------|---------|---------|
|
||||||
| 最坏情况:快档 300ms 连续压满 | 3.3 条/s | ~4.4 小时 |
|
| 最坏情况:快档 300ms 连续压满 | 3.3 条/s | ~4.4 小时 |
|
||||||
| 繁忙出入口(日均 2000 车次,每车次 ~15 条突发 + 空闲 30s 底噪) | ~3.3 万条/天 | ~1.5 天 |
|
| 繁忙出入口(日均 2000 车次,每车次 ~15 条突发 + 空闲 30s 底噪) | ~3.3 万条/天 | ~1.5 天 |
|
||||||
|
|||||||
Reference in New Issue
Block a user