BLE 空中升级谈

-- CC2541 的产品开发中OAD注意事项(续)

TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有

编号

名称

Hex

用法

1

Cc2540 dongle

CC2540_USBdongle_HostTestRelease_All.hex

直接插在电脑上使用,驱动程序是ccxxxx_usb_cdc,usb作为CDC串口使用。

2

Cc2541 module

CC2541_SmartRF_HostTestRelease_All.hex

需要一个USB->UART,或者RS232->UART接口板,连接模块的P02,P03(UART0)

3

Cc2540 module

CC2540_SmartRF_HostTestRelease_All.hex

需要一个USB->UART,或者RS232->UART接口板,连接模块的P02,P03(UART0)

目前可以使用的软件有

编号

名称

平台

可用硬件

用法

验证

A

BLE device monitor

Windows PC

2,3

电脑与模块连接,可借助RS232-UART,或者USB-UART接口板,连接上以后的操作见软件使用向导。

是

B

BLE device monitor

Android

BLE android 手机

apk文件没有找到

否

C

Bluetooth LE OAD tool

Windows 8/10 带 BLE

BLE win8 / win10 电脑,可用dongle

将boot + imageA写入目标设备后,在系统设置/蓝牙中绑定设备,如果要输入PIN的话,输“0”,之后运行app,刷新列表后可以选定目标开始升级。

是

D

TI BLE Multitool

iOS

iPhone4s以上(含)

点此查看

否

以A2的组合来实现空中升级是比较容易凑齐硬件的,只是要注意A的串口配置,不要带流控,若是A1组合,则可以在ti.com找到很详细的说明,也可点这里。其他的软件基本可以相应平台直接运行, 不需要额外的硬件。

硬件齐备之后,准备一个可以用来升级的image B,TI-BLE Stack 1.4.0当中的SimpleBLEPeripheral工程有个CC254x-OAD-Img B选项,原封不动的编译生成一个bin文件就好了。它就是接下来空中升级的主角,为了说明,我们不妨给生成的文件取名为imgBSample.bin。

传输imgBSample.bin的时间在各个组合里是不一样的。通常生成的bin文件也就刚过100kb,使用BLE传输完成它,这几个平台都可能要3到4分钟,区别不大。但若使用原生的Image A,在windows 8/10就差不多要18分钟。这是非常慢的。想要缩短这个时间,密决就是调整连接参数。本人使用Bluetooth LE OAD Tool (WIN 10),简单测试过连接参数对传输时间的影响,大致如下。

序号

连接间隔

connInterval

SlaveLatency

Timeout

OAD耗时

Time

说明

1

6

1

50

3:27

2

48

0

960

18:00

Windows默认

3

11

0

50

4:58

4

6

0

50

Failed

5

7

0

50

Failed

6

8

0

50

3:49

注:这里的连接间隔1代表1.25ms

图一 Newbit Bluetooth LE OAD Tool 界面

传输完成后,系统自动重启,然后运行imgBSample.bin这个程序。但通常也会遇到如下问题,传输完成了,本应自复位后运行新程序,结果一定要手动复位才能正常运行,建议使用开发板来验证,若开发板可以自动重启并正常运行,说明程序没错,接着就要检查硬件了,比如电源供电,是否有32K晶体等,具体可以参考这里。

完成以上所有工作,那么你已经完整的体验了空中升级,若只是按照这样做也还是Demo, 并不是一个产品所需要的空中升级,完整的空中升级还应该有完全保护措施,比如升级的客户端身份确认, 升级失败后的处理,甚至断点断传也可考虑进来。据说nordic可以实现增量升级,可以大大地缩短升级的时间,但不清楚它具体如何实现。当然,关于这些暂时就不多说了,若见此文的你有兴趣,我们可根据本文所描绘的空中升级,在2541上做一个boot, image A的固件,外带image B的模板。

附windows 10, ios 8.3, miui 6的BLE连接参数默认值

Platform

connInterval

SlaveLatency

Timeout

Win10

48

0

960

MIUI 6

39

0

700

IOS 8.3

24

0

72

BLE空中升级 谈(二)的更多相关文章

  1. BLE空中升级 谈(一)

    BLE 空中升级谈 -- CC2541 的产品开发中OAD注意事项 现在的智能设备(可穿戴,智能家居,智能玩具等)是越来越多了,大公司的产品颜值高,功能强大而完备的应该说是比比皆是,这里不谈论它是满足 ...

  2. 如何实现蓝牙空中升级BLE OTA

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双备份(dual bank)DFU?什么叫单备份(single bank) ...

  3. nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级

    如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...

  4. iOS蓝牙空中升级(固件升级)

    空中升级又叫固件升级,指你手机从服务器下载下来的包或者数据,通过蓝牙传输给你的外设升级固件.如果你能把蓝牙的基础搞懂,其实也并不是很难,我在这里只不过提供一下思路. 空中升级略难的地方在于数据处理和交 ...

  5. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  6. nRF52832 BLE_DFU空中升级OTA(二)编译下载(SDK14.2.0)

    上一篇配置好了开发环境,现在就可以试着跑一下例程了,这里需要两个例程,一个是bootloader的,一个是应用程序的,其路径分别为: bootloader:SDK_14.2.0工程\examples\ ...

  7. Android BLE dfu升级

    dfu升级适用于nordic  nRF51  nRF52 的系统,github上提供了相关升级的库https://github.com/NordicSemiconductor/Android-DFU- ...

  8. nRF52832 BLE_DFU空中升级OTA(三)准备升级工程(SDK14.2.0)

    准备需要加入DFU功能的工程 在工程main文件services_init函数中加入DFU服务 uint32_t err_code; // Initialize the async SVCI inte ...

  9. Android BLE 蓝牙编程(二)

    大家中秋快乐啊--哈哈,今天继续工程项目吧! 上篇我们已经实现了蓝牙设备的扫描,本篇我们来通过list展示扫描到的设备并 实现点击连接. 先贴出上篇的完整的MainActivity的方法: packa ...

随机推荐

  1. bzoj 3528: [Zjoi2014]星系调查

    Description 银河历59451年,在银河系有许许多多已被人类殖民的星系.如果想要在行 星系间往来,大家一般使用连接两个行星系的跳跃星门.  一个跳跃星门可以把 物质在它所连接的两个行星系中互 ...

  2. Linux第七节随笔-中 /date / ln /

    4.date link 作用:显示或设定系统的日期与时间 参数: -d<字符串> 显示字符串所指的日期与时间.字符串前后必须加上双引号. -s<字符串> 根据字符串来设置日期与 ...

  3. ActiveMQ (三) 讯息传送机制以及ACK机制

    详析请看如下博客: http://blog.csdn.net/lulongzhou_llz/article/details/42270113 后续再做整理.

  4. override与重载(overload)的区别

    重载是相同函数名字.参数或参数类型不同,进行多次承载以适应不同的需要.(orerload)是面向过程的重载. (override)是面向对象的重载.是进行基类中的函数重写.

  5. deepin系统下部署Python3.5的开发及运行环境

    deepin系统下部署Python3.5的开发及运行环境 1 概述 由于最近要学习python接口自动化测试,所以记录一下相关学习经过及经验,希望对大家可以有所帮助. 2 下载 在python官网下载 ...

  6. PHP与REDIS

    安装 1.一定要搞懂自己php的版本,和环境,今天试一上午,就是因为X86,而我的php环境是X64. 2. 将下载的php_redis.dll和php_igbinary.dll放在php扩展目录中( ...

  7. 安全扫描工具 Netsparker

    Netsparker是一款web应用安全漏洞扫描工具 Netsparter官网:https://www.netsparker.com/web-vulnerability-scanner/,与其他安全扫 ...

  8. input选择框样式修改与自定义

    html自带的选择框样式不好看,并且在ios设备上丑的罚款.所以一般都是自定义样式: 原理:将原来默认的input选择框隐藏,然后控制label的:before与:after,配合矢量图标或者图片来实 ...

  9. UNIX域协议(无名套接字)

    关于什么是UNIX域套接字可以参考:http://www.cnblogs.com/xcywt/p/8185597.html这里主要介绍非命名的UNIX域套接字的用法.1.socketpair函数先看m ...

  10. Hyper-V 虚拟网络设置

    目标:搭建一个主机上的网络用来链接主机和虚拟机,并且虚拟机可以通过主机上网. 步骤一:创建一个Internal Network. 步骤二: 创建虚拟机并设置Virtual Switch. 步骤三:将上 ...