蓝牙BLE之CC2541 OAD升级[带看门狗OAD]
說明和代碼設置
本文有兩篇文章參考,其中博主"甜甜的大香瓜"的文章是原始文章,詳細介紹了ImageA的hexh和B的bin以及A的bin是怎么生成的和具體的操作方法:https://blog.csdn.net/feilusia/article/details/50289371,然后博主"龍井茶110"在"甜甜的大香瓜"的基礎上做了一些具體操作上的補充https://blog.csdn.net/longjingcha110/article/details/88892773
這里在他們的基礎上再做一些細節的補充,他們說具體步驟這里就不說了.經過配置后工程分成4個組:
CC2541:原本工程的分組,沒有OAD能力也不用燒錄BIM,擦除芯片(或者新的芯片)直接在IAR中下載即可
OAD_ImageA:生成image.hex的分組,適配https://blog.csdn.net/feilusia/article/details/50289371文章說的hex
OAD_ImageB:生成imageb.bin,用于軟件升級
OAD_ImageA_Bin:這個分組和OAD_ImageA相比差異在于生成了bin固件,用于升級,和OAD_ImageB相比只是分區不同
如果要下載支持OTA工程的設備,下載步驟分為3步(要按個按照下面三幅圖的選項來勾選):
擦除芯片:
下載BIM:
下載ImageA.hex:
這時候編譯ImageA的時候會報如下錯誤,無需理會點擊確認即可(因為ImageA只是生成hex不生成bin所以會報這個錯誤):
燒錄步驟簡介簡化
經過測試只要按照如下步驟,只進行兩次燒錄也是可以的
擦除和燒錄bim:
燒錄ImageA:
BLE Device Monitor環境搭建
下載完成后就可以用工具"BLE Device Monitor"來升級代碼了,這個工具也不是特別的好用,我折騰了好久才能夠識別到設備,目前"BLE Device Monitor"工具支持TI的dongle和開發板的方式進行連接,下載的代碼為"HostTestReleaseCC2540"工程生成的hex,雖然我沒有找到這個工程,但是卻在資料夾中找到了相關的hex:
其中帶Usb字樣的hex是運行在dongle板子上的程序(用USB連接),沒有USB字樣的是運行在開發板用串口連接,我這里恰好有開發板,所以下載不帶USB的(親自驗證過是可以用CC2540來測試的),因為我的程序是適配開發板的,所以可以再開發板的屏幕上看到打印信息:
我這里波特率為115200沒有檢驗位:
如果設備正常打開"BLE Device Monitor"后可以看到如下界面:
測試
連接上設備后進入OAD界面可以看到現在設備的版本信息如下:
為了辨別當前的程序是A還是B,而且也是為了驗證是否升級成功,這里在開機啟動的時候做了區分打印:
升級成功后串口和工具的log如下(說明確實升級成功了):
成功升級了ImageB后連接進入OAD界面可以看到如下代碼信息:
這時候可以升級OAD_ImageA_Bin分組的bin,升級成功后log顯示如下:
按照上面的方法可以隨意升級A,B兩部分!所以比較好的方法是每次發布程序的時候都生成A,B的bin,升級的時候根據當前設備的類型來選擇bin!
本文資料可以到如下網址下載:https://download.csdn.net/download/chengdong1314/87423333
帶看門狗OAD
繼續開發項目發現當代碼中打開了看門狗后OAD就失敗了,然后就想著OAD之前先關閉看門狗,但是可悲的發現CC2540打開了看門狗后就不能夠關閉了,奇葩的設計:
這就沒有辦法了,只能夠通過藍牙發個命令過來設置一個掉電不丟失的標志位然后重新復位后不再打開看門狗:
使用如下命令復位不開看門狗:
ff550a30393936353937b1dc1400
ff550714aa0000cbe17100
經過這樣修改后代碼可以正常升級了,升級成B再次升級成A打印如下::
本章節所涉及的資料:https://download.csdn.net/download/chengdong1314/87425903
總結
以上是生活随笔為你收集整理的蓝牙BLE之CC2541 OAD升级[带看门狗OAD]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS部署乐视奥比中光(astra pr
- 下一篇: 武汉大学计算机学院 曹老师,中南路学霸,