向CH584的mesh例程增加Onlyupdate方式升级

目录

参考代码链接:https://pan.baidu.com/s/1X6vHIBAvG4B10vg5HP-SCw?pwd=wch6 提取码: wch6

链接中的CH585工程,需要合并烧录xxx_JumpIAP、xxx_IAP、测试用的LPN工程、MESH_LIB文件夹下CH585BLE_ROM_MESH(或匹配584的这个库)共4个hex文件。除了xxx_ROM_MESH库,其他工程均有改动,不可直接使用EVT中的工程。

配合升级使用的安卓端APP:OTA升级工具(不再是EVT的手机配网例程中使用的WCH MESH这个手机APP了)

 

Q:“adv_vendor_self_provision_with_peripheral”例程,配合“WCH MESH 手机APP”,已经可以实现OTA功能了,那么本文中的OTA升级demo有何不同?

A:WCH MESH手机APP升级的方案中,MCU节点可以通过mesh数据包,转发新固件,一对多升级;而本文中的dmeo只能通过“OTA升级工具”一对一升级。

受限于mesh网络的吞吐量限制,WCH MESH升级固件的方案中,mesh网络转发固件包的速度慢,即使网络带宽均用来升级,非标221字节包长的情况下,升级速度也只能2K字节/秒。
在mesh转发升级的速度无法接受时,用本文中的demo,砍掉mesh网络转发固件包的功能,仅支持一对一升级,可提供更多flash余量。

 

Q:那么本文中的OTA升级demo与BLE的Onlyupdate方案有何不同?

A:本文demo中的升级架构与BLE的Onlyupdate方案一致,不同点是:BLE方案基于BLE文件夹下的hex库来实现;本文demo基于MESH_LIB文件夹下的BLE单从机库实现。

mesh库没有做外置固定库,均为.a格式的编译库。

mesh库是基于BLE库编译的,当无需OTA时,工程中使用基于LIB文件夹下的libCH58xBLE.a编译的mesh库libMESH.a;

当需要OTA时,工程中使用基于MESH_LIB文件夹下CH585BLE_ROM_MESH.hex(或是584的,兼容)编译的mesh库LIBCH58xMESHROM.a。

故带mesh的工程,无法使用LIB文件夹下的.hex固定库。

反之,BLE的Onlyupdate方案下的JunmpIAP、IAP工程,可以修改使用MESH_LIB文件夹下的固定库,故出现了本文开篇链接中的demo。

 

Q:为何不参考BLE的Backup备份方案?

A:flash容量限制。当需要同时运行mesh+BLE从机时,EVT例程中的flash开销来到了240K,而沁恒的蓝牙MCU目前最大的flash容量为448K,无法再存下Backup的备份固件。

若可接受外置flash芯片扩容,可临时存放新固件,那么可以向mesh工程中移植BLE的Backup升级方案。

posted @ 2025-05-10 15:03  JayWell  阅读(133)  评论(0)    收藏  举报