BabyOS_Protocol/README.md

176 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

2020-03-15 20:24:45 +08:00
# BabyOS_Protocol
## 介绍
使用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`
---
### 测试指令
| 指令 | 参数(7Bytes) |
| ---- | ------------ |
| 0x1 | "BabyOS" |
2022-08-21 21:27:19 +08:00
---
2022-08-18 00:50:00 +08:00
### 设置时间指令
| 指令 | 参数(4Bytes) |
| ---- | ------------ |
| 0x2 | UTC |
2022-08-21 21:27:19 +08:00
---
2022-08-18 00:50:00 +08:00
### 通知新固件信息 触发OTA
2022-08-21 21:27:19 +08:00
`(上位机==>设备)`
| 指令 | 参数(72Bytes) |
| ---- | ------------ |
| 0x3 | 文件大小4Bytes CRC32校验值(4Bytes) 固件名64Bytes|
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;
```
### 回复OTA通知
`(设备==>上位机)`
2023-09-16 21:50:11 +08: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-21 21:27:19 +08:00
`(设备==>上位机)`
| 指令 | 参数(2Bytes) |
| ---- | ------------ |
| 0x4 | 分包序号2Bytes|
2022-08-21 21:27:19 +08:00
`分包序号从0开始`
2022-08-18 00:50:00 +08:00
### 回复分包数据指令
2022-08-21 21:27:19 +08:00
`(上位机==>设备)`
| 指令 | 参数(514Bytes) |
| ---- | ------------ |
| 0x4 | 分包序号2Bytes 数据长度512Bytes|
2022-08-21 21:27:19 +08:00
`剩余长度不足512字节时补0`
---
2022-08-18 00:50:00 +08:00
2023-09-16 21:50:11 +08:00
### 上报升级/传输文件结果指令
2022-08-21 21:27:19 +08:00
`(设备==>上位机)`
| 指令 | 参数(1Bytes) |
| ---- | ------------ |
| 0x5 | 升级结果1Bytes|
2022-08-21 21:27:19 +08:00
`校验成功0`
`校验失败1`
`固件名不匹配2`
`文件长度不合理3`
`超时4`
2022-08-18 00:50:00 +08:00
### 确认升级结果指令
2022-08-21 21:27:19 +08:00
`(上位机==>设备)`
| 指令 | 参数(0Bytes) |
| ---- | ------------ |
| 0x5 | 无参数|
2022-08-21 21:27:19 +08:00
---
2023-09-16 21:50:11 +08:00
### 传输文件至FLASH
`(上位机==>设备)`
| 指令 | 参数(16Bytes) |
2023-09-16 21:50:11 +08:00
| ---- | ------------------------------------------------------------ |
| 0x6 | 文件大小4Bytes CRC32校验值(4Bytes) 设备号4Bytes偏移地址4Bytes |
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
2024-12-11 01:11:04 +08:00
### 获取UID
`(上位机==>设备)`
| 指令 | 参数(0Bytes) |
| ---- | ------------ |
| 0x7 | 无参数 |
`(设备=回复=>上位机)`
| 指令 | UID长度(1Bytes) | UID(nBytes) |
| ---- | --------------- | ----------- |
| 0x7 | | UID内容 |
### 写入SN
`(上位机==>设备)`
| 指令 | SN长度(1Bytes) | SN内容(nBytes) |
| ---- | -------------- | -------------- |
| 0x8 | | |
`(设备=回复=>上位机)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x8 | |