0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CC2640R2:如何利使用芯片內(nèi)部Bootloader燒寫程序

星星科技指導(dǎo)員 ? 來源:TI ? 作者:Holly Gu, Robin Yu ? 2023-04-04 10:10 ? 次閱讀

CC2640 R2是德州儀器推出的面向 Bluetooth Smart 應(yīng)用的低功耗無線 MCU。該芯片運(yùn)行TI的BLE協(xié)議棧,具有功耗低,外設(shè)種類豐富,射頻性能好等特點(diǎn)。利用它可以實(shí)現(xiàn)許多有趣的應(yīng)用,收到了用戶的廣泛歡迎。

可是很多用戶在量產(chǎn)的時候卻犯難了,用XDS110 + Flash Programmer 2,效率很低,還要在GUI上各種配置,產(chǎn)線工人操作起來十分困難而且容易失誤。買一拖多的編程器配上位機(jī),又舍不得口袋里的銀子,而且不是TI官方出品,穩(wěn)定性和可靠性難以得到保證。本文給大家介紹一種利用芯片內(nèi)部Bootloader燒寫程序的方法,進(jìn)入Boot模式,用普通的串行接口就可以進(jìn)行固件的引導(dǎo),F(xiàn)LASH的擦寫,Program,不花費(fèi)額外成本。 而且這個bootloader是放在ROM里的,不會被誤擦除, Boot的時候UART/SPI不斷就沒事,實(shí)在不行l(wèi)oad一半斷了也無傷大雅,再boot一次就好了,即快捷又安全。

我們來看一下CC2640R2的Bootloader是怎么Run的。CC13x0, CC26x0 SimpleLink Wireless MCU Technical Reference Manual(SWCU117H)第8章節(jié)Bootloader中詳細(xì)介紹了Bootloader的原理,功能,接口定義,包的組成,校驗(yàn)等等,內(nèi)容很多,容易犯困,現(xiàn)在來畫一下重點(diǎn)。

第一個常見的問題是什么情況下會進(jìn)Bootloader,進(jìn)Bootloader會不會影響應(yīng)用程序的執(zhí)行?如果使能了Bootloader,有兩種情況下會進(jìn),第一種情況是一個FLASH里沒有任何鏡像的新芯片在上電后;第二種情況是開啟了Bootloader backdoor,并且預(yù)先定義的backdoor PIN腳被設(shè)置到正確的邏輯電平。上述條件不滿足,在上電后,芯片優(yōu)先執(zhí)行應(yīng)用程序。所以Bootloader和應(yīng)用程序執(zhí)行的條件不同,所以并不會相互影響。

第二個常見的問題是什么是Bootloader backdoor?實(shí)際上就是為芯片進(jìn)入Bootloader留的一個后門。用戶可以通過BL_CONFIG寄存器的BL_ENABLE位使能這個backdoor,并預(yù)設(shè)某個GPIO在某個電平的時候啟用這個Backdoor,在Reset的時候,芯片內(nèi)部會自動檢測預(yù)設(shè)條件是否滿足,來決定是否進(jìn)入Bootloader模式。BL_CONFIG是實(shí)現(xiàn)Bootloader最重要的寄存器,我們后面在講代碼時會參照這個寄存器,其說明在SWCU117H也可以找到。

第三個常見的問題也是容易犯的錯誤是是不是CC2640R2的所有接口和PIN腳都支持Bootloader? 答案是否定的。CC2640R2的Bootloader只支持兩種接口,UART和SSI,而且僅有UART0 和 SSI0 支持,不同封裝的芯片對應(yīng)的引腳也有差別,使用時要特別注意。

對于UART0來說,我們芯片理論上可以達(dá)到3Mbaud(48M/16)的最大波特率,但是片內(nèi)ROM中的Bootloader固件只支持1.6Mbaud。SSI0是Motorolar格式的,SPH=1,SPO=1,SSI0時鐘最快頻率是4Mbaud(48M/12)。不過一味追求接口的速率也沒有必要,畢竟下載程序的速率瓶頸在FLASH的讀寫速度。

其實(shí)要點(diǎn)就這么多,很簡單吧。很多用戶會有疑問是不是要把TI規(guī)定的協(xié)議搞得很透才能實(shí)現(xiàn)Bootloader?當(dāng)然不是,TI工程師的使命就是把復(fù)雜的問題變得簡單,只要把配置搞對,配上正確的上位機(jī),一秒上手不是難事。下面就以UART為例詳細(xì)跟大伙說說Bootloader在CC2640R2上是怎么實(shí)現(xiàn)的。

工欲善其事,必先利其器,請準(zhǔn)備好下面的IDE環(huán)境,藍(lán)牙協(xié)議棧和硬件平臺。插播一條廣告,LAUNCHXL-CC2640R2的demo板可以在TI的estore上購買。

IDE環(huán)境 IAR 8.11.2
藍(lán)牙協(xié)議棧版本 1_50_00_58
硬件平臺 LAUNCHXL-CC2640R2
工程文件 simplelink_cc2640r2_sdk_1_50_00_58examplesrtosCC2640R2_LAUNCHXLblestacksimple_peripheral
上位機(jī)軟件 sblAppEx.exe
仿真器 LAUNCHPAD板載XDS110

值得一提的是,sblAppEx.exe 是TI專門為CC2640R2實(shí)現(xiàn)Bootloader開發(fā)的工具,并向客戶開放源碼,可以基于此二次開發(fā)。

首先,我們需要修改一下Bootloader的設(shè)置,在sourcetidevicescc26x0r2startup_files里,打開ccfg.c,對幾個宏定義做出配置。

在這里我們用DIO15高電平作為Bootloader backdoor的敲門磚,當(dāng)然也可以根據(jù)用戶實(shí)際需要選擇相應(yīng)的DIO。配置好后,點(diǎn)擊IAR的編譯下載按鈕,就可以在simple_peripheraltirtosiarappFlashROM_StackLibraryExe里看到剛剛編譯好的帶Bootloader功能的鏡像文件,我們需要的是.bin結(jié)尾的。

將生成的.bin文件復(fù)制到sblAppEx.exe所在根目錄下,即sblAppEx_1_02_00_00bin。由于sblAppEx.exe自動識別的是blinky_backdoor_select_btn2650.bin,所以需要把剛生成的ble_simple_peripheral_cc2640r2lp_app_FlashROM_StackLibrary.bin改個名字。當(dāng)然了,也可以通過修改sblAppEx.exe的源碼識別用戶所需的.bin,此處不再贅述。然后,按如下步驟操作:

1) DIO15接成高電平。

2) RESET。重新上電或者按LAUNCHPAD的RESET按鈕均可。

3) 在DOS界面選擇0,即XDS110 Class Application/User UART ,回車。不同電腦可能會識別不同的串口號,這個無關(guān)緊要。

如果設(shè)置都正確的話Bootloader開始工作,經(jīng)過Erasing flash,Writing flash,Calculating CRC on device,Comparing CRC這一系列過程后,Bootloader更新程序就完成了,最后系統(tǒng)會Reset device。

一路OK后,此時的LAUNCHPAD里就是新的固件所示現(xiàn)的功能啦!如果配置不對的話,這個App是會閃退的,無法完成Bootloader的功能。如果不想用板載的XDS110,用自己的USB轉(zhuǎn)串口工具也是可以的,只不過不會跳出那么多跟XDS110有關(guān)的COM ports了,取而代之的是USB Serial Ports,串口號不用太糾結(jié)。

當(dāng)然啦,有可能你雙擊sblAppEx.exe來執(zhí)行,但執(zhí)行完一系列操作后會自動退出,看不到任何Log,解決的方法是不要雙擊進(jìn)入程序,在windows的run里用cmd命令,切到sblAppEx.exe所在文件夾就可以啦。如果某個環(huán)節(jié)遇到任何問題,Bootloader就會中斷,DOS界面會提示ERROR,具體可以對照sblAppEx.exe的源碼進(jìn)行檢查,此處不再贅述。需要注意的是,如果不用Bootloader模式,Bootloader backdoor的引腳一定要接固定電平,此處DIO15一定要接低電平,不能懸空。

重要的事再說一遍,sblAppEx.exe是開源的,用戶可以根據(jù)需要修改源碼實(shí)現(xiàn)定制化的功能,比如UART波特率和上文提到的鏡像名稱等等。

是不是產(chǎn)線上用起來既簡單又方便呢,基本是一鍵式下載,既高效又防止誤操作。當(dāng)然啦,還可以適當(dāng)修改一下下載工具和上位機(jī)軟件,就可以實(shí)現(xiàn)多個器件的下載。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16804

    瀏覽量

    349384
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1216

    瀏覽量

    101005
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    632

    瀏覽量

    39440
收藏 人收藏

    評論

    相關(guān)推薦

    昇潤科技將在三月底推出CC2640R2 SDK開發(fā)平臺

    平臺的市面主流機(jī)型,不僅如此,昇潤CC2640R2 SDK中還將包含生產(chǎn)測試程序,開發(fā)人員不需要再設(shè)計(jì)藍(lán)牙測試程序,極大的簡化藍(lán)牙應(yīng)用開發(fā)人員的開發(fā)步驟。昇潤CC2640R2 SDK解
    發(fā)表于 02-23 15:37

    CC2640R2調(diào)試出現(xiàn)奇怪的問題

    :simplelink_cc2640r2_sdk_1_35_00_33硬件版本:CC2640R2 4x4 補(bǔ)充內(nèi)容 (2018-7-27 13:34): 謝謝各位大俠,已經(jīng)查明原因,是芯片內(nèi)
    發(fā)表于 06-28 09:57

    CC2640CC2640R2F的核心區(qū)別和重點(diǎn)是什么?不急,本文為你細(xì)細(xì)道來

    之上,CC2640R2F提供給客戶應(yīng)用程序的空間可以滿足和256K Flash BLE SOC 芯片一樣的使用需求。*SimpleLink CC2640R2 SDK 介紹*TI專門提供
    發(fā)表于 11-01 16:19

    CC2640CC2640R2F的不同點(diǎn)及開發(fā)板有哪些?

    CC2640R2F提供給客戶應(yīng)用程序的空間可以滿足和256K Flash BLE SOC 芯片一樣的使用需求。*SimpleLink CC2640R2 SDK 介紹*TI專門提供了適
    發(fā)表于 11-01 16:21

    CC2640R2軟件測評分享!

    各位好,相應(yīng)大家已經(jīng)對CC2640R2蠢蠢欲動了,我簡單的貼一份測評報(bào)告和上手錯誤指導(dǎo)給到給位,馬上大家就可以在官網(wǎng)上下載到SDK了,請各位持續(xù)留意。首先上app + stack的空間測評數(shù)據(jù)
    發(fā)表于 10-14 07:19

    請問使用cc2640R2 CCS版本對之前版本的工程會產(chǎn)生影響嗎?

    之前使用的芯片cc2640對應(yīng)的ccs版本是V6.2,現(xiàn)在想使用CC2640R2,請問CCS是直接更新還是另外下載一個版本,會不會對之前版本的工程有影響?
    發(fā)表于 10-21 07:51

    為什么更改CC2640bootloader的默認(rèn)IO口之后bootloader功能就失敗了?

    一、大致情況介紹 目前使用CC2640R2 launchpad ,如圖1所示。目前需要對CC2640進(jìn)行bootloader操作,使用DIO6和DIO7作為UART的TXD和RXD,使用DIO23
    發(fā)表于 11-01 10:30

    請問CC2640R2編譯出現(xiàn)以下情況該怎么辦?

    CC2640R2 編譯問題這個問題該如何解決?
    發(fā)表于 11-05 06:49

    利用芯片內(nèi)部Bootloader程序的方法

    的編程器配上位機(jī),又舍不得口袋里的銀子,而且不是TI官方出品,穩(wěn)定性和可靠性難以得到保證。本文給大家介紹一種利用芯片內(nèi)部Bootloader
    發(fā)表于 11-11 07:08

    CC2640R2的外設(shè)功能介紹

    設(shè)。 ? 《SensorController 協(xié)處理器教程》 SensorController 是 CC2640R2 內(nèi)部的一顆協(xié)處理器,可以使用該協(xié)處理器開發(fā)超低功耗的傳感器采集程序。協(xié)處理器教程,從介紹
    發(fā)表于 09-22 07:30

    CC2640R2F軟件開發(fā)的整體過程

    CC2640R2軟件速成之三-軟件開發(fā)從入門到專家
    的頭像 發(fā)表于 08-23 01:35 ?4906次閱讀

    CC2640R2F的架構(gòu)及工作原理

    CC2640R2軟件速成之一-架構(gòu)及工作原理
    的頭像 發(fā)表于 08-23 01:33 ?8884次閱讀

    CC2640R2Bootloader是怎么Run的

    的銀子,而且不是TI官方出品,穩(wěn)定性和可靠性難以得到保證。本文給大家介紹一種利用芯片內(nèi)部Bootloader
    的頭像 發(fā)表于 12-29 14:37 ?1331次閱讀

    CC2640R2: TI BLE OAD(OTA)協(xié)議在Android和iOS上的APP流程和代碼解讀

    CC2640R2: TI BLE OAD(OTA)協(xié)議在Android和iOS上的APP流程和代碼解讀
    發(fā)表于 11-01 08:26 ?0次下載
    <b class='flag-5'>CC2640R2</b>: TI BLE OAD(OTA)協(xié)議在Android和iOS上的APP流程和代碼解讀

    CC2640R2:如何使用芯片內(nèi)部Bootloader程序

    CC2640R2:如何使用芯片內(nèi)部Bootloader
    發(fā)表于 11-01 08:26 ?3次下載
    <b class='flag-5'>CC2640R2</b>:如何<b class='flag-5'>利</b>使用<b class='flag-5'>芯片</b><b class='flag-5'>內(nèi)部</b><b class='flag-5'>Bootloader</b><b class='flag-5'>燒</b><b class='flag-5'>寫</b><b class='flag-5'>程序</b>