【SemiDrive G9X】 【PTG5.0】:TCP 传输协议定制 for G9 OTA 升级方案

一、概述

TCP (Transmission Control Protocol) 和 UDP(User Datagram Protocol) 协议属于传输层协议。其中 TCP 提供 IP 环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复 用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而 UDP 则不为 IP 提供可靠性、 流控或差错恢复功能。一般来说,TCP 对应的是可靠性要求高的应用,而 UDP 对应的则是可靠性要求低、传输经济的应用。

本文主要讲述的是 TCP 传输协议的定制。

二、使用环境

方案:G9 OTA 升级方案

三、TCP 报文格式

TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源,以下是 TCP 报文格式,我们定制协议主要是针对可选项子段。

四、握手包

以下是定制的握手包格式。

五、数据包

以下是定制的数据包格式。

六、应答包

以下是定制的应答包格式。

七、结束包

以下是定制的结束包格式。

八、帧头和指令类型说明

对于帧头和指令类型,按照如下定制。

帧头

0xAC0xDF

指令类型

0x230x84(命令)

0x840x23bin 文件大小)

0x210x35(应答)

0x530x01Over

九、具体帧格式流程说明

以下是具体帧格式流程说明。

握手包 1

0xAC  0xDF  0x23  0x84  0x01 

G9:请求发送版本号

握手包 1

0xAC  0xDF  0x23  0x84  版本号

server:发送版本号给 G9

握手包 2

0xAC  0xDF  0x23  0x84  0x02 

G9:请求发送固件

握手包 2

0xAC  0xDF  0x84  0x23  Len  Len  Len 

server:发送固件 G9 大小

数据包 1

……

固件包 1

……

……

固件包 ……

数据包 N

……

固件包 N

应答包 1

0xAC  0xDF  0x21  0x35 0x01

G9:发送固件接收完毕信号

应答包 1

0xAC  0xDF  0x21  0x35  0x01 MD5  MD5

server:发送 MD5 校验码给 G9

应答包 2

0xAC  0xDF  0x21  0x35  0x02

G9:发送 MD5 校验是否成功给 server

应答包 2

0xAC  0xDF  0x21  0x35  0x02 0x01

server:发送接收 MD5 校验成功给 G9

结束包 1

0xAC  0xDF  0x53  0x01  0xAA  0xBB  0xCC

G9:发送结束包给 server

结束包 1

0xAC  0xDF  0x53  0x01  0xAA  0xBB  0xCC

server:发送 结束包给 G9

十、参考文档

链接1:https://zhuanlan.zhihu.com/p/82740675

链接2:(43条消息) windows、虚拟机下的ubuntu、开发板即能ping通,又能上网的设置方法_@ping的博客-CSDN博客

十一、总结

此 TCP 传输协议适用于 G9 OTA 升级方案。

接下来将持续更新 G9 OTA 升级方案系列,感兴趣的关注或评论区留言吧。

相关视频

SemiDrive G9 OTA 升级演示

目前 G9 OTA 升级方案主要由以下两部分组成:
1、OTA 远程服务器
1.1 可支持维护人员上传固件以及编辑固件信息;
1.2 封装固件发送接口;
1.3 封装信息查询接口。
2、G9 将固件包以及版本号比较结果通过 CAN 发送给 MCU
2.1 支持查询 MCU 固件版本以及服务器固件版本作比较,提示用户是否升级 MCU 的固件;
2.2 支持获取完整服务器的固件到本地;
2.3 支持将本地固件完整快速通过 CAN 总线发送给 MCU。
OTA 升级这部分程序主要发到 Ubuntu 虚拟机上运行,G9X 开发板主要实现获取 OTA 远程服务器的固件、固件信息、 MCU 的固件版本信息以及发送最新固件给 MCU 进行升级。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论