feat(vd960DBN): 事件日志区动态分区 — JEDEC ID 选档 (ROADMAP 落地)
- offlog.h: OfflogPart 运行时分区表 + g_offlog_part; AREA_BASE 改 0x090000 (参数64KB+OTA512KB); 容量宏展开为运行时值(主体零改动) - offlog.c: offlog_part_detect() 读 JEDEC ID → 事件区容量 W25Q32=512KB/16256条, Q64=1MB/32640, Q128=2MB/65408, Q256=4MB/130944 - storage.c/h: SPI_Flash_ReadJEDEC_ID() (0x9F, 校验 EF 40) - 旧固件事件区 0x010000 自动废弃(新地址无 magic → 重建), 预期行为 - 测试: mock JEDEC=0x16 + g_offlog_part, 15 例全过 - 文档: BLE/MQTT/TCP 协议 capacity 8064→动态, 交互示例, devlog
This commit is contained in:
@@ -112,6 +112,51 @@ static void performPeriodicTask(void)
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-12 — 事件日志区动态分区(ROADMAP 落地:JEDEC ID 选档)
|
||||
|
||||
### 背景
|
||||
|
||||
ROADMAP P1.2 更新:分区顺序调整为 **参数区 → OTA 镜像暂存区 → 事件日志区 → 传感快照区**;事件日志区容量随存储芯片动态(W25Q32=512KB / Q64=1MB / Q128=2MB / Q256=4MB),上电读 JEDEC ID 选档。移除 W25Q80 支持。
|
||||
|
||||
### 代码改动
|
||||
|
||||
| 文件 | 改动 |
|
||||
|------|------|
|
||||
| `offlog.h` | 新增 `OfflogPart` 运行时分区表 + `g_offlog_part`;`OFFLOG_AREA_BASE` 改 0x090000(参数64KB+OTA512KB);`OFFLOG_AREA_SIZE/DATA_SECTOR_CNT/MAX_RECORDS/DATA_SIZE` 宏改为展开运行时值(主体零改动);新增 `OFFLOG_CHIP_W25Q32/64/128/256` JEDEC ID 宏 |
|
||||
| `offlog.c` | 定义 `g_offlog_part`(默认 W25Q32 512KB/16256条);新增 `offlog_part_detect()`(读 JEDEC ID → 填表,未知按 W25Q32 兜底);`offlog_init` 开头调用 |
|
||||
| `storage.c` | 新增 `SPI_Flash_ReadJEDEC_ID()`(0x9F 读 3 字节,校验 EF 40,返回 device id) |
|
||||
| `storage.h` | 声明 |
|
||||
|
||||
> 注:offlog.h/c 是 **UTF-8**(2026-08-04 新建),storage.c 是 **GBK**——改造按各自编码精确替换,未破坏。
|
||||
|
||||
### 容量对照
|
||||
|
||||
| 芯片 | JEDEC | 事件区 | 数据扇区 | max_records | capacity LE |
|
||||
|------|-------|--------|---------|-------------|-------------|
|
||||
| W25Q32(默认) | 0x16 | 512KB | 127 | 16256 | `80 3F 00 00` |
|
||||
| W25Q64 | 0x17 | 1MB | 255 | 32640 | `80 7F 00 00` |
|
||||
| W25Q128 | 0x18 | 2MB | 511 | 65408 | `80 FF 00 00` |
|
||||
| W25Q256 | 0x19 | 4MB | 1023 | 130944 | `80 FF 01 00` |
|
||||
|
||||
### 兼容性
|
||||
|
||||
- 旧固件事件区在 0x010000(256KB),新固件在 0x090000——**旧日志数据不会误读**(新地址头扇区无 magic → 视为全新区自动重建),属预期行为
|
||||
- `offlog_init` 在 `storage_init` 之后调用(peripheral_main.c:305-306),SPI 已就绪
|
||||
|
||||
### 文档同步
|
||||
|
||||
- `DLD960_BLE协议.md` / `DLD960_IoT_MQTT协议.md` / `DLD960_TCP_JSON协议.md`:capacity 字段 8064 → 动态(含四芯片对照)
|
||||
- `DLD960_BLE日志查询交互.md`:STAT 示例 capacity 更新
|
||||
- `ROADMAP.md`:P1.2 分区规划(前序提交)
|
||||
|
||||
### 验证
|
||||
|
||||
- `tests/test_offlog.c`:mock JEDEC=0x16,8 例全过(环形回绕自动适配 16256)
|
||||
- `tests/test_ble_offlog.c`:mock `g_offlog_part`,capacity 断言 16256,7 例全过
|
||||
- 地址范围模拟:四芯片事件区 0x090000 起均不超芯片容量
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-12 — 续2:第二分包丢失 — 根因确认(响应缓冲越界踩踏 g_notify_buftemp)
|
||||
|
||||
### 破案过程(三份现场日志 + .map 对照)
|
||||
|
||||
Reference in New Issue
Block a user