郇鉦+汪慶武+趙錦君+王宇
摘要:該文針對TMS320C6000系列支持的啟動方式之一——EMIF boot啟動,固化程序在片外Flash。解決了TMS320C6713B片內(nèi)無非易失存儲器,上電需從外部加載程序并啟動的問題。介紹了基于CCS5.5平臺,Bootload啟動函數(shù)和Flash燒寫程序的設(shè)計編制。整理總結(jié)了三種燒寫Flash的方式方法,并進(jìn)行了優(yōu)缺點的對比。
關(guān)鍵詞:DSP;TMS320C6713;CCS5.5;EMIF;Flash;軟件固化;引導(dǎo)加載
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)14-0094-03
TMS320C6713B(以下簡稱C6713)是11公司推出的高性能浮點運算DSP,采用超常指令字(VLIW)結(jié)構(gòu)。TMS320C67 13B支持Host boot/Emulation boot/EMIF boot。EMIF作為C6713與外部存儲器之間的接口,可支持與各種外部器件無縫連接。EMIF存儲器映射由4個(CEO-CE3)空間組成,這4個空間彼此獨立,實現(xiàn)不同訪問控制。C67 13包含從0×00000000地址開始的256KB內(nèi)部RAM,但其內(nèi)部無非易失性存儲器,需要外擴Flash或ROM等非易失性存儲器。
CCS(Code Composer Studio)的是TI公司提供的開放的集成軟件開發(fā)平臺,根據(jù)安裝不同的硬件接口驅(qū)動可開發(fā)不同的器件。CCS5.5集成開發(fā)環(huán)境基于Eclipse開發(fā)平臺,在開發(fā)過程中能夠完成對工程的配置、建立、調(diào)試、跟蹤和分析,能夠加速開發(fā)進(jìn)程,提高工作效率,支持JTAG加密功能、提供全覆蓋的DSP代碼跟蹤、加強了統(tǒng)計分析及在小窗口繪制圖形的性能。目前,TI已對CCS4、CCS5和CCS6免費開放,供用戶開發(fā)使用。
1 TMS320C6713B與Flash的硬件連接
以AMD公司的AM29LV160DB為例,該Flash具有2Mx8bifflMxl6bit的存儲空間,16位數(shù)據(jù)總線,支持程序?qū)?、擦除和懸掛。為最快的啟動程序,?shù)據(jù)吞吐量設(shè)置為最大,將AM29LV160DB的BYTE=1,設(shè)置為16位數(shù)據(jù)寬度。
遵照TI對C6713的內(nèi)置啟動設(shè)定,需將支持EMIF接口的Flash掛載CE1空間。HD[4:3]=“10”設(shè)定DSP處于16bit異步外部ROM boot方式。
其硬件連接原理示意如圖1所示。
在當(dāng)前配置下,C6713上電或復(fù)位時,位于外部存儲空間CE1的FLASH中的1KB代碼通過EDMA被拷貝到片內(nèi)RAM地址0處,這就是片上Boot一次引導(dǎo)。然而,大多數(shù)的DSP程序并不僅限于1KB代碼,因此需要開發(fā)用戶引導(dǎo)程序?qū)]有拷貝的代碼拷貝到DSP的片內(nèi)RAM。此用戶引導(dǎo)程序即稱為二級Bootloader。
該二級Bootloader程序?qū)嶋H在運行時,是在C6713的0×0000~0×4000地址空間,從0地址開始執(zhí)行。從通用化角度,每次修改后,重新燒寫的用戶程序,只是程序長度發(fā)生變化,因此,只要將搬運長度獨立出來,那么Bootloader程序就無需其他更改。為此,將C6713的片內(nèi)地址空間劃分開來,如表1所示。
3 TMS320C6713B用戶程序的燒寫到外部Flash
目前,常用的燒寫C6713方法有三種,分別是:TI公司提供的FlashBurn軟件燒錄法、二次下載燒錄法、程序bin鏡像燒錄法。
3.1 FlashBurn軟件燒錄法
通過TI公司提供的FlashBurn軟件來對Flash存儲器進(jìn)行燒寫。將FlashBurn與CCS、HEX文件轉(zhuǎn)換工具以及FBTC程序(即通過一定的編程命令序列來控制FLASH的工作方式)配合使用,可以快速地將用戶數(shù)據(jù)與程序?qū)懭隖lash存儲器。Flash-Burn采用圖形化界面,使用方便,用戶只需要簡單配置幾個操作參數(shù),即可實現(xiàn)對FLASH存儲器進(jìn)行擦除、燒寫和查看內(nèi)存內(nèi)存儲器進(jìn)行操作。
需要注意的是,F(xiàn)lashBurn軟件需要與CCS版本匹配才能正常使用,F(xiàn)lashBurn 4才支持CCS4~CCS6。雖然FlashBurn有免費版本,但是僅能對DSK開發(fā)板進(jìn)行燒錄。要對自己的定制電路板燒寫,需購買其收費版本。
3.2兩次下載燒錄法
基于CCS開發(fā)環(huán)境,編譯鏈接生成的用戶程序為*out文件,該文件為COFF格式,不能在DSP的RAM中直接運行。
兩次下載法的實質(zhì)為在設(shè)計調(diào)試過程中用仿真器下載進(jìn)DSP的RAM區(qū)的程序,已經(jīng)是程序的可執(zhí)行機器碼(該程序需包含boot函數(shù))。因此,可以通過再編寫一個Flash燒寫程序,并下載進(jìn)DSP運行,將RAM中的用戶程序機器碼寫入Flash對應(yīng)的空間,特別是Boot函數(shù)燒寫到Flash的前1KB空間,即可完成燒錄過程。
簡言之,所謂“兩次下載法”就是通過仿真器對DSP進(jìn)行兩次加載運行來完成用戶程序的燒寫。其實質(zhì)是將用戶程序當(dāng)作“數(shù)據(jù)”寫人Flash。
該方法的核心搬移函數(shù)如下:
需要注意的是宏“CODE_LEN”,對應(yīng)BootLoad的空間定義,該處定義了用戶程序所占用的字節(jié)長度。該長度可由用戶程序map文件查詢計算得到。
采用該方法的優(yōu)點是,在用戶程序調(diào)試正常后,接著加載Flash燒錄程序即可將程序固化。其中最復(fù)雜的操作也僅僅是查詢下用戶程序map文件計算下程序的大小,修改下宏“CODE_LEN”而已。
但是,采用該方法需要注意的是用戶程序與Flash燒寫程序在內(nèi)存空間分配時不能重疊,即防止Flash燒寫程序在下載時,修改或覆蓋已經(jīng)在DSP的RAM中的程序。而且當(dāng)用戶程序與Flash燒寫程序的總大小大于RAM空間時,該方法就無法使用了。
3.3程序bin鏡像燒錄法
3.3.1基于CCS5.5置快速生成bin文件
上節(jié)已經(jīng)提到CCS編譯出的文件為*.out文件無法直接使用,但是TI公司在CCS安裝包中同時也提供了Hex6x.exe等轉(zhuǎn)換工具,可將*.out可配置的轉(zhuǎn)換為*.hex和*.bin文件,其中*.bin文件內(nèi)容即是DSP執(zhí)行的機器碼。
在CCS5.5中,提供了在程序編譯結(jié)束后繼續(xù)執(zhí)行其他操作的接口,如圖2所示。
采用該方法可完全不必考慮用戶程序和Flash燒錄程序的空間重疊問題,也完全不必考慮RAM空間大小,只要Flash足夠大可以裝載用戶程序即可,也完全不用查詢計算用戶程序的字節(jié)長度,燒錄程序可自行計算并燒寫到對應(yīng)位置,因此,采用此種燒錄方法唯一要注意的就是用戶程序*.bin的文件名和所在的PC系統(tǒng)路徑。
4結(jié)束語
本文針對TMS320C6713B的EMIF boot方式進(jìn)行啟動,固化程序在片外Flash?;贑CS5.5平臺,設(shè)計編制Boofload啟動函數(shù)和Flash燒寫程序。整理總結(jié)了三種燒寫Flash的方法,并進(jìn)行了優(yōu)缺點的對比。