设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3460|回复: 3
打印 上一主题 下一主题

求教关于自己写OTA的疑问

[复制链接]

2

主题

3

帖子

25

积分

新手上路

Rank: 1

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

望大神不吝赐教。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
沙发
admin 发表于 2018-11-9 10:17:33 | 只看该作者
为什么不能使用官方SDK12.3的DFU???
回复 支持 反对

使用道具 举报

1

主题

6

帖子

31

积分

新手上路

Rank: 1

积分
31
板凳
wf_struggle 发表于 2019-8-25 12:45:29 | 只看该作者
兄弟 你解决了吗我也遇到了 类似的问题 要做设备给设备升级不大适合用官方的demo,机制我都懂 但是的官方的demo不来了解看了几遍看不大懂拿过来改  但是不怎么怎么下手。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

31

积分

新手上路

Rank: 1

积分
31
地板
wf_struggle 发表于 2019-8-25 12:45:49 | 只看该作者
兄弟 你解决了吗我也遇到了 类似的问题 要做设备给设备升级不大适合用官方的demo,机制我都懂 但是的官方的demo不来了解看了几遍看不大懂拿过来改  但是不怎么怎么下手。
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-11-26 19:04 , Processed in 0.123421 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表