前言
- 据上次更新文章已经两个星期了,因为工作的原因,没有时间更新。以后我也会尽量抽空总结近期的知识点。
- 今天这篇文章是属于专辑《TCP-UDP协议栈》里面的一篇文章。这篇文章也是描述OTA的新的方案。前两篇文章是关于下位机的mini UDP代码实现,那么我们写了小型网络协议栈究竟可以做什么?答案是OTA。之前也写了两篇关于手写UDP协议栈的,如下:
- 教你动手写UDP协议栈
- 教你动手写UDP协议栈-DHCP数据包解析<2>
- 那肯定有人问,OTA采用现成的协议栈不香吗,为什么要自己写协议栈。究竟有啥好处?答案如下:
- 因为现成的协议栈比较大,而且OTA功能用不到那么多协议栈功能。
- 现在物联网的时代,很多设备都是MCU WIFI,在一些情况可能你要对MCU和WIFI进行升级,大部分的升级方式如下图,PC或服务器发送升级包到MCU,然后MCU转发升级包给WIFI,这样实现WIFI模块的升级,很浪费资源,而且还要求MCU上的flash更加大。这样是一个不怎么理智的做法。如果这样的方式给MCU升级确实没有啥问题。
- 自己写的mini UDP协议栈实质是放在wifi模块上的,通过制定的协议将OTA包发送出去,WIFI模块的mini UDP协议栈拦截制定协议的OTA包,然后进行升级。如下图,这样的形式,MCU不用参与WIFI的升级,可以说WIFI可以不知不觉的进行升级,MCU一点知觉也没有。这样的升级方式快速,稳定。
- 通过上述的描述,总的来说就是简化wifi模块的OTA功能。降低MCU的负担。
上位机
《Mini UDP OTA Tool》这是一个非常简陋的软件,采用Python写的。在这我想吐槽一下,Python写上位机真心不好写,我用过几种语言写过上位机,Python写上位机是最痛苦的。
这个软件支持一键批量设备串行升级。也可根据版本号,对某一批设备进行一键升级。可以指定某个网卡设备上的设备进行升级。
软件说明:
- OTA固件路径选择。
- 需要进行OTA的设备选择。
- 网卡选择。
- OTA流程显示。
- OTA进度条。
- 扫描设备。
- 一键升级按钮。
实操演示
通过对WIFI默默的升级,MCU一点知觉都没有,WIFI就完成了固件的升级,这样的方案比起转发升级效率高很多,不影响MCU的性能,只会在升级的过程中影响一点网速。
声明
由于这个上位机的的代码包含一些协议的东西,是不能对外暴露的。如果你对这个方案感兴趣,欢迎私聊我。