天天看點

第二十四節 OAD空中更新

第二十四節  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,然後編譯,下載下傳到開發闆中。

第二十四節 OAD空中更新

配置Image A

    打開OADExample工程,配置工程,添加如下幾個宏

    FEATURE_OAD_BIM

    HAL_IMAGE_A

    FEATURE_OAD

    OAD_KEEP_NV_PAGES

第二十四節 OAD空中更新

(1) 打開simplePeripheral.c找到宏定義DEFAULT_ENABLE_UPDATE_REQUEST,将其改為FLASE。否則會影響BLEDevice Monitor對其進行空中更新,到時可以再改回來。

第二十四節 OAD空中更新

(2) IAR左側導航中找到Profile檔案夾,點選右鍵添加oad_target.c和oad_target.h兩個檔案,二檔案位于C:\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\OAD中。

第二十四節 OAD空中更新

(3) 在IAR導航中找到HAL→Target→MT254xboard→Driver,右鍵添加檔案hal_crc.c,該檔案位于C:\TexasInstruments\BLE-CC254x-1.4.0\Components\hal\target\MT254xboard中。

第二十四節 OAD空中更新

(4) 在剛才的simplePeripheral.c檔案中,找到simplePeripheral_Init()函數,在裡面添加OADTarget_AddService()函數。

第二十四節 OAD空中更新

(5) 在simplePeripheral.c的前面,添加引用OAD的頭檔案,OAD.h和OAD_target.h。

第二十四節 OAD空中更新

(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步對應的。

第二十四節 OAD空中更新

(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。

第二十四節 OAD空中更新

8) 點選Project→Option…,或直接按Alt+F7,選擇Linker,選擇Extra Output。

第二十四節 OAD空中更新

(9) Extra Option添加Hex檔案的輸出。

第二十四節 OAD空中更新

(10) 點選OK,編譯下載下傳,如果出現如下錯誤,是因為我們使用的是IAR8051 8.30版本,如果你使用的是IAR8.20版本就沒有這問題。

第二十四節 OAD空中更新

(11) 這個問題是因為使用了虛拟寄存器導緻的,我們找到如下檔案。

第二十四節 OAD空中更新

(12) 對檔案的115行進行如下修改,将虛拟寄存器注釋掉。

第二十四節 OAD空中更新

(13) 編譯後,可以看到我們生成的檔案

第二十四節 OAD空中更新

(14) 我們将hex檔案疊加到BIM後面

第二十四節 OAD空中更新

這樣ImageA就成功燒錄進開發闆了。

配置Image B

(1) 方法如Image A,其它要注意的幾個地方:點選Project→Option…,或直接按Alt+F7,選擇C/C++Compiler,選擇Preprocessor,将Defined symbols中的HAL_IMAGE_A改成B。

第二十四節 OAD空中更新

(2) 點選Project→Option…,或直接按Alt+F7,選擇Linker,選擇Config,将Linker Configuration file中的檔案改為B。

第二十四節 OAD空中更新

(3) 儲存後編譯,同樣的可以看到生成的檔案。

第二十四節 OAD空中更新

(4) 為了區分A和B鏡像,我們将最終結果改名。

第二十四節 OAD空中更新

空中更新

有了bin檔案就可以進行空中更新了,打開BLE Device Monitor(沒有安裝的需要安裝),打開後軟體會自動掃描裝置,如圖,我們掃描到了開發闆。

第二十四節 OAD空中更新

(2) 連接配接後,打開OAD

第二十四節 OAD空中更新

(3) 點選file,選擇Progame(OAD),選擇生成的bin檔案,可以看到我們目前運作的是A固件

第二十四節 OAD空中更新

(4) 點選start,當進行到100%,就完成了固件空中更新。

第二十四節 OAD空中更新

(5) 更新後再次打開OAD選項,可以看到選擇運作的固件已經是B版本的了。

第二十四節 OAD空中更新

注意:

要把 BLE協定棧BLE-CC254x-1.4.0 安裝在C槽,在其他盤符下沒有生成bin檔案。

本文章轉載自

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx

請勿用于商業