Discuz! Board

标题: 求教关于自己写OTA的疑问 [打印本页]

作者: ohyeszq    时间: 2018-11-8 20:33
标题: 求教关于自己写OTA的疑问
环境:nRF51822 + SDK12.3
需求:在Application中,使用nus服务接收数据,并存储到Flash中,接收完成后校验通过,则跳转到自己写的boot中进行拷贝。主要是客户要替换以前的设备,升级是3字节序号+17字节固件内容的数据包格式,没有办法使用官方的DFU。
实现思路:在nus服务的数据接收回调函数中,将数据放在缓冲区中,然后调用scheduler,将下载操作放到调度中,当没有可用的缓冲区时,在回调函数中while循环等待。
疑问:当我在nus服务的数据接收回调函数中阻塞时,调度能否正确执行?对于当前数据包,协议栈是否会给手机接收成功的应答?
问题:如果不进行阻塞,会存在数据覆盖的问题,因为手机端一直在发送,同时由于scheduler不断的put,也不正常。但是当阻塞时,又会有数据下发失败的问题。
关于DFU,相关的原理、方法和架构的说明有很多,但是关于BLE数据接收和Flash操作、ZIP包的格式、接收到包后的解析等说明太少,对于工期紧,且首次接触蓝牙芯片而又没有时间仔细研究例程的人来说,压力颇大,一脸懵逼啊,且SDK12和之前的差异还是挺大。

望大神不吝赐教。

作者: admin    时间: 2018-11-9 10:17
为什么不能使用官方SDK12.3的DFU???
作者: wf_struggle    时间: 2019-8-25 12:45
兄弟 你解决了吗我也遇到了 类似的问题 要做设备给设备升级不大适合用官方的demo,机制我都懂 但是的官方的demo不来了解看了几遍看不大懂拿过来改  但是不怎么怎么下手。
作者: wf_struggle    时间: 2019-8-25 12:45
兄弟 你解决了吗我也遇到了 类似的问题 要做设备给设备升级不大适合用官方的demo,机制我都懂 但是的官方的demo不来了解看了几遍看不大懂拿过来改  但是不怎么怎么下手。




欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3