CC2640 R2是德州儀器推出的面向 Bluetooth Smart 應(yīng)用的低功耗無線 MCU。該芯片運(yùn)行TI的BLE協(xié)議棧,具有功耗低,外設(shè)種類豐富,射頻性能好等特點(diǎn)。利用它可以實(shí)現(xiàn)許多有趣的應(yīng)用,收到了用戶的廣泛歡迎。
可是很多用戶在量產(chǎn)的時(shí)候卻犯難了,用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)額外成本。 而且這個(gè)bootloader是放在ROM里的,不會(huì)被誤擦除, Boot的時(shí)候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)。
第一個(gè)常見的問題是什么情況下會(huì)進(jìn)Bootloader,進(jìn)Bootloader會(huì)不會(huì)影響應(yīng)用程序的執(zhí)行?如果使能了Bootloader,有兩種情況下會(huì)進(jìn),第一種情況是一個(gè)FLASH里沒有任何鏡像的新芯片在上電后;第二種情況是開啟了Bootloader backdoor,并且預(yù)先定義的backdoor PIN腳被設(shè)置到正確的邏輯電平。上述條件不滿足,在上電后,芯片優(yōu)先執(zhí)行應(yīng)用程序。所以Bootloader和應(yīng)用程序執(zhí)行的條件不同,所以并不會(huì)相互影響。
第二個(gè)常見的問題是什么是Bootloader backdoor?實(shí)際上就是為芯片進(jìn)入Bootloader留的一個(gè)后門。用戶可以通過BL_CONFIG寄存器的BL_ENABLE位使能這個(gè)backdoor,并預(yù)設(shè)某個(gè)GPIO在某個(gè)電平的時(shí)候啟用這個(gè)Backdoor,在Reset的時(shí)候,芯片內(nèi)部會(huì)自動(dòng)檢測(cè)預(yù)設(shè)條件是否滿足,來決定是否進(jìn)入Bootloader模式。BL_CONFIG是實(shí)現(xiàn)Bootloader最重要的寄存器,我們后面在講代碼時(shí)會(huì)參照這個(gè)寄存器,其說明在SWCU117H也可以找到。
第三個(gè)常見的問題也是容易犯的錯(cuò)誤是是不是CC2640R2的所有接口和PIN腳都支持Bootloader? 答案是否定的。CC2640R2的Bootloader只支持兩種接口,UART和SSI,而且僅有UART0 和 SSI0 支持,不同封裝的芯片對(duì)應(yīng)的引腳也有差別,使用時(shí)要特別注意。
對(duì)于UART0來說,我們芯片理論上可以達(dá)到3Mbaud(48M/16)的最大波特率,但是片內(nèi)ROM中的Bootloader固件只支持1.6Mbaud。SSI0是Motorolar格式的,SPH=1,SPO=1,SSI0時(shí)鐘最快頻率是4Mbaud(48M/12)。不過一味追求接口的速率也沒有必要,畢竟下載程序的速率瓶頸在FLASH的讀寫速度。
其實(shí)要點(diǎn)就這么多,很簡單吧。很多用戶會(huì)有疑問是不是要把TI規(guī)定的協(xié)議搞得很透才能實(shí)現(xiàn)Bootloader?當(dāng)然不是,TI工程師的使命就是把復(fù)雜的問題變得簡單,只要把配置搞對(duì),配上正確的上位機(jī),一秒上手不是難事。下面就以UART為例詳細(xì)跟大伙說說Bootloader在CC2640R2上是怎么實(shí)現(xiàn)的。
工欲善其事,必先利其器,請(qǐng)準(zhǔn)備好下面的IDE環(huán)境,藍(lán)牙協(xié)議棧和硬件平臺(tái)。插播一條廣告,LAUNCHXL-CC2640R2的demo板可以在TI的estore上購買。
IDE環(huán)境 | IAR 8.11.2 |
藍(lán)牙協(xié)議棧版本 | 1_50_00_58 |
硬件平臺(tái) | 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,對(duì)幾個(gè)宏定義做出配置。
在這里我們用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自動(dòng)識(shí)別的是blinky_backdoor_select_btn2650.bin,所以需要把剛生成的ble_simple_peripheral_cc2640r2lp_app_FlashROM_StackLibrary.bin改個(gè)名字。當(dāng)然了,也可以通過修改sblAppEx.exe的源碼識(shí)別用戶所需的.bin,此處不再贅述。然后,按如下步驟操作:
1) DIO15接成高電平。
2) RESET。重新上電或者按LAUNCHPAD的RESET按鈕均可。
3) 在DOS界面選擇0,即XDS110 Class Application/User UART ,回車。不同電腦可能會(huì)識(shí)別不同的串口號(hào),這個(gè)無關(guān)緊要。
如果設(shè)置都正確的話Bootloader開始工作,經(jīng)過Erasing flash,Writing flash,Calculating CRC on device,Comparing CRC這一系列過程后,Bootloader更新程序就完成了,最后系統(tǒng)會(huì)Reset device。
一路OK后,此時(shí)的LAUNCHPAD里就是新的固件所示現(xiàn)的功能啦!如果配置不對(duì)的話,這個(gè)App是會(huì)閃退的,無法完成Bootloader的功能。如果不想用板載的XDS110,用自己的USB轉(zhuǎn)串口工具也是可以的,只不過不會(huì)跳出那么多跟XDS110有關(guān)的COM ports了,取而代之的是USB Serial Ports,串口號(hào)不用太糾結(jié)。
當(dāng)然啦,有可能你雙擊sblAppEx.exe來執(zhí)行,但執(zhí)行完一系列操作后會(huì)自動(dòng)退出,看不到任何Log,解決的方法是不要雙擊進(jìn)入程序,在windows的run里用cmd命令,切到sblAppEx.exe所在文件夾就可以啦。如果某個(gè)環(huán)節(jié)遇到任何問題,Bootloader就會(huì)中斷,DOS界面會(huì)提示ERROR,具體可以對(duì)照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)多個(gè)器件的下載。
審核編輯:郭婷
-
mcu
+關(guān)注
關(guān)注
146文章
16899瀏覽量
349934 -
uart
+關(guān)注
關(guān)注
22文章
1219瀏覽量
101121 -
GUI
+關(guān)注
關(guān)注
3文章
639瀏覽量
39483
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論