翟麗杰
【摘 要】介紹了TMS320C6000系列BOOTLOAD的程序功能、特點(diǎn)及設(shè)計(jì)思路,該思路下編寫(xiě)的BOOTLOAD程序已在SAR數(shù)據(jù)存儲(chǔ)系統(tǒng)上應(yīng)用,運(yùn)行良好。
【關(guān)鍵詞】DSP;TMS320C6000;BOOTLOAD
0 引言
數(shù)字信號(hào)處理器,DSP( Digital Signal Processor),是隨數(shù)字信號(hào)處理理論發(fā)展而專門設(shè)計(jì)的可編程處理器,是現(xiàn)代電子技術(shù)、計(jì)算機(jī)技術(shù)和信號(hào)處理技術(shù)相結(jié)合的產(chǎn)物[1]。由于目前越來(lái)越多的嵌入式設(shè)備研發(fā)中采用了的操作系統(tǒng)支持[3],那么必然要根據(jù)目標(biāo)板設(shè)計(jì)引導(dǎo)程序,實(shí)現(xiàn)整個(gè)系統(tǒng)脫機(jī)工作,即系統(tǒng)一開(kāi)機(jī)運(yùn)行就將程序自動(dòng)加載到DSP的內(nèi)部RAM中,脫機(jī)運(yùn)行,完成系統(tǒng)的功能。
BOOTLOAD又稱為內(nèi)核引導(dǎo)程序[4],是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,它主要負(fù)責(zé)向內(nèi)存裝載操作系統(tǒng)映像,然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動(dòng)操作系統(tǒng)運(yùn)行。具體來(lái)講即初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,最終調(diào)用用戶程序。
1 TMS320C6000 DSP特有的二次啟動(dòng)過(guò)程
TMS320C6000系列DSP在復(fù)位時(shí)其片內(nèi)ROM中固化了BOOTLOAD代碼,這段代碼采用DMA方式從CE1指向的外部存儲(chǔ)空間復(fù)制1K的代碼到地址0處,然后跳轉(zhuǎn)到地址0處執(zhí)行。但是實(shí)際情況1K的代碼對(duì)本文設(shè)計(jì)的系統(tǒng)是遠(yuǎn)遠(yuǎn)不夠,因此需要進(jìn)行二次BOOTLOAD。編寫(xiě)的二次BOOTLOAD代碼應(yīng)該包含在被搬移的1K代碼中,實(shí)現(xiàn)從FLASH存儲(chǔ)器中搬移指定長(zhǎng)度的程序代碼以及初始化的數(shù)據(jù)到DSP片內(nèi)RAM中。
二次BOOTLOAD引導(dǎo)程序主要是將加載地址位于FLASH的數(shù)據(jù)拷貝到RAM中相應(yīng)的運(yùn)行地址。因?yàn)樵谙到y(tǒng)最初啟動(dòng)時(shí),C語(yǔ)言環(huán)境沒(méi)有初始化,因此這段程序需要用匯編語(yǔ)言編寫(xiě)。
編寫(xiě)完后在CCS中compile、build,生成可執(zhí)行文件.out;在匯編優(yōu)化后產(chǎn)生.obj文件。該格式文件包含匯編時(shí)匯編器所生成的各個(gè)段,然后命令文件將指導(dǎo)連接器分配各段到相應(yīng)的存儲(chǔ)器中。此時(shí)要注意,加載地址和運(yùn)行地址的不同。加載地址決定二進(jìn)制代碼的存儲(chǔ)位置和程序引導(dǎo)地址。
2 二次BOOTLOAD固化過(guò)程
與BIOS/OS Load類似,BOOTLOAD通常需要固化在目標(biāo)板中,每次啟動(dòng)目標(biāo)板時(shí)首先運(yùn)行自動(dòng)加載程序,在他完成CPU及相關(guān)硬件的初始化后,才在規(guī)定的地址啟動(dòng)操作系統(tǒng)。BOOTLOAD是嚴(yán)重依賴硬件而實(shí)現(xiàn)的[5],每一種不同體系結(jié)構(gòu)的處理器都有不同的BOOTLOAD,甚至同一種處理器的外圍硬件配置不同,其BOOTLOAD也有差別。
由于FLASH存儲(chǔ)器具有電信號(hào)刪除功能,且刪除速度快,集成度高,成為嵌入式系統(tǒng)自動(dòng)加載模塊的外部存儲(chǔ)程序的首選存儲(chǔ)器[6]。TMS320C6000系列DSP采用了多種引導(dǎo)配置方式,以決定芯片在復(fù)位后采取何種方式執(zhí)行的初始化操作。
本節(jié)設(shè)計(jì)的自動(dòng)加載模塊采用EMIF引導(dǎo),即BOOTMODE[4:0]=10。在這種引導(dǎo)啟動(dòng)模式下,芯片復(fù)位后,CPU處于“停轉(zhuǎn)”的狀態(tài),DMA模塊采用默認(rèn)的ROM讀寫(xiě)時(shí)序從CE1空間起始地址(此時(shí)掛載的是FLASH)上拷貝代碼到地址0處,拷貝結(jié)束,CPU進(jìn)入“運(yùn)行”狀態(tài),從地址0處開(kāi)始執(zhí)行程序。
將程序編譯、驗(yàn)證后,進(jìn)行二次BOOTLOAD代碼的固化。上面所寫(xiě)B(tài)OOTLOAD加載代碼及工程實(shí)際代碼都需要固化在FLASH中。Hex6*.exe是CCS開(kāi)發(fā)環(huán)境自帶的工具[8],將*.out文件轉(zhuǎn)化為hex格式文件,然后進(jìn)行燒寫(xiě)。.hex文件格式只含待燒寫(xiě)的數(shù)據(jù),將數(shù)據(jù)讀入到緩沖區(qū)buff中,然后編寫(xiě)命令進(jìn)行在線編程,完成燒寫(xiě)。
通過(guò)編寫(xiě)自動(dòng)加載代碼,編譯成功后固化在系統(tǒng)FLASH中,就實(shí)現(xiàn)了整個(gè)系統(tǒng)的脫機(jī)加載模塊。
3 自動(dòng)加載模塊BOOTLOAD測(cè)試與分析
整個(gè)測(cè)試分為以下幾步:首先是移植代碼編譯測(cè)試,即軟件仿真;其次是固化燒寫(xiě),測(cè)試程序是否燒寫(xiě)在FLASH預(yù)先設(shè)定的位置;最后測(cè)試系統(tǒng)開(kāi)機(jī)是否可以自動(dòng)加載,脫機(jī)獨(dú)立運(yùn)行。
測(cè)試軟件環(huán)境為:CCS 3.1 集成開(kāi)發(fā)環(huán)境;硬件為:SAR數(shù)據(jù)存儲(chǔ)系統(tǒng)
(1)軟件仿真測(cè)試
打開(kāi)CCS,新建自動(dòng)加載模塊工程—Bootloader.pjt,運(yùn)行該工程進(jìn)行編譯。整個(gè)自動(dòng)加載模塊代碼沒(méi)有錯(cuò)誤也沒(méi)有警告運(yùn)行正常,代碼編譯正確,沒(méi)有語(yǔ)法和邏輯錯(cuò)誤。
(2)燒寫(xiě)固化過(guò)程測(cè)試
將已經(jīng)測(cè)試過(guò)的編譯正確的自動(dòng)加載模塊代碼燒寫(xiě)固化在系統(tǒng)中FLASH中,這里采用了擦除命令。
通過(guò)擦除燒寫(xiě)命令,程序依次燒寫(xiě)至FLASH中預(yù)定的地址,程序燒寫(xiě)正確。隨后在整個(gè)SAR數(shù)據(jù)存儲(chǔ)系統(tǒng)中測(cè)試,系統(tǒng)從上電開(kāi)始,自動(dòng)加載,接收數(shù)據(jù),在DSP內(nèi)將數(shù)據(jù)處理后存入存儲(chǔ)設(shè)備,說(shuō)明自動(dòng)加載模塊BOOTLOAD,運(yùn)行良好。
4 總結(jié)
隨著DSP越來(lái)越廣泛應(yīng)用到各種電子信息產(chǎn)品中,對(duì)產(chǎn)品靈活方便的引導(dǎo)啟動(dòng)方式提出了更高的要求,而通過(guò)FLASH存儲(chǔ)器來(lái)引導(dǎo)DSP系統(tǒng)自動(dòng)加載已成為常用的方法,這是脫機(jī)運(yùn)行DSP系統(tǒng)的較關(guān)鍵技術(shù)。本文詳細(xì)介紹了基于TI TMS320C6000系列DSP的自動(dòng)加載程序BOOTLOAD的設(shè)計(jì)思路及在硬件上應(yīng)用,本方案在不同的工程中做簡(jiǎn)單修改就可以在不同系統(tǒng)中穩(wěn)定的啟動(dòng)裝載。
【參考文獻(xiàn)】
[1]彭啟琮,李玉柏,管慶.DSP技術(shù)的發(fā)展與應(yīng)用[M].北京:高等教育出版社,2002:340-345.
[2]Tetsuya OSHIKATA,Hirofumi MATSUO. Analysis of Dynamic Characteristics For The Partially Resonant Active Filter With The Dsp. IEICE Transactions on Communications.
[3]李永超,馬金嶺.TMS320C6000系列帶中斷向量表的二次的Bootloader的設(shè)計(jì)與實(shí)現(xiàn).電子工程師.第33卷第3期.2007:45-49.
[4]劉向宇.DSP嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講.北京:電子工業(yè)出版社2008:93.
[5]馬學(xué)文,朱名日,程小輝.嵌入式系統(tǒng)中Bootloader的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)工程.第31卷第7期.2005.4.
[6]張謙,李世杰,李紅波.TMS320C6000系列DSP可選擇引導(dǎo)加載方式的設(shè)計(jì)與實(shí)現(xiàn).電子測(cè)量技術(shù).第32卷第7期.2009.7.
[7]王璐.基于DSP的嵌入式實(shí)時(shí)操作系統(tǒng)的研究.廣東工業(yè)大學(xué)學(xué)位論文2005:13-17.
[8]紀(jì)震,鐘錦春,強(qiáng)樂(lè).DSP系統(tǒng)入門與實(shí)踐.北京:電子工業(yè)出版社.2006:1-10.endprint