本文主要描述嵌入式系统中应用之间通信协议的自定义实现,虽然已经存在一些成熟的通信协议格式,例如JSON、xml之类的,但是为了降低通讯信息带宽,提高通信效率,在嵌入式系统中通常使用自定义的通信协议,传输层则根据使用场景选择合适的通信载体,例如以太网TCP/IP或者uart之类的。
协议包格式定义:
字节索引 | 字段 | 长度 | 数据类型 | 描述 |
0 | sof | 1 | uint8_t | 固定帧头:0xFD 用于指示新数据包的开始 |
1 | len | 2 | uint16_t | 包长度 |
2 | ver | 1 | uint8_t | 协议版本 |
3 | seq | 1 | uint8_t | 数据包序列号 |
4 | sysid | 1 | uint8_t | 系统 ID (发送者) |
5 | compid | 1 | uint8_t | 组件ID (发送者) |
6 | msgid | 4 | uint32_t | 消息ID |
7 | payload | n-byte | uint8_t | 消息数据 |
8 | checksum | 2 | uint16_t | 校验位 |