能不能再讲解一下固件升级服务这个中间件怎么用?
我看peripheral_with_ota example说明和SDK DFU接入这个例程越看越懵逼**
**
我想用sdk中的固件升级服务这个中间件来完成工程的蓝牙OTA功能。然后例程中只有peripheral_with_ota example一个OTA的例子。我现在完全不能理解这个工程怎么跑的,它似乎加入dfu工程充当所谓的OTA manager bin。但是升级数据包又是在main.bin(User.bin)完成的?
有没有人帮我解释一下这到底是怎么回事?
如果例程没有用中间件,那么加入的dfu.bin有什么功能?
如果使用了中间件,那么升级数据包是在哪里实现?
peripheral_with_ota example支持的是文件传输,通过BLE的GATT服务进行数据通信
dfu工程可以看作是执行安装的独立程序(在example/dfu)
再加上boot中跳转逻辑
因此三者加起来才一个完整的OTA功能
我们通过peripheral_with_ota example工程可以将我们的安装包(readme中提到的制作bin 文件部分,包括可以制作dfu工程的bin, 因为除了功能应用的bin可能会更新的情况,也考虑到了本身dfu下载工程也需要更新的情况),将安装包放置在一段区域,由boot判断条件跳转进dfu 独立程序,dfu进行安装,安装结束再复位,boot进行判断,跳转进更新后的应用程序
每个功能以独立程序的形式,完成OTA过程中最重要的功能-变砖
其中安装包bin需要制作的原因其中一点在于考虑节省空间,使用ezip.exe压缩
可以根据三部分再看看呢
我大致理解了例程的运行逻辑,我昨天也成功进行OTA升级了。我还有一个问题,你们文档中的中间件固件升级服务并不是这样的工作流程,描述是dfu工程中接收OTA数据,而user.bin其实只是一个触发器功能。
这个中间件可以使用吗?
你们官方为什么不使用中间件来实现蓝牙OTA呢?
作为产品开发,你们官方推荐哪一种升级方法呢?
如果推荐中间件的话有相关demo吗?