日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC2541 OAD升级实现

發布時間:2024/3/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC2541 OAD升级实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BLE_OAD升級

1、軟件版本:IAR ?for ?8051 ?10.10.1

2、協議棧:BLE 1.4.0

?

一、獲得BIM。

3、\BLE-CC254x-1.4.0\Projects\ble\util\BIM\cc254x\BIM.eww,編譯出BLE-CC254x-1.4.0\Projects\ble\util\BIM\cc254x\CC254xF256\Exe\BIM_CC254xF256.hex文件

A 不存在時,在等待 IAR 或者 Flash Programmer A 通過物理方法寫入芯片內部。?OAD 的實現必須要有 BIM BIM 負責管理 IMAGE-A IMAGE-B,當有合適的 IMAGE-B 存在, BIM 會啟動 B,否則啟動 A。

?

二、自己新建OADImgeA配置

注意:BLE-CC254x-1.4.0\Projects\ble\SimpleBLEPeripheral\CC2541DB\SimpleBLEPeripheral.eww工程默認具有OAD

1、IAR 中,選擇 ProjectEdit Configurations,選擇 New…,如圖 2 所示,添加一個新的配置,起名就叫 Image_A,點擊 OK,這時 IAR 界面的左邊導航部分,就變成 Image_A 了,如圖 3。

?

2、IAR 中左側導航中,找到 App 文件夾下的 simpleBLEPeripheral.c 文件,雙擊打開,找到宏定義DEFAULT_ENABLE_UPDATE_REQUEST,將其改為 FALSE(原來是 TRUE),見圖 4。 否則會影響BLE Device Monitor 對其進行空中升級, 到時可以再改回來。 (有時候不該也可以,不知道原因)

?

3、?IAR 左側導航中找到 Profile 文件夾,點擊右鍵添加 oad_target.c oad_target.h 兩個文件,見圖 5, 二文件位于 C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\OAD 中。

4、 simpleBLEPeripheral.c 文 件 中 , 找 到 SimpleBLEPeripheral_Init() 函 數 , 在 里 面 添 加OADTarget_AddService()函數,見圖 7.

?

#if defined FEATURE_OAD

??VOID OADTarget_AddService(); ???????????????????// OAD Profile

#endif

#if defined FEATURE_OAD

??#include "oad.h"

??#include "oad_target.h"

#endif

?

5、 keyfobdemo.c 的前面,添加引用 OAD 的頭文件, OAD.h OAD_target.h,見圖 8.

6、點擊 ProjectOption…,或直接按 Alt+F7,選擇 C/C++ Compiler,選擇 Preprocessor,在Additional include directories 中添加路徑$PROJ_DIR$\..\..\Profiles\OAD,在 Defined symbols 中添加宏:FEATURE_OAD ???OAD_KEEP_NV_PAGES ??FEATURE_OAD_BIM ??HAL_IMAGE_A

?

$PROJ_DIR$\..\..\Profiles\OAD

FEATURE_OAD_BIM

HAL_IMAGE_A

FEATURE_OAD

OAD_KEEP_NV_PAGES

?

7、點擊 ProjectOption…,或直接按 Alt+F7,選擇 Build Actions,在 Post-build command line中添加如下路徑字符串。
注意,各雙引號之間只有一個空格。 見圖 10. 注意圖中紅框標的部分, Image_A 是和之前第1 步對應的。

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

?

8、點擊 ProjectOption…,或直接按 Alt+F7,選擇 Linker,選擇 ConfigLinker Configurationfile中 勾 選 Override default , 添 加 $PROJ_DIR$\..\..\common\cc2540\cc254x_f256_imgA.xcl,如圖 11

?

$PROJ_DIR$\..\..\common\cc2540\cc254x_f256_imgA.xcl

?

9、點擊 ProjectOption…,或直接按 Alt+F7,選擇 Linker,選擇 Output,按圖 12 進行設置。

10、點擊 ProjectOption…,或直接按 Alt+F7,選擇 Linker,選擇 Extra Output,如圖 13 所示。

?

11、點擊 ProjectOption…,或直接按 Alt+F7,選擇 Texas Instruments,選擇 Download,如圖 14 所示。

12、編譯,下載板子中,編譯時可能會出現如圖 15 所示的腳本錯誤,忽略即可。

?

13、文件夾下獲得文件如圖16.則成功。

?

二、自己新建OADImgeB配置

步驟如上。區別如下:

l?IAR 中,選擇 ProjectEdit Configurations,選擇 New…,如圖 2 所示,添加一個新的配置,起名就叫 Image_B,點擊 OK,這時 IAR 界面的左邊導航部分,就變成 Image_B 了,如圖 3。

l?點擊 ProjectOption…,或直接按 Alt+F7,選擇 C/C++ Compiler,選擇 Preprocessor,在Additional include directories 中添加路徑$PROJ_DIR$\..\..\Profiles\OAD,在 Defined symbols 中添加宏:FEATURE_OAD ???OAD_KEEP_NV_PAGES ??FEATURE_OAD_BIM ??HAL_IMAGE_B?

l?點擊 ProjectOption…,或直接按 Alt+F7,選擇 Build Actions,在 Post-build command line中添加如下路徑字符串。

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

?

l?點擊 ProjectOption…,或直接按 Alt+F7,選擇 Linker,選擇 ConfigLinker Configurationfile中 勾 選 Override default , 添 加 $PROJ_DIR$\..\..\common\cc2540\cc254x_f256_imgB.xcl,如圖 11

$PROJ_DIR$\..\..\common\cc2540\cc254x_f256_imgB.xcl

?

三、使用SmartRF Flash Programmer 工具燒寫

1、燒寫啟動鏡像管理文件BIM_CC254xF256.hexErase, program and verify OK成功。

?

2、燒寫ImgA鏡像。注意這里燒錄的是 hex 文件, OAD 燒錄用的是 bin 文件且為append and verify選項。

?

四、使用BLE Device Monito+USB Dongler空中升級。(也可使用 iso 手機應用商店的TI BLE Multitool 工具)

1、連接BLE Device MonitorUSB Dongle

2、使用設備管理器找到USB Dongler 被分配的COM

3、Options->Serial port 中設定COM

?

4、點擊scan”掃描設備。

?

5、選中設備,點擊connect”連續設備。會發現可OAD升級的設備服務。

?

6、OAD升級。點擊File-ProgramOAD),選擇要下載的ImageBbin后,點Start。

?


五、軟件版本和用戶ID管理。

方法1:直接更改buildConfig.cfg

//?OAD?Image?Version?(0x0000-0x7FFF)?

-DOAD_IMAGE_VERSION=0x0000??

方法2:屏蔽掉buildConfig.cfg中的-DOAD_IMAGE_VERSION=0x0000后;點擊 ProjectOption…,或直接按 Alt+F7,選擇 C/C++ Compiler,選擇 Defined symbols 中添加宏:OAD_IMAGE_VERSION=1

方法3:屏蔽掉buildConfig.cfg中的-DOAD_IMAGE_VERSION=0x0000后;oad_target.c 文件中直接設置:

版本

#if !defined (OAD_IMAGE_VERSION)

??#define OAD_IMAGE_VERSION ???0x0000

#endif

用戶ID

#if !defined (OAD_IMAGE_A_USER_ID)

??#define OAD_IMAGE_A_USER_ID ?{'A', 'A', 'A', 'A'}

#endif

?

#if !defined (OAD_IMAGE_B_USER_ID)

??#define OAD_IMAGE_B_USER_ID ?{'B', 'B', 'B', 'B'}

#endif

?

?


問題記錄

問題1:

2018-01-01

現象

Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition. At least 0xd more bytes needed. The problem occurred while processing the segment placement command ?"-Z(IDATA)ISTACK+_IDATA_STACK_SIZE#_IDATA_BEG-_IDATA_END", where at the moment of placement the available memory ranges were "IDATA:4d-ff"

解決1

Options..->General Options中的Stark/Heap 選項卡,將IDATA 0xC0 改為 0xB0

解決2

C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\common\cc2540\ti_51ew_cc2540b.xcl

將下面-Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F

改成-Z(DATA)VREG=08-7F

原因

IAR版本問題:8.30后會出現本問題。

?

?

總結

以上是生活随笔為你收集整理的CC2541 OAD升级实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。