发帖
8 0 0

PB-01/02蓝牙模组实现远程OTA无线升级功能介绍,剖析整个实现原理和代码介绍。

爱笑
管理员

362

主题

2613

回帖

1万

积分

管理员

积分
19714
PB&TG系列 2250 8 2024-5-27 13:54:00
一、安信可PB-01/02蓝牙模组 OTA简介
安信可科技PB系列模组(PB-01/PB-02) SDK OTA包括了应用固件,资源文件,bootlooder(引导固件)三种无线升级。
本篇博文,我们先来介绍应用固件的升级方法及过程。在这里,OTA bootlooder是一种特殊的独立固件,该固件是加载引导应用固件实现OTA升级,这部分为大家开放了源码,我们基本不需要对其进行修改。
二、安信可PB-01/02蓝牙模组 FOTA实现流程
我们以 \example\ble_peripheral\bleUart_AT的工程为例,在其工程的profile文件里如下添加\components\components\profiles\ota_app下的ota_app_service.c文件。
1.png

对于上述添加的ota_app_service.c文件,我们只需要将其ota_app_AddService();在app应用程序的初始化函数bleuart_Init如下代码段添加,即完成了对该工程demo的OTA支持。
  1. void bleuart_Init( uint8 task_id )
  2. {
  3. ...
  4.   // Initialize GATT attributes
  5.   GGS_AddService( GATT_ALL_SERVICES );            // GAP  0xFFFFFFFF
  6.   GATTServApp_AddService( GATT_ALL_SERVICES );    // GATT attributes
  7.   DevInfo_AddService();                           // Device Information Service
  8.   bleuart_AddService(on_bleuartServiceEvt);
  9.   ota_app_AddService();                     //添加ota服务
  10.   at_Init(); // initial uart for AT cmd first.
  11. ...
  12.   osal_set_event( bleuart_TaskID, BUP_OSAL_EVT_START_DEVICE );
  13. }
复制代码
当 BLE从机设备和支持BLE OTA的手机APP建立连接之后,就是可以实现BLE设备的OTA升级。
其过程分为三个阶段:
1、启动OTA升级 命令OTA_CMD_START_OTA,可以启动OTA过程。
2、应用参数传递(此步骤为可选步骤) OTA_CMD_START_OTA命令的参数如果param_size字段不为0,那么自动进入参数传递状态,进行参数的传递。
3、应用固件传输以及烧写 如果之前的OTA_CMD_START_OTA命令param_size字段为0或者参数传递已经完成,就可以通过OTA_CMD_PARTITION_INFO命令开始块数据的传输。
通常一个应用固件由2~3个partition组成。目前OTA最多支持16个partition。
实现原理可以参考ota_app_service.c里的代码。
三、通过手机APP 完成安信可PB-01/02蓝牙模组的OTA演示
1)先后编译两个新旧固件
2.png

2) 烧录旧固件到PB系列模块
3.png

3)把新固件放在手机APP可访问的存储位置,打开手机APP进行扫描当前的蓝牙设备名称PHY-01,如图:
4.png

如下图,已建立连接,点击OTA模版发起OTA请求。
5.png

第一次点击OTA后,手机APP会跟BLE设备断开,BLE设备会从运行应用程序跳转运行OTA bootloder程序,所以其广播的蓝牙名称为PPlusOTA。如下图,我们再次使用手机APP对其连接:
6.png

然后才进入OTA模式,如图。
7.png

点击OTA升级,直到如下图显示onUndateComplete,则表示完成升级。
8.png

串口信息如图:
9.png

OTA例程代码下载:https://gitcode.com/Ai-Thinker-Open/AiThinker-Open-PB-BleMesh/tree/master/example/OTA?utm_source=csdn_github_accelerator&isLogin=1
──── 0人觉得很赞 ────

使用道具 举报

2024-5-27 14:13:30
园长 OTA例程代码 这个地址好像不太对呢
2024-5-27 14:21:12
2024-5-27 15:17:35
2024-5-28 08:51:18
WT_0213 发表于 2024-5-27 14:21
https://github.com/Ai-Thinker-Open/AiThinker-Open-PB-BleMesh/tree/master/example/OTA

解决了,是我放错了。
签到
2025-2-7 11:19:44
在自己的微信小程序或APP中进行OTA升级,手机APP端的逻辑是怎么样的?OTA的APP端有什么参考资料吗?
开发资料里面有 OTA得文档说明 https://docs.ai-thinker.com/_media/phy62xx_2.x.x_ans.zip
2025-2-8 19:15:09
Ai-Thinker-wu 发表于 2025-2-7 11:46
开发资料里面有 OTA得文档说明 https://docs.ai-thinker.com/_media/phy62xx_2.x.x_ans.zip

OTA我最后做时不明白再来请教你哦,谢谢
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28220 个
  • 话题数: 40145 篇