0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子设计 作者:电子设计 2020-12-24 17:46 次阅读

前言

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

今天这篇文章是属于专辑《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写上位机是最痛苦的。

这个软件支持一键批量设备串行升级。也可根据版本号,对某一批设备进行一键升级。可以指定某个网卡设备上的设备进行升级。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式设计
    +关注

    关注

    0

    文章

    389

    浏览量

    21145
  • UDP协议栈
    +关注

    关注

    0

    文章

    4

    浏览量

    1100
收藏 人收藏

    评论

    相关推荐

    udp是什么协议udp协议介绍

    UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,不保证数据传输的可靠性,只负责把数据包发送给目标地址。它提供了简单、高效的数据传输方式,适合对传输质量
    的头像 发表于 04-19 15:57 123次阅读

    全志R128基础组件开发——显示与屏幕驱动②

    ;0&amp;gt;&amp;lt;3&;gt;&am
    发表于 01-31 14:25

    UDP协议的原理

    为啥要自己写一个mini UDP协议栈?因为我们干偷偷摸摸的事情,哈哈哈!!! 其实是为了不跑一个庞大的LWIP协议栈,通过自己写的mini udp
    的头像 发表于 11-10 10:08 306次阅读
    <b class='flag-5'>UDP</b><b class='flag-5'>协议</b>的原理

    请问单片程序中GPIO_AF_2 &amp;lt;&amp;lt;20表示什么?

    单片GPIO_AF_2 &amp;lt;&amp;lt;20是什么意思?
    发表于 10-20 06:06

    CH573 CH582 OTA例程讲解一(方式一:带库升级移植)

    + (EraseBlockNum - 1) * FLASH_BLOCK_SIZE) &amp;gt; IMAGE_IAP_START_ADD) { OTA_IAP_SendCMDDealSta(0xFF
    发表于 09-28 10:57

    开发指导—利用组件&amp;amp;插值器动画实现HarmonyOS动效

    和动画事件。 &amp;lt;!-- xxx.hml --&amp;gt; &amp;lt;di
    发表于 09-05 11:33

    手把手教你OTA升级开发

    update对象 let updater = client.getUpdater(\'OTA\'); 3,获取新版本信息 updater.getNewVersionInfo(info =&amp
    发表于 08-22 09:13

    你使用shell脚本中的2&amp;gt;&amp;amp;1了吗?

    run_cmax &gt; ./starrc_cmax.logs 2&gt;&amp;1中的 2&gt;&amp;1是啥意思?
    的头像 发表于 07-30 14:44 1071次阅读

    请问SYS-&amp;gt;GPB_MFP和 SYS-&amp;gt;ALT_MFP有啥区别?

    #define SYS_GPB_MFP_PB15_TM0_EXT (1UL&amp;lt;&amp;lt;15)/*!&amp;
    发表于 06-19 08:03

    AT&amp;amp;T网络上未收到NTP udp数据包如何解决?

    有一个 ESP8266,使用 NTP 的污水坑监控器;它与我们的 Xfinity 网络路由器完美配合。ESP8266连接AT&amp;amp;T路由器;不接收 UDP 数据包。NVG588已配置
    发表于 05-11 08:08

    LuaLoader -&amp;gt; 通信错误的原因?

    我用最新的固件刷新了我的 ESP8266,现在这个 -&amp;gt;“通信错误 - 检查波特率”&amp;lt;- 是我用 LuaLoader 得到的唯一东西。 putty @960
    发表于 05-10 06:39

    ANO匿名上位机V7协议&amp;STM32

    ANO匿名上位机V7协议&STM32 说明:以下程序为自己编写,若有误欢迎各位指出。 基于ANO匿名V7上位机的通信协议编写的代码文章目录ANO匿名
    发表于 05-09 11:08 10次下载
    ANO匿名<b class='flag-5'>上位</b>机V7<b class='flag-5'>协议</b>&<b class='flag-5'>amp</b>;STM32

    【正点原子STM32探索者V3开发板体验】【这帖更是重量级】移植厂家LWIP例程&amp;amp;UDP发送

    ;gt; PG14 ETH_RESET-------------------------&amp;gt; PD3*/ //PA1,2,7 GPIO_Initure.Pin=GP
    发表于 05-08 20:43

    if(a==1 &amp;amp;&amp;amp; a==2 &amp;amp;&amp;amp; a==3),为true,你敢信?

    接下来咱们来尝试解决这个问题。假设 if(a==1&amp;&amp;a==12)是等于 true的,那么a肯定不可能是一个“普通的变量”。它势必要有能力在执行的时候能够动态改动值。
    的头像 发表于 05-08 11:01 755次阅读
    if(a==1 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==2 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==3),为true,你敢信?

    【正点原子STM32探索者V3开发板体验】SPI&amp;amp;外部中断实验&amp;amp;移植SX1278驱动

    SX1276_Reset(void) { LORA_SPI_RESET_GPIO -&amp;gt;BSRR |= LORA_SPI_RESET_PIN &amp;lt;&
    发表于 05-08 01:18