给MCU进行OTA升级?Xmodem协议快速介绍
前言
在这之前,我甚至不知道啥是Xmodem协议,为此专门了解了一下这个协议,写下这篇文章方便大家快速了解这个协议,以及该协议的使用场景。总的概括这个协议就是——常用于串口的异步文件传输协议。
使用场景
既然是文件传输协议,那Xmodem协议就是用来传输文件的,这样一想,天呐,WiFi模组就可以从服务器(爱星云)获取文件,然后再将文件通过Xmodem协议传输给MCU,这岂不是妥妥MCU的OTA方案。为此我写了一个MCU的OTA方案流程图。如下图所示:
基于这个流程,只要MCU端支持Xmodem协议就可以通过WiFi模组进行固件的更新而无需重新烧录固件。
为什么是Xmodem协议?
在传统的MCU+IOT的模式中,通常是WiFi模组运行AT固件,而MCU使用基于串口的AT框架,MCU通过AT指令可快速使设备具备联网且交互的能力。而OTA通常指的是WiFi对自身的固件进行升级,而也有特殊场景需要对MCU也进行固件升级,通常是使用透传的方式。但透传的方式是没有协议限制和约束的,很可能导致升级失败。而Xmodem协议是带有错误检查和校验机制,大大确定了传输文件的安全性和可靠性。
|
透传 |
Xmodem |
数据校验和 |
× |
√ |
文件识别 |
× |
√ |
错误检查 |
× |
√ |
序列化传输 |
× |
√ |
Xmodem协议特点
- 简单性:协议设计简单,易于实现。这使得它适合用于各种硬件平台和软件环境中。
- 分块传输:数据以块的形式传输,每块数据通常为128字节或1024字节。每块数据都有一个块号和校验码,以确保数据完整性。
- 错误检测和重传:Xmodem协议包括错误检测机制。接收方会对每块数据进行校验,如果检测到错误,会请求重新传输该数据块。
- 确认和重试机制:传输过程中,接收方会发送确认信号(ACK)表示成功接收到数据块。如果发送方没有收到确认信号,它会重新发送数据块,直到确认信号被接收到为止。
Xmodem协议工作流程
- 初始化: 发送方和接收方建立串行连接,并进行协议初始化。接收方通常会发送一个准备接受数据的信号(如字符“C”)。
- 数据传输: 发送方开始传输数据块,每个数据块都包含数据、块号、块号的反码和一个校验码。接收方在接收到数据块后,会进行校验并发送确认信号(ACK)以表示成功接收。如果接收到的数据块有错误,接收方会请求重传(NAK)。
- 结束传输: 数据传输完成后,发送方通常会发送结束传输的信号(如字符“E”)。接收方确认所有数据块都已正确接收后,传输过程结束。
下期预告
华芯微特MCU触摸屏方案+爱星云APP控制,支持爱星云更新固件 |