stm32的蓝牙ota功能基本上完成了,低功耗蓝牙传文件还是挺麻烦的,ios自己协商的MTU太小了,即便用安卓系统,我用的这款BLE模块最多247字节,连凑个256都不行。最终还是按128字节一个包,将bin文件进行分割,每个包头加了固定头、数据位和校验位,15k的文件差不多要近1分钟才传输完,主要耗时在双方的通信上,stm32每收到一个包,会进行校验,数据正确了发一个标志给串口,蓝牙收到后再发下一包。stm32将收到的数据暂时存到缓存,等凑够1k再写入Flash,如此往复,耗费的时间就多了。蓝牙发送完所有数据后,会发送一个特写的包给stm32,stm32收到后,无论最后一包是否凑够1k,都写入Flash,再进行校验数据,没有问题后重启系统,整个更新流程会比较麻烦些,但能确保发送的每一包数据都是正确的。最新博文4个月前050