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