用小程序给固件升级。代码实现了好久了,都忘了。但是效率比较慢。整个包大约100KB,总共升级耗时5分钟左右。从体验上来讲就是鸡肋。
首先要知道整个升级的过程。否则也代码拿去了也不知道怎么回事。
需要的知识点:1.低功耗蓝牙基本知识。2.小程序蓝牙api要掌握。3.crc校验基本要会使用
盗用个链接我觉得讲的很清晰固件升级(DFU/OTA)
恩。。我在讲解下自己的思路。先将固件升级包解压会得到三个文件。分别是:xxx.dat,xxx.bin和manifest.json 三个文件。拿到对应的buffer并返回存起来
第一:让设备进入Bootloader状态。我们自称进入dfu模式。蓝牙会自动断开。一般情况下MAC地址发生变化,末尾+1。看公司的嵌入式工程师如何处理。也可以不变(问同事的)。还有比较坑的是怎么让设备进入Bootloader状态。往xxx90003特征值写0x01。具体原因不知道。我是看的android代码。
第二:传输init packet(及xxx.dat文件。这个问题坑了我好久。啥叫init包。)
整个流程是这样的,盗个图。这个图应该是官网的。具体是怎么的。我先发条指令问你,之前有没有给过你数据(通过发指令 06 01 来确认 ,指令是定义好的。不清楚的看下前面给的链接固件升级(DFU/OTA)。这里就不说了)。通过crc校验。如果你告诉我,数据已经给完了,那就跳过执行下一步。如果没有,或者数据有错误,或者没给完。那我就发(01 01)告诉你我要给你数据了。然后你回我(06 01 01)可以给。然后我每次20个字节的给你。然后你说已经接受完了(06 03 01)。那就继续下一步。
第三:传输firmware image( 及xxx.bin文件)。这个也是同理。希望大家举一反三。不想写太多文字。省的大家不想看。
最后送上源码有用的话,麻烦大家给个星。