CC1310是TI Simplelink MCU系列中支持Sub-1G的SOC.針對(duì)很多客戶需要串口進(jìn)行固件升級(jí)的應(yīng)用需求,CC1310內(nèi)置了基于ROM的bootloader, 該bootloader支持UART和SPI兩種接口.詳細(xì)信息可參考TI CC1310的用戶指南(http://www.ti.com/lit/pdf/swcu117) 以及TI應(yīng)用文檔SWRA466A, CC2538/CC26xx Serial Bootloader Interface (http://www.ti.com/cn/lit/swra466)。傳統(tǒng)的bootloader至少需要三跟連線,這篇博客主要介紹如何實(shí)現(xiàn)兩線bootloader并基于TI Flash Programmer 2(http://www.ti.com/tool/flash-programmer)工具和CC1310 Launchpad(LAUNCHXL-CC1310)評(píng)估板對(duì)芯片實(shí)現(xiàn)UART的固件燒寫。
兩線bootloader工程設(shè)置
CC1310 三線bootloader如下圖左,除了串口的兩根連線外,還需要一個(gè)專門的I/O進(jìn)行啟動(dòng)模式的控制。針對(duì)很多客戶產(chǎn)品只有一個(gè)對(duì)外的串口接口,提出了下圖右的兩線Bootloader方式,這個(gè)方式將BOOT_IO 與CC1310的UART RX復(fù)合使用。
如下圖BOOTLOADER的串口配置所示,UART和SPI的口是固定的I/O, 不能設(shè)置其他的I/O。CC1310 Launchpad 使用的是7*7 RGZ的封裝,下面我們需要設(shè)置BOOT_IO
BOOT_IO的設(shè)置在ccfg.c文件中,需要配置兩個(gè)宏,一個(gè)是有效觸發(fā)電平, 一個(gè)是DIO的編號(hào)。我們將有效觸發(fā)電平設(shè)置成高有效,BOOT_IO設(shè)置為DIO3。修改如下代碼。同時(shí),為了使能Bootloader功能,需要定義下面兩個(gè)宏SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE和SET_CCFG_BL_CONFIG_BL_ENABLE為0xC5
#defineSET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5
#defineSET_CCFG_BL_CONFIG_BL_LEVEL 0x0 // Active low to open boot loader backdoor
#defineSET_CCFG_BL_CONFIG_BL_PIN_NUMBER 0x02 // DIO number for boot loader backdoor
#defineSET_CCFG_BL_CONFIG_BL_ENABLE 0xC5
編譯,燒寫固件。
編譯生成目標(biāo)升級(jí)Bin固件
這里以TI的CC1310 SDK的pwmled_CC1310_LAUNCHXL_tirtos_ccs例程,編譯需要升級(jí)的固件。有兩個(gè)地方需要設(shè)置,一個(gè)是設(shè)置ARM Hex Utility中的memory width和rom width為8,一個(gè)是Build, Step中的post build添加,${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.bin ${CG_TOOL_ROOT}/bin/armofd.exe ${CG_TOOL_ROOT}/bin/armhex.exe ${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe
設(shè)置生成bin文件。 如下圖。
編譯工程,得到pwmled_CC1310_LAUNCHXL_tirtos_ccs.bin
通過Flash Programmer2對(duì)目標(biāo)芯片完成兩線串口Bootloader燒寫
應(yīng)用文檔SWRA466A中,對(duì)應(yīng)的提供了一個(gè)命令行小程序sblAppEx,用于固件升級(jí),因?yàn)槌绦蚓幾g較早,有些版本運(yùn)行會(huì)出錯(cuò)。而很多用戶不知道的,F(xiàn)lash Programmer2 具有通過串口進(jìn)行固件燒寫的功能。下面, 具體介紹用Flash Programmer2進(jìn)行串口固件升級(jí)的具體操作如下:
1. 按照?qǐng)DX所示,連接UART口和BOOT IO口, BOOT IO (即DIO2) 接低點(diǎn)平, 復(fù)位系統(tǒng). 由于我們?cè)O(shè)置的是低點(diǎn)平進(jìn)入Bootloader狀態(tài),復(fù)位后,芯片進(jìn)入ROM Bootloader模式
2. 在Flash Programmer2 的左上角 Connected devices中,選擇XDS110 Class Application, Unknown (這是CC1310 Launchpad自帶的UART口,如果是你自己的串口,也可以在這里看到)
3. 選擇好Unknown后,在左下腳的Select Target Device… 下拉菜單中選擇對(duì)應(yīng)型號(hào)CC1310F128
4. 選擇好芯片好. 右鍵, 選擇Connect, 與目標(biāo)芯片建立UART通信, 如下圖
5. 選擇需要升級(jí)的固件BIN文件, 這里選取之前步驟生成的pwmled_CC1310_LAUNCHXL_tirtos_ccs.bin文件
6. 升級(jí)成功后,可以從Flash Programmer最下方的狀態(tài)窗口看到更新
7. Dd
至此,我們就實(shí)現(xiàn)了兩線Bootloader
審核編輯:何安
-
嵌入式處理
+關(guān)注
關(guān)注
0文章
341瀏覽量
9990
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論