评测二 Dongle的3种常见用法
USB Dongle正常包括三个用途,也被当做普通DK:
1、 配合主机应用做Central设备来扫描周边设备
2、 配合主机GUI工具对设备进行OTA固件升级
3、 配合厂家提供工具来对蓝牙设备进行空中包抓取
一、 当做Central来扫描周边设备
借助TI提供的Btool或者BLE Device Monitor来完成扫描发现设备、连接设备、读写特征值属性等一系列操作。
前者给CC2540 USB Dongle下载协议栈下Accessories/Hexfiles/CC2540_USBdongle_HostTestRelease_All.hex(该目录下还有CC2540_SmartRF_HostTestRelease_All.hex,这个是给CC2540EM的,对应协议栈下工程HostTestApp),注意CC Degugger没有对Dongle进行供电,此时要同时把dongle插进USB来供电借助smartRF Flash Programmer完成烧录。烧录完成后CC Debugger显示绿灯表示正常工作了,设备管理器也出现CC2540 USB CDC Serial Port驱动。打开Btool保持默认设置115200-N-8-1设置进入后就可HCI 命令来控制dongle行为并返回结果:
BLE Device Monitor更加直观,直观GUI连接自动化发送服务发现、特征发现、句柄读取等一系列命令然后列举出来(比如连接已经烧录了simpleBLEPeripheral-OAD的CC2541DK-Mini):
二、 无线升级OAD
OTA用于现场调试、功能优化、bug修复等场合。操作同前,dongle红灯亮起,打开simpleBLEPeripheral工作库(.eww),其实在该工作库下并列有很多工程,将其切换到CC2541-OAD-ImgA工程,可以看到原先灰色的oad_target.c/oad_target.h/oad.h变成正常颜色,配置不同,该工程实则打开了几个宏开关FEATURE_OAD_BIM、HAL_IMAGE_A、FEATURE_OAD、OAD_KEEP_NV_PAGES让其具有TI自定义的 OAD Profile(OAD Service UUID: F000FFC0-0451-4000-B000-000000000000、特征OAD Image Identify UUID: F000FFC1-0451-4000-B000-000000000000、特征OAD Image Block UUID: F000FFC2-0451-4000-B000-000000000000),
编译产生simpleBLEPeripheral-CC2541-OAD-ImgA.hex源程序固件,然后切换到工程CC2541-OAD-ImgB,编译产生simpleBLEPeripheral-CC2541-OAD-ImgB.bin升级程序固件,由于升级是open式,故打开工程Projects/ble/util/BIM/cc254x,编译产生BIM_CC254xF256.hex引导固件,此时准备工作已好。单独ImgaA.hex或者BIM.hex都不会有现象,可采用合并hex方法,或借助smartRF Flash Programmer来合并,做法是打开smartRF Flash Programmer加载刚才产生的 BIM_CC254Xf256.hex,选择erase and program,(MAC地址可以点击Read IEEE获取到)
再合并烧录源程序固件simpleBLEPeripheral-CC2541-OAD-ImgA.hex,选择Append and verify,
程序这时才工作,用dongle打开BLE Device Monitor,点击连接后出现设备支持的所有profile。点击菜单File->Program(OAD)进入OAD升级界面,选择刚产生的simpleBLEPeripheral-CC2541-OAD-ImgB.bin开始升级,我的工具有点问题,可以选择Texas Instruments\SmartRF Tools\BLE Device Monitor\firmware\cc254x\SensorTagImgB_v1_4.bin(我的协议栈是1.4.0),Image Type选择1即ImageB就开始缓慢升级了(吐槽:工具真难用,速率也慢的要命,Nordic DFU升级十几秒就能完成)。
三、空中抓包Capture
借助TI SmartRF Packet Sniffer,同理dongle插进USB烧录Texas Instruments\SmartRF Tools\Packet Sniffer\bin\general\firmware\sniffer_fw_cc2540_usb.hex,按下CC Debugger的Reset键显示绿灯即成功,且设备管理器出现CC2540 USB Dongle驱动,dongle绿灯亮起,若烧错驱动会提示找不到。打开smartRF Packet Sniffer,选择BLE启动后进入主界面,在下面“Select capturing device”选择CC2540 USB Dongle,点击三角图标开始抓获空中完整BLE广播包: