2020-03-15 20:24:45 +08:00
|
|
|
|
# BabyOS_Protocol
|
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
## 介绍
|
|
|
|
|
使用QTCreate编写的上位机,配合BabyOS的通用协议b_mod_protocol使用。上位机协议格式配置如下:
|
|
|
|
|
|
2022-08-18 00:50:00 +08:00
|
|
|
|
| 头部 | ID | 长度 | 指令 | 参数 | 校验 |
|
|
|
|
|
| ----- | ------ | ------ | ----- | -------- | ----- |
|
|
|
|
|
| 1Byte | 4Bytes | 2Bytes | 1Byte | 0~nBytes | 1Byte |
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`上位机的设备ID为 0x1314`
|
|
|
|
|
|
|
|
|
|
---
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 测试指令
|
|
|
|
|
|
|
|
|
|
| 指令 | 参数(7Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x1 | "BabyOS" |
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
---
|
|
|
|
|
|
2022-08-18 00:50:00 +08:00
|
|
|
|
|
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
### 设置时间指令
|
|
|
|
|
|
|
|
|
|
| 指令 | 参数(4Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x2 | UTC |
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
---
|
|
|
|
|
|
2022-08-18 00:50:00 +08:00
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
2024-05-15 07:43:13 +00:00
|
|
|
|
### 通知新固件信息 (触发OTA)
|
2022-08-21 21:27:19 +08:00
|
|
|
|
|
|
|
|
|
`(上位机==>设备)`
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
| 指令 | 参数(72Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x3 | 文件大小(4Bytes) CRC32校验值(4Bytes) 固件名(64Bytes)|
|
2024-05-15 07:46:40 +00:00
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`固件名长度不足64字节时,补0`
|
|
|
|
|
|
2023-09-16 21:50:11 +08:00
|
|
|
|
```c
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
uint32_t size;
|
|
|
|
|
uint32_t crc32;
|
|
|
|
|
char filename[64];
|
|
|
|
|
}fwinfo_t;
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-15 07:43:13 +00:00
|
|
|
|
### 回复OTA通知
|
|
|
|
|
|
|
|
|
|
`(设备==>上位机)`
|
2023-09-16 21:50:11 +08:00
|
|
|
|
|
2024-05-15 07:43:13 +00:00
|
|
|
|
| 指令 | 参数(0) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x3 | 无参数 |
|
2023-09-16 21:50:11 +08:00
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
---
|
2022-08-18 00:50:00 +08:00
|
|
|
|
|
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
### 请求分包数据指令
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`(设备==>上位机)`
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
| 指令 | 参数(2Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x4 | 分包序号(2Bytes)|
|
2024-05-15 07:46:40 +00:00
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`分包序号从0开始`
|
2022-08-18 00:50:00 +08:00
|
|
|
|
|
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
### 回复分包数据指令
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`(上位机==>设备)`
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
| 指令 | 参数(514Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x4 | 分包序号(2Bytes) 数据长度(512Bytes)|
|
2024-05-15 07:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`剩余长度不足512字节时,补0`
|
|
|
|
|
|
|
|
|
|
---
|
2022-08-18 00:50:00 +08:00
|
|
|
|
|
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
|
2023-09-16 21:50:11 +08:00
|
|
|
|
### 上报升级/传输文件结果指令
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`(设备==>上位机)`
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
| 指令 | 参数(1Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x5 | 升级结果(1Bytes)|
|
2024-05-15 07:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`校验成功:0`
|
|
|
|
|
`校验失败:1`
|
|
|
|
|
`固件名不匹配:2`
|
|
|
|
|
`文件长度不合理:3`
|
2024-07-01 17:20:54 +00:00
|
|
|
|
`超时:4`
|
2022-08-18 00:50:00 +08:00
|
|
|
|
|
|
|
|
|
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
### 确认升级结果指令
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
`(上位机==>设备)`
|
2022-08-17 20:26:34 +08:00
|
|
|
|
|
|
|
|
|
| 指令 | 参数(0Bytes) |
|
|
|
|
|
| ---- | ------------ |
|
|
|
|
|
| 0x5 | 无参数|
|
|
|
|
|
|
2022-08-21 21:27:19 +08:00
|
|
|
|
---
|
|
|
|
|
|
2023-09-16 21:50:11 +08:00
|
|
|
|
### 传输文件至FLASH
|
|
|
|
|
|
|
|
|
|
`(上位机==>设备)`
|
|
|
|
|
|
2024-05-14 10:11:15 +00:00
|
|
|
|
| 指令 | 参数(16Bytes) |
|
2023-09-16 21:50:11 +08:00
|
|
|
|
| ---- | ------------------------------------------------------------ |
|
|
|
|
|
| 0x6 | 文件大小(4Bytes) CRC32校验值(4Bytes) 设备号(4Bytes)偏移地址(4Bytes) |
|
|
|
|
|
|
2024-05-14 10:11:15 +00:00
|
|
|
|
|
2023-09-16 21:50:11 +08:00
|
|
|
|
|
|
|
|
|
```c
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
uint32_t size;
|
|
|
|
|
uint32_t crc32;
|
|
|
|
|
uint32_t dev_no;
|
|
|
|
|
uint32_t offset;
|
|
|
|
|
}file_trans_t;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
通过指令4获取文件数据。
|
|
|
|
|
|
2020-03-15 20:24:45 +08:00
|
|
|
|
|
|
|
|
|
|