第二十四節 OAD空中更新
通過仿真器更新程式或者通過USB更新固件那都是一般人都可以實作的操作,但是要想實作OAD空中更新,這還是需要一定的技術能力。這一節我就帶着大家完善這一能力。 OADn air download,指空中下載下傳模式。當我們的産品釋出以後,有時需要對固件進行更新,OAD是更新方式中的一種。配置BIM(Boot Image Manger)打開IAR,打開BLE-CC254x-1.4.0下的工程:C\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\util\BIM\cc254x\BIM.eww,然後編譯,下載下傳到開發闆中。
配置Image A
打開OADExample工程,配置工程,添加如下幾個宏
FEATURE_OAD_BIM
HAL_IMAGE_A
FEATURE_OAD
OAD_KEEP_NV_PAGES
(1) 打開simplePeripheral.c找到宏定義DEFAULT_ENABLE_UPDATE_REQUEST,将其改為FLASE。否則會影響BLEDevice Monitor對其進行空中更新,到時可以再改回來。
(2) IAR左側導航中找到Profile檔案夾,點選右鍵添加oad_target.c和oad_target.h兩個檔案,二檔案位于C:\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\OAD中。
(3) 在IAR導航中找到HAL→Target→MT254xboard→Driver,右鍵添加檔案hal_crc.c,該檔案位于C:\TexasInstruments\BLE-CC254x-1.4.0\Components\hal\target\MT254xboard中。
(4) 在剛才的simplePeripheral.c檔案中,找到simplePeripheral_Init()函數,在裡面添加OADTarget_AddService()函數。
(5) 在simplePeripheral.c的前面,添加引用OAD的頭檔案,OAD.h和OAD_target.h。
(6) 點選Project→Option…,或直接按Alt+F7,選擇BuildActions,在Post-buildcommand line中添加:
"$PROJ_DIR$\..\..\common\cc2540\cc254x_ubl_pp.bat""$PROJ_DIR$" "rodUBL""$PROJ_DIR$\CC2540-OAD-ImgA\Exe\OADExample"
注意,各雙引号之間隻有一個空格。注意圖中紅框标的部分,Image_A是和之前第1步對應的。
(7) 點選Project→Option…,或直接按Alt+F7,選擇Linker,選擇Config,Linker Configurationfile中勾選Override default,添加C:\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\common\cc2540\cc254x_f256_imgA.xcl。
8) 點選Project→Option…,或直接按Alt+F7,選擇Linker,選擇Extra Output。
(9) Extra Option添加Hex檔案的輸出。
(10) 點選OK,編譯下載下傳,如果出現如下錯誤,是因為我們使用的是IAR8051 8.30版本,如果你使用的是IAR8.20版本就沒有這問題。
(11) 這個問題是因為使用了虛拟寄存器導緻的,我們找到如下檔案。
(12) 對檔案的115行進行如下修改,将虛拟寄存器注釋掉。
(13) 編譯後,可以看到我們生成的檔案
(14) 我們将hex檔案疊加到BIM後面
這樣ImageA就成功燒錄進開發闆了。
配置Image B
(1) 方法如Image A,其它要注意的幾個地方:點選Project→Option…,或直接按Alt+F7,選擇C/C++Compiler,選擇Preprocessor,将Defined symbols中的HAL_IMAGE_A改成B。
(2) 點選Project→Option…,或直接按Alt+F7,選擇Linker,選擇Config,将Linker Configuration file中的檔案改為B。
(3) 儲存後編譯,同樣的可以看到生成的檔案。
(4) 為了區分A和B鏡像,我們将最終結果改名。
空中更新
有了bin檔案就可以進行空中更新了,打開BLE Device Monitor(沒有安裝的需要安裝),打開後軟體會自動掃描裝置,如圖,我們掃描到了開發闆。
(2) 連接配接後,打開OAD
(3) 點選file,選擇Progame(OAD),選擇生成的bin檔案,可以看到我們目前運作的是A固件
(4) 點選start,當進行到100%,就完成了固件空中更新。
(5) 更新後再次打開OAD選項,可以看到選擇運作的固件已經是B版本的了。
注意:
要把 BLE協定棧BLE-CC254x-1.4.0 安裝在C槽,在其他盤符下沒有生成bin檔案。
本文章轉載自
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx
請勿用于商業