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