ADSP-TS101S的自動(dòng)引導(dǎo)方式分析與設(shè)計(jì)實(shí)現(xiàn)
摘 要:本文詳細(xì)分析了美國(guó)ADI公司最新推出的TigerSHARC系列數(shù)字信號(hào)處理器ADSP-TS101S的引導(dǎo)方式,并在最后給出了已成功實(shí)現(xiàn)的、基于該DSP處理器的某雷達(dá)信號(hào)處理機(jī)的自動(dòng)引導(dǎo)設(shè)計(jì)方案。
關(guān)鍵詞:ADSP-TS101S;引導(dǎo)方式;VisualDSP++;EPROM引導(dǎo)
ADSP-TS101S數(shù)字信號(hào)處理器簡(jiǎn)介
ADSP-TS101S數(shù)字信號(hào)處理器是美國(guó)ADI公司推出的TigerSHARC系列中一款具有極高性能的靜態(tài)超標(biāo)量處理器,其專為大信號(hào)處理任務(wù)和通信應(yīng)用進(jìn)行了結(jié)構(gòu)上的優(yōu)化。該處理器具有非常寬的存儲(chǔ)器帶寬和雙運(yùn)算模塊(支持32bit浮點(diǎn)和8、16、32、64bit定點(diǎn)處理),其芯片內(nèi)部的時(shí)鐘頻率最快可以達(dá)到300M。靜態(tài)超標(biāo)量結(jié)構(gòu)使ADSP-TS101S每周期能夠執(zhí)行多達(dá)4條指令、24個(gè)16bit定點(diǎn)運(yùn)算或6個(gè)浮點(diǎn)運(yùn)算。芯片內(nèi)部有三條相互獨(dú)立的128bit寬的數(shù)據(jù)總線,每條連接三個(gè)2M bit內(nèi)部存儲(chǔ)器bank中的一個(gè),總共提供了12Gbytes/s的內(nèi)部存儲(chǔ)器帶寬。
自動(dòng)引導(dǎo)方式分析
ADSP-TS101S的引導(dǎo)方式由復(fù)位時(shí) 管腳的電平高低決定。在復(fù)位時(shí),為輸入管腳,如果其電平為低,則設(shè)置為EPROM引導(dǎo)方式。對(duì)于這種方式,在信號(hào)無(wú)效后,信號(hào)就成為輸出信號(hào),作為EPROM的片選信號(hào);如果其為高,ADSP-TS101S將處于空閑(IDLE)狀態(tài),等待外部主機(jī)或鏈路口來(lái)引導(dǎo)??偟膩?lái)說(shuō),ADSP-TS101S有四種引導(dǎo)方式,其詳細(xì)描述如下:
從EPROM引導(dǎo):ADSP-TS101S被自動(dòng)配置為通過(guò)外部端口,利用DMA通道0,從片外8位EPROM裝載32bit的程序到片內(nèi)存儲(chǔ)器的0x00~0xFF,并將byte型數(shù)據(jù)自動(dòng)打包成32bit指令,DMA傳送完成的中斷向量在復(fù)位后被初始化為0x00000000。EPROM存儲(chǔ)器空間沒(méi)有被映射到DSP的統(tǒng)一存儲(chǔ)空間,即引導(dǎo)完成后,就與整個(gè)系統(tǒng)無(wú)關(guān)。其尋址空間被限定為最大16Mbytes。
從外部主設(shè)備(主機(jī)或另一個(gè)ADSP-TS101S)引導(dǎo):任何共享簇總線上的主設(shè)備都能夠通過(guò)外部端口,通過(guò)寫(xiě)它的內(nèi)部存儲(chǔ)器或自動(dòng)DMA的方式引導(dǎo)ADSP-TS101S。
從鏈路口引導(dǎo):ADSP-TS101S的四個(gè)接收鏈路的DMA在復(fù)位后均被自動(dòng)配置為接收32bit到內(nèi)部存儲(chǔ)器的0x00~0xFF,相應(yīng)的DMA傳送完成的中斷向量在復(fù)位后也被初始化為0x00000000。
無(wú)引導(dǎo):ADSP-TS101S在復(fù)位后,自動(dòng)從存儲(chǔ)空間的某個(gè)地方開(kāi)始執(zhí)行。這是通過(guò)在復(fù)位后使能中斷請(qǐng)求信號(hào) 來(lái)實(shí)現(xiàn)DSP啟動(dòng)的。
自動(dòng)引導(dǎo)的軟件設(shè)計(jì)
從軟件角度看,所謂復(fù)位引導(dǎo)從某種意義上說(shuō)就是在系統(tǒng)上電后,將生成的可執(zhí)行文件的代碼和數(shù)據(jù)按照對(duì)系統(tǒng)存儲(chǔ)空間的分配裝載到指定的地方,并接著依據(jù)規(guī)定的順序來(lái)執(zhí)行程序。
自動(dòng)引導(dǎo)的軟件設(shè)計(jì)思路
為了設(shè)計(jì)這一軟件,首先必須了解ADSP-TS101S的軟件設(shè)計(jì)流程。其流程圖一般如圖1所示。
其中,鏈接描述文件(.LDF)定義了整個(gè)系統(tǒng)的存儲(chǔ)器配置和程序中數(shù)據(jù)及代碼的具體存放位置。加載核文件(.DXE)是指加載引導(dǎo)核程序,其大小為32bit,放在加載文件的起始部分,其功能是用來(lái)實(shí)現(xiàn)ADSP-TS101S的正確引導(dǎo)。在VisualDSP++安裝目錄的ldr子目錄下,ADI公司提供了標(biāo)準(zhǔn)加載核文件及相應(yīng)的源程序(.ASM)和鏈接描述文件。一般可直接使用提供的標(biāo)準(zhǔn)加載核文件或?qū)ζ湎鄳?yīng)的源程序進(jìn)行簡(jiǎn)單修改,重新編譯鏈接生成所需的加載核文件。加載文件是由引導(dǎo)加載器(elfloader)將可執(zhí)行文件進(jìn)行一定的格式變化,并在起始位置附加上加載核文件生成的。加載文件可以進(jìn)一步通過(guò)仿真器和JTAG口在線燒寫(xiě)到Flash存儲(chǔ)器中。加載文件被分成幾段,依據(jù)類型不同可以分為:0-最終初始化段(Final Init);1-非零初始化段(None-zero Init);2-零初始化段(zero-Init)。另外ID號(hào)決定該段內(nèi)容是哪一個(gè)處理器的,COUNT為該段內(nèi)容以32bit字來(lái)計(jì)數(shù)的大小。
由于ADSP-TS101S有三種引導(dǎo)方式(不考慮無(wú)引導(dǎo)方式),ADI公司相應(yīng)的提供了三種不同的加載核文件,分別為:TS101_prom.dxe、TS101_link.dxe、TS101_host.dxe。三個(gè)程序的核心思想和功能完全一致,只是由于使用的加載端口和方式的不同,在具體代碼實(shí)現(xiàn)上稍有差異。
綜合以上的分析可以看出:ADSP-TS101S的復(fù)位引導(dǎo)從本質(zhì)說(shuō)包括兩個(gè)方面:其一,在生成加載文件時(shí),在起始部分額外增加256字的加載核文件;其二,在復(fù)位結(jié)束后,按照設(shè)定的引導(dǎo)方式不同,自動(dòng)從相應(yīng)接口接收256字的代碼(實(shí)際就是加載核文件)到內(nèi)部存儲(chǔ)空間的0x00~0xFF,并在完成這一接收過(guò)程后,從內(nèi)部存儲(chǔ)空間的0x00000000開(kāi)始執(zhí)行程序(實(shí)際就是執(zhí)行加載核文件),最終是由加載核文件來(lái)完成整個(gè)可執(zhí)行程序的加載。需要注意的是,加載核文件并不會(huì)永遠(yuǎn)占據(jù)內(nèi)部存儲(chǔ)空間的0x00~0xFF,因?yàn)榧虞d核文件執(zhí)行到最后會(huì)自動(dòng)完成自身的覆蓋。
下面以EPROM引導(dǎo)為例,來(lái)簡(jiǎn)要分析標(biāo)準(zhǔn)加載核程序(TS101_ prom.dxe)是如何具體實(shí)現(xiàn)可執(zhí)行程序的加載的。
標(biāo)準(zhǔn)EPROM引導(dǎo)加載核程序分析
如前所述,復(fù)位后ADSP-TS101S自動(dòng)從DMA通道0接收256字的內(nèi)容到內(nèi)部存儲(chǔ)空間,該傳送完成后,相應(yīng)的中斷將把ADSP-TS101S從空閑狀態(tài)喚醒,接著ADSP-TS101S從0x00000000開(kāi)始執(zhí)行程序(即執(zhí)行加載核程序)。在加載核程序中,DMA通道0被配置為從EPROM的地址0x0400 (0x0000~0x03FF為加載核程序,對(duì)應(yīng)于ADSP-TS101S內(nèi)部存儲(chǔ)空間的256個(gè)字,向ADSP-TS101S的內(nèi)部存儲(chǔ)空間加載程序。具體包括以下幾個(gè)步驟:
(1)從ADSP-TS101S的SYSTAT中獲得處理器的ID,并放到XR10寄存器中。
(2)首先,利用DMA通道0從EPROM的0x0400傳送8B的數(shù)據(jù)到ADSP-TS101S的內(nèi)部存儲(chǔ)空間0x00000000~0x00000001,即Data header for processor 0,從中分析出該段程序的處理器ID,并與XR10進(jìn)行比較。若一致則轉(zhuǎn)入(3),否則,跳過(guò)該段程序。
(3)分析該段程序的類型和大小。依據(jù)不同的類別分別將規(guī)定大小的代碼或數(shù)據(jù)加載到指定的地址。其中,“Final Init”段將把加載核程序占據(jù)的內(nèi)存空間覆蓋掉。
(4)最終引導(dǎo)完成后,ADSP-TS101S的存儲(chǔ)空間內(nèi)容與用鏈接描述文件對(duì)可執(zhí)行文件內(nèi)容的分配完全一樣,ADSP-TS101S從內(nèi)部存儲(chǔ)空間0x00000000開(kāi)始執(zhí)行程序。
某雷達(dá)信號(hào)處理機(jī)的復(fù)位引導(dǎo)設(shè)計(jì)方案
雖然ADI公司的ADSP-TS101S是性能較高的浮點(diǎn)信號(hào)處理器,其做1024點(diǎn)32bit浮點(diǎn)FFT(基2)僅需39.34ms(250M主頻),但在設(shè)計(jì)某雷達(dá)信號(hào)處理機(jī)時(shí),由于運(yùn)算量巨大,經(jīng)過(guò)分析,設(shè)計(jì)了一個(gè)以3片ADSP-TS101S為核心的信號(hào)處理機(jī)。三片ADSP-TS101S的連接關(guān)系如圖2所示。
三片ADSP-TS101S要運(yùn)行的程序最終放在一個(gè)Flash存儲(chǔ)器中,其中TS1和TS2的加載程序以數(shù)組形式放在TS3的程序中。TS3設(shè)計(jì)為EPROM引導(dǎo)方式,TS1和TS2設(shè)計(jì)為鏈路口引導(dǎo)方式。系統(tǒng)上電后,TS3從Flash加載程序,TS3加載完成后,再通過(guò)鏈路口加載TS1和TS2。加載完成后,三片ADSP-TS101S都正常執(zhí)行各自的程序。
結(jié)合以上各部分的分析,可以看出要實(shí)現(xiàn)該信號(hào)處理機(jī)中三片ADSP-TS101S的正確引導(dǎo),所需的工作由以下幾步組成:
(1)由第一片ADSP-TS101S要執(zhí)行的程序(TS1.dxe),結(jié)合鏈路口的加載核程序生成第一片ADSP-TS101S的加載文件(TS3_1.ldr)。需要注意的是:該鏈路口加載核程序不能直接使用提供的標(biāo)準(zhǔn)鏈路口加載程序,必須將提供的鏈路口加載核源程序(TS101_link.asm)中的LINK常數(shù)改為2(#define LINK 2),即第一片ADSP-TS101S由鏈路口2引導(dǎo)。
(2)與(1)類似,生成第二片ADSP-TS101S的加載文件(TS3_2.ldr),只是需要把鏈路口加載核源程序(TS101_ link.asm)中的LINK常數(shù)改為0(#define LINK 0),即第二片ADSP-TS101S由鏈路口0引導(dǎo)。
(3)將TS3_1.ldr和TS3_2.ldr以數(shù)組的形式放在TS3的源程序(TS3.asm)中,其形式如下所示:(.var ts1[ ]={"ts1.ldr"}; .var ts2[ ]={"ts2.ldr"};),編譯鏈接生成TS3的可執(zhí)行程序(TS3.dxe),然后結(jié)合EPROM加載核程序生成第三片ADSP-TS101S的加載文件(TS3.ldr)。在此,可以使用ADI公司提供的標(biāo)準(zhǔn)EPROM加載核程序。另外,還需在TS3的源程序中(TS3.asm)開(kāi)頭加入對(duì)TS1和TS2的引導(dǎo)代碼,其核心就是分別通過(guò)TS3的鏈路口0和鏈路口1將數(shù)組ts1和ts2以DMA方式傳送給TS1和TS2。
(4)參考ADSP-TS101S開(kāi)發(fā)板的Flash燒寫(xiě)程序,設(shè)計(jì)燒寫(xiě)系統(tǒng)所用Flash的程序,然后通過(guò)JTAG口將TS3.ldr燒寫(xiě)到系統(tǒng)的Flash存儲(chǔ)器中,從而完成了整個(gè)過(guò)程。
結(jié)語(yǔ)
如果在系統(tǒng)中沒(méi)有使用SDRAM,則只需對(duì)ADI提供的標(biāo)準(zhǔn)加載核源程序進(jìn)行少量修改,重新編譯鏈接即可使用;如果系統(tǒng)中有SDRAM,則還需在標(biāo)準(zhǔn)加載核源程序的起始處加入對(duì)SDRAM的初始化程序。但總的看來(lái),如果清楚了ADSP-TS101S的復(fù)位引導(dǎo)過(guò)程,用戶就可以在VisualDSP++集成開(kāi)發(fā)環(huán)境中輕松完成整個(gè)ADSP-TS101S的復(fù)位引導(dǎo)。■
參考文獻(xiàn)
1 ADSP-TS101 TigerSHARC Processor Hardware Reference.Analog Devices, Inc
2 VisualDSP++ C/C++ Compiler and Library Manuals for TigerSHARC DSPs.Analog Devices, Inc
3 蘇濤,吳順君,寥曉裙. 高性能數(shù)字信號(hào)處理器與高速實(shí)時(shí)信號(hào)處理. 西安,西安電子科技大學(xué)出版社
4 ADSP-TS101 TigerSHARC Processor Boot Loader Kernel Operation. EE-174.Analog Devices, Inc
c++相關(guān)文章:c++教程
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論