前言

  • 据上次更新文章已经两个星期了,因为工作的原因,没有时间更新。以后我也会尽量抽空总结近期的知识点。

  • 今天这篇文章是属于专辑《TCP-UDP协议栈》里面的一篇文章。这篇文章也是描述OTA的新的方案。前两篇文章是关于下位机的mini UDP代码实现,那么我们写了小型网络协议栈究竟可以做什么?答案是OTA。之前也写了两篇关于手写UDP协议栈的,如下:

  • 教你动手写UDP协议栈
  • 教你动手写UDP协议栈-DHCP数据包解析<2>
  • 那肯定有人问,OTA采用现成的协议栈不香吗,为什么要自己写协议栈。究竟有啥好处?答案如下:

  1. 因为现成的协议栈比较大,而且OTA功能用不到那么多协议栈功能。
  2. 现在物联网的时代,很多设备都是MCU + WIFI,在一些情况可能你要对MCU和WIFI进行升级,大部分的升级方式如下图,PC或服务器发送升级包到MCU,然后MCU转发升级包给WIFI,这样实现WIFI模块的升级,很浪费资源,而且还要求MCU上的flash更加大。这样是一个不怎么理智的做法。如果这样的方式给MCU升级确实没有啥问题。

教你动手写UDP协议栈 - OTA上位机<3>_python

  1. 自己写的mini UDP协议栈实质是放在wifi模块上的,通过制定的协议将OTA包发送出去,WIFI模块的mini UDP协议栈拦截制定协议的OTA包,然后进行升级。如下图,这样的形式,MCU不用参与WIFI的升级,可以说WIFI可以不知不觉的进行升级,MCU一点知觉也没有。这样的升级方式快速,稳定。

教你动手写UDP协议栈 - OTA上位机<3>_协议栈_02

  • 通过上述的描述,总的来说就是简化wifi模块的OTA功能。降低MCU的负担。

上位机

《Mini UDP OTA Tool》这是一个非常简陋的软件,采用Python写的。在这我想吐槽一下,Python写上位机真心不好写,我用过几种语言写过上位机,Python写上位机是最痛苦的。

这个软件支持一键批量设备串行升级。也可根据版本号,对某一批设备进行一键升级。可以指定某个网卡设备上的设备进行升级。教你动手写UDP协议栈 - OTA上位机<3>_python_03

软件说明:

  1. OTA固件路径选择。
  2. 需要进行OTA的设备选择。
  3. 网卡选择。
  4. OTA流程显示。
  5. OTA进度条。
  6. 扫描设备。
  7. 一键升级按钮。

教你动手写UDP协议栈 - OTA上位机<3>_python_04

实操演示

通过对WIFI默默的升级,MCU一点知觉都没有,WIFI就完成了固件的升级,这样的方案比起转发升级效率高很多,不影响MCU的性能,只会在升级的过程中影响一点网速。

教你动手写UDP协议栈 - OTA上位机<3>_上位机_05

声明

由于这个上位机的的代码包含一些协议的东西,是不能对外暴露的。如果你对这个方案感兴趣,欢迎私聊我。

关注微信公众号『Rice嵌入式开发技术分享』

教你动手写UDP协议栈 - OTA上位机<3>_协议栈_06