SimpleBLEPeripheral OAD Profile



SimpleBLEPeripheral OAD Profile

 

1.概述:

 

先對應工程編譯準備好BIM.hex和ImageA.hex、ImageB.bin,可用SmartRF Flash Programmer直接燒錄BIM.hex和ImageA.hex,先燒錄BIM,選擇,然後燒錄ImageA,選擇。再在PC端用BLE Device Monitor或者蘋果手機端用TI BLE Multitool軟件進行ImageB.bin文件的升級。

 

2.配置步驟:

 

打開相應的工程BIM,BIM工程無需配置。SimpleBLEPeripheral從機工程進行相關工程配置,如下:

ImageB.bin需要在應用開發完成後手動添加OADprofile,使能OAD空中升級功能。

第一步:在Projects\ble\common\cc2540路徑下添加cc254x_f256_imgB.xcl文件。打開工程,在HAL目錄下添加hal_crc.c文件,在PROFILES目錄下添加oad_target.c,oad_target.h,oad.h三個文件。

第二步:在option C/C++Compiler-Preprocessor添加OAD頭文件路徑$PROJ_DIR$\..\..\Profiles\OAD

添加預處理宏:

FEATURE_OAD

OAD_KEEP_NV_PAGES

FEATURE_OAD_BIM

HAL_IMAGE_B

在linker-config中選擇正確的鏈接文件$PROJ_DIR$\..\..\common\CC2540\cc254x_f256_imgB.xcl。

其他配置如下圖:

 

在Build Actions選項Post-build command line欄中填寫:

"$PROJ_DIR$\..\..\common\cc2540\cc254x_ubl_pp.bat""$PROJ_DIR$" "ProdUBL""$PROJ_DIR$\CC2541-OAD-ImgB\Exe\SimpleBLEPeripheral"

最後一對雙引號中的參數是生成的bin文件的保存路徑及文件名,請根據實際工程自行修改。

 

第三步:在主simpleBLEPeripheral.c文件中添加頭文件包含:

#ifdefined FEATURE_OAD

 #include "oad.h"

 #include "oad_target.h"

#endif

在Init函數結尾添加oad profile註冊函數:

 

#ifdefined FEATURE_OAD

 VOID OADTarget_AddService();                   // OAD Profile

#endif

 

在oad_target.c中修改OAD_IMAGE_VERSION版本,便於區別。

至此,應該可以成功編譯併產生bin文件。

 

另外,ImageA.hex的編譯跟ImageB一樣,需要注意幾點:

 

1.Options中將C/C++Compiler-Preprocessor裏的HAL_IMAGE_B換成 HAL_IMAGE_A

 

2.BuildActions-post- build command line中OAD-ImgB修改爲OAD-ImgA。

 

3.Linker-configurationlfile中xcl需要替換成如下:

 

$PROJ_DIR$\..\..\common\CC2540\cc254x_f256_imgA.xcl。

現在可以用BLE Device Monitor或者TI BLE Multitool進行ImageB.bin文件的升級了。

 

如圖是用BLE Device Monitor進行bin文件的升級,整個過程大概一分鐘左右,主要看文件大小和傳輸速度來決定。

 

補充幾點:

 

1.工程要放在C盤,否則無法生成bin文件;修改批處理文件也可以放在其它盤:

 

Projects\ble\common\cc2540中cc254x_ubl_pp.bat需要修改爲:

 

@echooff

 

%~d1

 

chdir%1\..\..\common\cc2540

 

startcc254x_ubl_pp.js %2 %3 %4 %5

 

2.編譯優化建議打開。

3.代碼中對flash的操作,一定要重新計算合適的操作地址,避免破壞代碼。

4.ImageA/ImageB的連接參數決定了OAD的速度,根據需求自行修改。比如:

  1. //Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameterupdate request is enabled

    #defineDEFAULT_DESIRED_MIN_CONN_INTERVAL    16//80

     

    //Maximum connection interval (units of 1.25ms, 800=1000ms) if automaticparameter update request is enabled

    #defineDEFAULT_DESIRED_MAX_CONN_INTERVAL    16//800

     

    //Slave latency to use if automatic parameter update request is enabled

    #defineDEFAULT_DESIRED_SLAVE_LATENCY        0

     

    //Supervision timeout value (units of 10ms, 1000=10s) if automatic parameterupdate request is enabled

    #defineDEFAULT_DESIRED_CONN_TIMEOUT         50//1000

     

    //Whether to enable automatic parameter update request when a connection isformed

    #defineDEFAULT_ENABLE_UPDATE_REQUEST        FALSE //TRUE

更多技術文章瀏覽請關注:

百家號:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh

頭條號:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987

 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章