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:
@@ -60,16 +60,16 @@ Magic | Header | Data | CheckByte
|
||||
| 1 | 2 | `boot_seq` | 当前启动序号(每次上电 +1,区分复位段) |
|
||||
| 3 | 4 | `count` | 有效记录条数(0~8064,环形覆盖后 < capacity) |
|
||||
| 7 | 4 | `capacity` | 容量上限(8064) |
|
||||
| 11 | 4 | `seq_first` | 逻辑首条记录全局序号(`seq_last - count + 1`,count=0 时为 0) |
|
||||
| 15 | 4 | `seq_last` | 最新一条记录全局序号(跨 boot 单调递增) |
|
||||
| 3 | 4 | `count` | 有效记录条数(0~capacity,环形覆盖后 < capacity) |
|
||||
| 7 | 4 | `capacity` | 容量上限(**随存储芯片动态**:W25Q32=16256 / W25Q64=32640 / W25Q128=65408 / W25Q256=130944) |
|
||||
|
||||
示例(boot_seq=2, count=1234, capacity=8064, seq_first=100, seq_last=1333):
|
||||
示例(boot_seq=2, count=1234, capacity=16256, seq_first=100, seq_last=1333):
|
||||
|
||||
```
|
||||
8F 00 14 25 00 02 00 D2 04 00 00 00 80 1F 00 00 00 64 00 00 00 35 05 00 00 00 XX XX
|
||||
8F 00 14 25 00 02 00 D2 04 00 00 00 80 3F 00 00 00 64 00 00 00 35 05 00 00 00 XX XX
|
||||
-- -- -- -- -------------------- -------------------- -------------------- -----
|
||||
| | | | status count=1234 capacity=8064 seq_first=100
|
||||
| | | cmd=0x25 boot_seq=2 seq_last=1333
|
||||
| | | | status count=1234 capacity=16256 seq_first=100
|
||||
| | | | cmd=0x25 boot_seq=2 seq_last=1333
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -78,7 +78,7 @@ Magic | Header | Data | CheckByte
|
||||
| 0 | 1 | `status` | `00` | OK |
|
||||
| 1 | 2 | `boot_seq` | 待补(需原始 hex) | 启动序号 |
|
||||
| 3 | 4 | `count` | `A2 00 00 00` = 162 | 有效记录条数 |
|
||||
| 7 | 4 | `capacity` | `80 1F 00 00` = 8064 | 容量上限 |
|
||||
| 7 | 4 | `capacity` | `80 3F 00 00` = 16256(W25Q32 512KB:127 数据扇区 × 128 条) | 容量上限 |
|
||||
| 11 | 4 | `seq_first` | `01 00 00 00` = 1 | 逻辑首条全局序号 |
|
||||
| 15 | 4 | `seq_last` | `A2 00 00 00` = 162 | 最新全局序号 |
|
||||
|
||||
|
||||
@@ -651,7 +651,7 @@ dld960/{dev_serial}/{direction}
|
||||
## 4.16 查询脱机事件日志统计 `log_stat`
|
||||
|
||||
> Topic: `dld960/{sn}/srv`
|
||||
> 设备本地 W25Q32 环形事件日志(256KB / 8064 条,掉电不丢)。用于日志拉取前的分页定位。
|
||||
> 设备本地 W25Qxx 环形事件日志(事件区动态:W25Q32=512KB/16256 条,掉电不丢)。用于日志拉取前的分页定位。
|
||||
|
||||
**请求:**
|
||||
|
||||
@@ -672,7 +672,7 @@ dld960/{dev_serial}/{direction}
|
||||
"enabled": true,
|
||||
"boot_seq": 2,
|
||||
"count": 1234,
|
||||
"capacity": 8064,
|
||||
"capacity": 16256,
|
||||
"seq_first": 100,
|
||||
"seq_last": 1333
|
||||
}
|
||||
@@ -683,8 +683,8 @@ dld960/{dev_serial}/{direction}
|
||||
| `stream` | string | 日志流,当前仅 `event`(快照流预留) |
|
||||
| `enabled` | bool | 日志功能是否启用(Flash 初始化成功) |
|
||||
| `boot_seq` | uint16 | 当前启动序号(每次上电 +1,区分复位段) |
|
||||
| `count` | uint16 | 有效记录条数(0~8064,环形覆盖后 < capacity) |
|
||||
| `capacity` | uint16 | 容量上限(8064) |
|
||||
| `count` | uint16 | 有效记录条数(0~capacity,环形覆盖后 < capacity) |
|
||||
| `capacity` | uint16 | 容量上限(**随存储芯片动态**:W25Q32=16256 / W25Q64=32640 / W25Q128=65408 / W25Q256=130944) |
|
||||
| `seq_first` | uint32 | 逻辑首条记录全局序号(`seq_last - count + 1`) |
|
||||
| `seq_last` | uint32 | 最新一条记录全局序号(跨 boot 单调递增) |
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ Client Device (DLD960)
|
||||
|
||||
## 4.16 查询脱机事件日志统计 `log_stat`
|
||||
|
||||
> 设备本地 W25Q32 环形事件日志(256KB / 8064 条,掉电不丢)。用于日志拉取前的分页定位。
|
||||
> 设备本地 W25Qxx 环形事件日志(事件区动态:W25Q32=512KB/16256 条,掉电不丢)。用于日志拉取前的分页定位。
|
||||
|
||||
**请求:**
|
||||
|
||||
@@ -358,7 +358,7 @@ Client Device (DLD960)
|
||||
**响应 data:**
|
||||
|
||||
```json
|
||||
{"stream":"event","enabled":true,"boot_seq":2,"count":1234,"capacity":8064,"seq_first":100,"seq_last":1333}
|
||||
{"stream":"event","enabled":true,"boot_seq":2,"count":1234,"capacity":16256,"seq_first":100,"seq_last":1333}
|
||||
```
|
||||
|
||||
| data 字段 | 类型 | 说明 |
|
||||
@@ -366,8 +366,8 @@ Client Device (DLD960)
|
||||
| `stream` | string | 日志流,当前仅 `event`(快照流预留) |
|
||||
| `enabled` | bool | 日志功能是否启用(Flash 初始化成功) |
|
||||
| `boot_seq` | uint16 | 当前启动序号(每次上电 +1,区分复位段) |
|
||||
| `count` | uint16 | 有效记录条数(0~8064) |
|
||||
| `capacity` | uint16 | 容量上限(8064) |
|
||||
| `count` | uint16 | 有效记录条数(0~capacity) |
|
||||
| `capacity` | uint16 | 容量上限(**随存储芯片动态**:W25Q32=16256 / W25Q64=32640 / W25Q128=65408 / W25Q256=130944) |
|
||||
| `seq_first` | uint32 | 逻辑首条记录全局序号(`seq_last - count + 1`) |
|
||||
| `seq_last` | uint32 | 最新一条记录全局序号(跨 boot 单调递增) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user