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 |
Windows PC |
2,3 |
電腦與模塊連接,可借助RS232-UART,或者USB-UART接口板,連接上以后的操作見軟件使用向導。 |
是 |
|
B |
BLE device monitor |
Android |
BLE android 手機 |
apk文件沒有找到 |
否 |
C |
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 |