蔣炯煒,錢 浩,于 鵬(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無(wú)錫 214035)
基于CAN總線的TMS320F2812程序更新技術(shù)
蔣炯煒,錢 浩,于 鵬
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無(wú)錫 214035)
摘 要:介紹了TI公司數(shù)字信號(hào)處理器TMS320F2812的引導(dǎo)方式、Flash編程方法、Flash啟動(dòng)流程。在此基礎(chǔ)上提出了一種基于CAN總線的TMS320F2812程序的遠(yuǎn)程加載方案,并詳細(xì)闡述了詳細(xì)的實(shí)現(xiàn)過(guò)程。該方案擺脫了Flash編程時(shí)對(duì)JTAG接口、RS232接口的依賴,非常適用于軍用領(lǐng)域,具有較大的實(shí)用價(jià)值。
關(guān)鍵詞:F2812;CAN總線;遠(yuǎn)程更新;Flash編程
TMS320F2812(以下簡(jiǎn)稱F2812)是TI公司一款用于控制的高性能、多功能、高性價(jià)比的32位定點(diǎn)DSP[1],在控制領(lǐng)域得到了廣泛應(yīng)用。由于自動(dòng)化設(shè)備大多安裝在野外,給程序維護(hù)工作帶來(lái)了極大困難。已安裝的設(shè)備若出現(xiàn)程序缺陷,或者用戶提出新的需求,需要對(duì)程序進(jìn)行更新。傳統(tǒng)的維護(hù)方法均是到實(shí)地取下設(shè)備,開蓋后通過(guò)仿真器進(jìn)行燒寫維護(hù),此方法效率低,而且在軍用領(lǐng)域要求不拆機(jī)殼進(jìn)行程序升級(jí)。由于F2812 片內(nèi)自帶有128 k 的Flash資源,可以用來(lái)存放程序代碼,可多次擦除和寫入數(shù)據(jù),并且片內(nèi)帶有電荷泵,使其可在正常工作電壓下對(duì)Flash進(jìn)行逐段擦寫,為程序的遠(yuǎn)程更新提供了基礎(chǔ)。
目前最常用的是RS232方式實(shí)現(xiàn)遠(yuǎn)程加載,但是在軍用領(lǐng)域,RS232通信方式是很少使用的。單獨(dú)為了實(shí)現(xiàn)遠(yuǎn)程加載增加RS232接口對(duì)主機(jī)來(lái)說(shuō)是一種負(fù)擔(dān),而CAN總線廣泛應(yīng)用于軍用領(lǐng)域并且F2812自身就帶有一路CAN總線接口。本文提出一種基于CAN總線的F2812程序遠(yuǎn)程升級(jí)技術(shù)。
2.1F2812引導(dǎo)方式
F2812上電后有6種不同的啟動(dòng)模式,主要通過(guò)GPIOF端口的4個(gè)引腳上電復(fù)位過(guò)程中所處的狀態(tài)確定選擇哪種方式啟動(dòng),引導(dǎo)方式如表1所示。
表1 F2812引導(dǎo)方式
2.2F2812的Flash編程
F2812的Flash編程過(guò)程及方法如圖1所示,除了使用仿真器下載Flash程序和數(shù)據(jù)外,還可以通過(guò)SCI、SPI或GPIOB下載,除了JTAG外,其他下載方式都是經(jīng)過(guò)boot loader完成。所有過(guò)程Flash的算法都需要搬移至片內(nèi)RAM中,然后再實(shí)現(xiàn)對(duì)Flash的編程工作。
圖1 F2812 Flash編程
正如2.2節(jié)中所述,只需將Flash的編程算法通過(guò)CAN總線搬移至片內(nèi)RAM中,再將從CAN總線上接收到的數(shù)據(jù)傳送給編程算法,算法執(zhí)行后便可實(shí)現(xiàn)Flash的更新。因此我們需要重新編寫自己的boot loader,并將boot代碼固化在片內(nèi)非易失性空間即可。TI的boot loader是固化在ROM中,我們無(wú)法更改,因此只能固化在Flash中,在啟動(dòng)時(shí)從Flash啟動(dòng)。
3.1啟動(dòng)更新Flash程序方式
將燒寫Flash的啟動(dòng)代碼放入F2812自身Flash空間后,可以通過(guò)兩種方式啟動(dòng)遠(yuǎn)程更新。
3.1.1軟件啟動(dòng)
通過(guò)命令字來(lái)啟動(dòng)Flash燒寫命令。方案優(yōu)點(diǎn):不涉及任何硬件外設(shè)及狀態(tài)修改,燒寫指令可根據(jù)用戶需求協(xié)商而定。方案缺點(diǎn):Flash燒寫代碼需要融入用戶代碼,程序執(zhí)行過(guò)程中一直在進(jìn)行是否需要執(zhí)行Flash燒寫的判斷。
3.1.2硬件啟動(dòng)
系統(tǒng)上電時(shí),通過(guò)外圍硬件接口信號(hào)變化啟動(dòng)該段代碼。方案優(yōu)點(diǎn):雖然Flash燒寫代碼段占據(jù)了一部分Flash空間,但是在用戶代碼程序執(zhí)行過(guò)程中,該段代碼不會(huì)執(zhí)行。方案缺點(diǎn):需要在硬件上有改動(dòng),執(zhí)行Flash燒寫前后需要對(duì)硬件信號(hào)進(jìn)行修改。
3.2Flash程序更新整體結(jié)構(gòu)
在設(shè)備不開蓋的情況下,顯然應(yīng)該選擇軟件啟動(dòng)方案,雖然啟動(dòng)代碼會(huì)占據(jù)一小部分Flash空間。如圖2所示,F(xiàn)2812自身就帶有一路CAN通訊接口,上位機(jī)與下位機(jī)之間僅通過(guò)一個(gè)協(xié)議轉(zhuǎn)換器就能進(jìn)行程序的更新。
圖2 基于CAN總線的F2812程序更新整體結(jié)構(gòu)
4.1硬件實(shí)現(xiàn)
CAN-USB轉(zhuǎn)換器使用的是藍(lán)馬電子A1+型產(chǎn)品,該模塊體積小、價(jià)格便宜、使用方便,僅需2根線(CAN_H, CAN_H)就完成了與F2812的硬件連接。根據(jù)該模塊提供的函數(shù)接口,開發(fā)了上位機(jī)軟件,實(shí)現(xiàn)將CCS編譯生成的.out文件轉(zhuǎn)換成HEX格式通過(guò)CAN總線逐一發(fā)送給F2812。是否進(jìn)行遠(yuǎn)程程序更新只需上位機(jī)軟件發(fā)送指令即可。
4.2軟件實(shí)現(xiàn)
軟件上最核心的是固化到Flash中去的啟動(dòng)代碼,為了使用方便可將啟動(dòng)代碼生成庫(kù)文件,CCS工程中調(diào)用即可。該代碼的主要功能是在DSP上電后與上位機(jī)建立CAN總線通訊并設(shè)置CAN中斷子程序。F2812上電執(zhí)行完啟動(dòng)代碼后自動(dòng)跳轉(zhuǎn)到用戶程序入口,執(zhí)行當(dāng)前的用戶程序。若在執(zhí)行用戶程序過(guò)程中接收到上位機(jī)發(fā)送的更新程序指令,則進(jìn)入預(yù)先設(shè)置好的CAN總線中斷程序從上位機(jī)接收數(shù)據(jù)燒寫入Flash中(需要調(diào)用TI提供的庫(kù)函數(shù)Flash281x_ API[2]),完成程序更新。以上即為整個(gè)boot loader過(guò)程。其流程圖如圖3所示。
圖3 boot loader流程圖
需要注意的是,Boot loader程序的入口地址位于0x3F7FF6處,用戶代碼程序入口位于0x3f5ff6處。用戶代碼程序入口地址可根據(jù)用戶需要隨意調(diào)整,但是Boot loader程序入口地址不能隨意調(diào)整,必須是0x3f7ff6,這與F2812的Flash啟動(dòng)操作流程相關(guān)。
圖4所示為F2812上電后詳細(xì)啟動(dòng)過(guò)程。上電后F2812 Flash的啟動(dòng)遵循從1到6這6個(gè)步驟??梢园l(fā)現(xiàn)當(dāng)使用自己編寫的boot loader時(shí),第4步操作將不再是跳至_c_int00處,而是先跳轉(zhuǎn)至用戶啟動(dòng)代碼處,執(zhí)行用戶boot loader代碼后再跳轉(zhuǎn)_c_int00處。
圖4 F2812基于CAN總線的Flash啟動(dòng)流程
從上述可知,用戶需要使用CAN總線更新程序時(shí),每個(gè)工程中都必須調(diào)用自己編寫的啟動(dòng)代碼(庫(kù)文件),這將占據(jù)一個(gè)sector段,對(duì)用戶代碼產(chǎn)生一定的影響。整個(gè)CAN總線更新Flash的算法庫(kù)將占據(jù)sectorA段,將用戶可使用的Flash大小進(jìn)行壓縮,只有120 k,適用于用戶代碼不超過(guò)120 k的系統(tǒng)。
4.3實(shí)際使用測(cè)試
如圖5所示為基于CAN總線的Flash程序更新過(guò)程,操作簡(jiǎn)單,只需選擇編譯生成的.out文件,點(diǎn)擊更新程序即可。采用了分塊更新方式,具體更新狀態(tài)也可從上位機(jī)上反映出來(lái)。
圖5 基于CAN總線的Flash更新測(cè)試過(guò)程
本文根據(jù)用戶實(shí)際需求,提出了一種基于CAN總線的更新F2812 Flash程序的方法,并闡述了軟件設(shè)計(jì)開發(fā)的流程,實(shí)際測(cè)試成功,對(duì)其他類似系統(tǒng)的程序遠(yuǎn)程加載具有借鑒意義。
參考文獻(xiàn):
[1] 顧衛(wèi)鋼. 手把手教你學(xué)DSP——基于TMS320X281x [M]. 北京:北京航空航天大學(xué)出版社,2008.
[1] TI. TMS320F281x Flash Programming API Revision Change [EB/OL]. www.ti.com.cn, 2005.
A Technology of Flash Programming to TMS320F2812 Based on CAN Interface
JIANG Jiongwei, QIAN Hao, YU Peng
(China Electronics Technology Group Corporation No.58 Research Institute, Wuxi 214035, China)
Abstract:Boot mode and flash programming method of digital signal processor TMS320F2812 which produced by TI were introduced in this paper, as well as start flow of flash. Based on the description, a method of long distance flash programming to TMS320F2812 based on CAN interface was proposed, the execution process was also expounded. The new programming method through CAN communication interface instead of JTAG and RS232 that is very suitable for the army used area and has great value in practice.
Key words:F2812; CAN communication interface; long distance programming; flash programming
中圖分類號(hào):TN402
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1681-1070(2015)05-0021-03
收稿日期:2014-12-18
作者簡(jiǎn)介:
蔣炯偉(1986—),男,碩士,現(xiàn)在中國(guó)電子科技集團(tuán)公司第58研究所工作,研究方向?yàn)镈SP芯片的應(yīng)用與測(cè)試。