给MCU进行OTA升级?Xmodem协议快速介绍

[复制链接]
查看777 | 回复5 | 2024-8-27 15:21:03 | 显示全部楼层 |阅读模式

给MCU进行OTA升级?Xmodem协议快速介绍

前言

在这之前,我甚至不知道啥是Xmodem协议,为此专门了解了一下这个协议,写下这篇文章方便大家快速了解这个协议,以及该协议的使用场景。总的概括这个协议就是——常用于串口的异步文件传输协议

使用场景

既然是文件传输协议,那Xmodem协议就是用来传输文件的,这样一想,天呐,WiFi模组就可以从服务器(爱星云)获取文件,然后再将文件通过Xmodem协议传输给MCU,这岂不是妥妥MCU的OTA方案。为此我写了一个MCU的OTA方案流程图。如下图所示:

image.png

基于这个流程,只要MCU端支持Xmodem协议就可以通过WiFi模组进行固件的更新而无需重新烧录固件。

为什么是Xmodem协议?

在传统的MCU+IOT的模式中,通常是WiFi模组运行AT固件,而MCU使用基于串口的AT框架,MCU通过AT指令可快速使设备具备联网且交互的能力。而OTA通常指的是WiFi对自身的固件进行升级,而也有特殊场景需要对MCU也进行固件升级,通常是使用透传的方式。但透传的方式是没有协议限制和约束的,很可能导致升级失败。而Xmodem协议是带有错误检查和校验机制,大大确定了传输文件的安全性和可靠性。

透传 Xmodem
数据校验和 ×
文件识别 ×
错误检查 ×
序列化传输 ×

Xmodem协议特点

  1. 简单性​:协议设计简单,易于实现。这使得它适合用于各种硬件平台和软件环境中。
  2. 分块传输​:数据以块的形式传输,每块数据通常为128字节或1024字节。每块数据都有一个块号和校验码,以确保数据完整性。
  3. 错误检测和重传​​:Xmodem协议包括错误检测机制。接收方会对每块数据进行校验,如果检测到错误,会请求重新传输该数据块。
  4. 确认和重试机制​:传输过程中,接收方会发送确认信号(ACK)表示成功接收到数据块。如果发送方没有收到确认信号,它会重新发送数据块,直到确认信号被接收到为止。

Xmodem协议工作流程

  1. 初始化​: 发送方和接收方建立串行连接,并进行协议初始化。接收方通常会发送一个准备接受数据的信号(如字符“C”)。
  2. 数据传输​: 发送方开始传输数据块,每个数据块都包含数据、块号、块号的反码和一个校验码。接收方在接收到数据块后,会进行校验并发送确认信号(ACK)以表示成功接收。如果接收到的数据块有错误,接收方会请求重传(NAK)。
  3. 结束传输​: 数据传输完成后,发送方通常会发送结束传输的信号(如字符“E”)。接收方确认所有数据块都已正确接收后,传输过程结束。

下期预告

华芯微特MCU触摸屏方案+爱星云APP控制,支持爱星云更新固件

回复

使用道具 举报

爱笑 | 2024-8-27 15:35:20 | 显示全部楼层
泽哥,去别的片场兼职了嘛
用心做好保姆工作
回复 支持 反对

使用道具 举报

lovzx | 2024-8-27 18:02:45 | 显示全部楼层
泽哥,发帖过去2个小时了,下期咋还没出来
回复 支持 反对

使用道具 举报

djy876 | 2024-8-27 21:23:24 | 显示全部楼层
爱笑 发表于 2024-8-27 15:35
泽哥,去别的片场兼职了嘛

泽哥园长喊你回家吃饭
回复 支持 反对

使用道具 举报

WT_0213 | 2024-8-28 08:48:40 | 显示全部楼层
园长每次都抓泽哥,泽哥给跑路了
回复 支持 反对

使用道具 举报

妖猊 | 2024-8-28 09:17:48 | 显示全部楼层
说好的博流教程呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则