[麦麦茶水间] 【每周分享】涂鸦WIFI模组WBR3之OTA升级

[复制链接]
30221|7
liao6 发表于 2025-8-21 15:46 | 显示全部楼层 |阅读模式
,
本帖最后由 liao6 于 2025-11-12 08:57 编辑

@21小跑堂、#申请原创#


简介:
        本案例用的是涂鸦WIFI模组,为什么要用这个模组呢?涂鸦WIFI模组属于平台化的,有提供二次开发的SDK包,还可以在涂鸦平台配置生成自己的APP,当然,这个是简易化的APP,界面显示相对简单,数据也比较少,如果想要个性化的界面和更多的数据交互,那么就需要自己搭建服务器开发APP,这个工作量就比较大了。
        所以,我们起初选用涂鸦WIFI平台就是看中他们的平台化,可以提升开发效率,投入的资源相对少,短期内能看到一个初代产品的模型。

一、涂鸦平台

        首先,在涂鸦平台搭建自己的项目,配置数据交互需求,配置界面显示。

        然后,涂鸦平台上传固件版本,并设置OTA升级,点击验证升级选中产品的ID号才能下发固件。

二、程序运行流程(本文MCU为STM32F4,flash采用1M)

        1.程序运行流程参考下图:


程序分区如下:

         bootloader:0~0x8020000                     128KB

         app1        :0x8020000~0x8080000          384KB

         app2        :0x8080000~0x80E0000          384KB

         FLAG       :0x80E0000~0x8100000          128KB

        以上偏移地址分区是根据扇区来分的,FLAG是做为标记判断是否需要升级,执行逻辑就是首先接收OTA数据包,存到app2地址中,接收完OTA固件包之后把FLAG标记,然后软件复位,程序就会跳转到bootloader中,bootloader通过判断FLAG决定是否要升级,最后跳转到APP1中。

三、APP部分

        APP部分关键问题点在于flash存储操作,这里需要把接收到的升级文件存到备份区域。

        OTA升级部分代码处理如下:

  

传参:value-接收的固件包数据,传入的是一个指针,指向串口接收数组wifi_data_process_buf

           position-第几个数据包

           length-当前固件包长度(固件包长度为0时,表示固件包发送完成)

固件包是一包一包传输的,每包数据256字节,把接收到的数据包写到app2中,接收完毕数据FLAG做一个标记。写数据时,先擦除才能写,STM32F4的最小到位是扇区,要按扇区擦除,最好是先擦除整个扇区再一个字节一个字节的写数据。部分代码参考如下:(修改的STM32F4库函数)

                     

OTA固件数据包接收完毕,软件复位跳转到bootloader中。

四、bootloader部分

        程序运行前,会先进入bootloader里面,这里面先判断是否有升级需求,如果需要升级,则进入升级流程,如果不升级,则直接运行。

        当检测到升级标志位FLAG为0x55555555时,进入升级操作,把app2的代码复制给app1,然后把改变FLAG,软件复位,再次执行程序就会直接跳转到新接手的固件app1中。

        bootloader代码处理如下:

  

        固件升级操作代码如下:

  

把app2的代码复制给app1是按固件包读取,读取一个固件包,写一个固件包,注意读写时的位操作,位操作搞错了,会出现奇怪问题。


五、结论

        OTA升级的本质就是IAP,所以,按照IAP升级的方式来做就可以,可以参考原子的IAP例程中的iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代码。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

@21小跑堂 管理员,你好文章已重新编辑,满足字数要求,麻烦审核。  发表于 2025-11-12 09:00
感谢分享,申请原创文章需满800字(代码除外)暂时未达门槛  发表于 2025-11-4 15:10
@21小跑堂 管理员,你好,求原创审核哦!  发表于 2025-9-16 09:14
huangcunxiake 发表于 2025-8-27 11:19 | 显示全部楼层
支持OTA升级挺好。
wangwu1976@ 发表于 2025-9-2 08:27 | 显示全部楼层
看了个迷迷瞪瞪
ntaaq18 发表于 2025-9-14 11:25 | 显示全部楼层
支持OTA升级很好,以后升级方便了
花开了相爱吧 发表于 2025-9-19 16:24 | 显示全部楼层
涂鸦 WIFI 模组 WBR3 的 OTA 升级,需先在涂鸦开发者平台配置升级固件与策略。模组联网后会主动检测平台升级指令,接收固件包时会校验完整性。升级中模组暂断服务但保留关键数据,完成后自动重启生效。整个过程支持断点续传,能降低升级失败风险,保障设备功能平滑更新。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

259

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部