新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ADSP-TS101S的自動引導(dǎo)方式分析與設(shè)計實現(xiàn)

ADSP-TS101S的自動引導(dǎo)方式分析與設(shè)計實現(xiàn)

作者:■ 北京理工大學(xué)電子工程系 申軍建 張勐 卓智海 時間:2005-04-28 來源:eaw 收藏

摘    要:本文詳細分析了美國ADI公司最新推出的TigerSHARC系列數(shù)字信號處理器,并在最后給出了已成功實現(xiàn)的、基于該DSP處理器的某雷達信號處理機的自動引導(dǎo)設(shè)計方案。
關(guān)鍵詞:;;;

本文引用地址:http://www.butianyuan.cn/article/5416.htm

數(shù)字信號處理器簡介
ADSP-TS101S數(shù)字信號處理器是美國ADI公司推出的TigerSHARC系列中一款具有極高性能的靜態(tài)超標(biāo)量處理器,其專為大信號處理任務(wù)和通信應(yīng)用進行了結(jié)構(gòu)上的優(yōu)化。該處理器具有非常寬的存儲器帶寬和雙運算模塊(支持32bit浮點和8、16、32、64bit定點處理),其芯片內(nèi)部的時鐘頻率最快可以達到300M。靜態(tài)超標(biāo)量結(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的引導(dǎo)方式由復(fù)位時 管腳的電平高低決定。在復(fù)位時,為輸入管腳,如果其電平為低,則設(shè)置為方式。對于這種方式,在信號無效后,信號就成為輸出信號,作為EPROM的片選信號;如果其為高,ADSP-TS101S將處于空閑(IDLE)狀態(tài),等待外部主機或鏈路口來引導(dǎo)??偟膩碚f,ADSP-TS101S有四種引導(dǎo)方式,其詳細描述如下:
:ADSP-TS101S被自動配置為通過外部端口,利用DMA通道0,從片外8位EPROM裝載32bit的程序到片內(nèi)存儲器的0x00~0xFF,并將byte型數(shù)據(jù)自動打包成32bit指令,DMA傳送完成的中斷向量在復(fù)位后被初始化為0x00000000。EPROM存儲器空間沒有被映射到DSP的統(tǒng)一存儲空間,即引導(dǎo)完成后,就與整個系統(tǒng)無關(guān)。其尋址空間被限定為最大16Mbytes。
從外部主設(shè)備(主機或另一個ADSP-TS101S)引導(dǎo):任何共享簇總線上的主設(shè)備都能夠通過外部端口,通過寫它的內(nèi)部存儲器或自動DMA的方式引導(dǎo)ADSP-TS101S。
從鏈路口引導(dǎo):ADSP-TS101S的四個接收鏈路的DMA在復(fù)位后均被自動配置為接收32bit到內(nèi)部存儲器的0x00~0xFF,相應(yīng)的DMA傳送完成的中斷向量在復(fù)位后也被初始化為0x00000000。
無引導(dǎo):ADSP-TS101S在復(fù)位后,自動從存儲空間的某個地方開始執(zhí)行。這是通過在復(fù)位后使能中斷請求信號 來實現(xiàn)DSP啟動的。

自動引導(dǎo)的軟件設(shè)計
從軟件角度看,所謂復(fù)位引導(dǎo)從某種意義上說就是在系統(tǒng)上電后,將生成的可執(zhí)行文件的代碼和數(shù)據(jù)按照對系統(tǒng)存儲空間的分配裝載到指定的地方,并接著依據(jù)規(guī)定的順序來執(zhí)行程序。
自動引導(dǎo)的軟件設(shè)計思路
為了設(shè)計這一軟件,首先必須了解ADSP-TS101S的軟件設(shè)計流程。其流程圖一般如圖1所示。
其中,鏈接描述文件(.LDF)定義了整個系統(tǒng)的存儲器配置和程序中數(shù)據(jù)及代碼的具體存放位置。加載核文件(.DXE)是指加載引導(dǎo)核程序,其大小為32bit,放在加載文件的起始部分,其功能是用來實現(xiàn)ADSP-TS101S的正確引導(dǎo)。在安裝目錄的ldr子目錄下,ADI公司提供了標(biāo)準(zhǔn)加載核文件及相應(yīng)的源程序(.ASM)和鏈接描述文件。一般可直接使用提供的標(biāo)準(zhǔn)加載核文件或?qū)ζ湎鄳?yīng)的源程序進行簡單修改,重新編譯鏈接生成所需的加載核文件。加載文件是由引導(dǎo)加載器(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有三種引導(dǎo)方式(不考慮無引導(dǎo)方式),ADI公司相應(yīng)的提供了三種不同的加載核文件,分別為:TS101_prom.dxe、TS101_link.dxe、TS101_host.dxe。三個程序的核心思想和功能完全一致,只是由于使用的加載端口和方式的不同,在具體代碼實現(xiàn)上稍有差異。
綜合以上的分析可以看出:ADSP-TS101S的復(fù)位引導(dǎo)從本質(zhì)說包括兩個方面:其一,在生成加載文件時,在起始部分額外增加256字的加載核文件;其二,在復(fù)位結(jié)束后,按照設(shè)定的引導(dǎo)方式不同,自動從相應(yīng)接口接收256字的代碼(實際就是加載核文件)到內(nèi)部存儲空間的0x00~0xFF,并在完成這一接收過程后,從內(nèi)部存儲空間的0x00000000開始執(zhí)行程序(實際就是執(zhí)行加載核文件),最終是由加載核文件來完成整個可執(zhí)行程序的加載。需要注意的是,加載核文件并不會永遠占據(jù)內(nèi)部存儲空間的0x00~0xFF,因為加載核文件執(zhí)行到最后會自動完成自身的覆蓋。
下面以EPROM引導(dǎo)為例,來簡要分析標(biāo)準(zhǔn)加載核程序(TS101_ prom.dxe)是如何具體實現(xiàn)可執(zhí)行程序的加載的。
標(biāo)準(zhǔn)EPROM引導(dǎo)加載核程序分析
如前所述,復(fù)位后ADSP-TS101S自動從DMA通道0接收256字的內(nèi)容到內(nèi)部存儲空間,該傳送完成后,相應(yīng)的中斷將把ADSP-TS101S從空閑狀態(tài)喚醒,接著ADSP-TS101S從0x00000000開始執(zhí)行程序(即執(zhí)行加載核程序)。在加載核程序中,DMA通道0被配置為從EPROM的地址0x0400 (0x0000~0x03FF為加載核程序,對應(yīng)于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)最終引導(dǎo)完成后,ADSP-TS101S的存儲空間內(nèi)容與用鏈接描述文件對可執(zhí)行文件內(nèi)容的分配完全一樣,ADSP-TS101S從內(nèi)部存儲空間0x00000000開始執(zhí)行程序。

某雷達信號處理機的復(fù)位引導(dǎo)設(shè)計方案
雖然ADI公司的ADSP-TS101S是性能較高的浮點信號處理器,其做1024點32bit浮點FFT(基2)僅需39.34ms(250M主頻),但在設(shè)計某雷達信號處理機時,由于運算量巨大,經(jīng)過分析,設(shè)計了一個以3片ADSP-TS101S為核心的信號處理機。三片ADSP-TS101S的連接關(guān)系如圖2所示。
三片ADSP-TS101S要運行的程序最終放在一個Flash存儲器中,其中TS1和TS2的加載程序以數(shù)組形式放在TS3的程序中。TS3設(shè)計為EPROM引導(dǎo)方式,TS1和TS2設(shè)計為鏈路口引導(dǎo)方式。系統(tǒng)上電后,TS3從Flash加載程序,TS3加載完成后,再通過鏈路口加載TS1和TS2。加載完成后,三片ADSP-TS101S都正常執(zhí)行各自的程序。
結(jié)合以上各部分的分析,可以看出要實現(xiàn)該信號處理機中三片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)開頭加入對TS1和TS2的引導(dǎo)代碼,其核心就是分別通過TS3的鏈路口0和鏈路口1將數(shù)組ts1和ts2以DMA方式傳送給TS1和TS2。
(4)參考ADSP-TS101S開發(fā)板的Flash燒寫程序,設(shè)計燒寫系統(tǒng)所用Flash的程序,然后通過JTAG口將TS3.ldr燒寫到系統(tǒng)的Flash存儲器中,從而完成了整個過程。

結(jié)語
如果在系統(tǒng)中沒有使用SDRAM,則只需對ADI提供的標(biāo)準(zhǔn)加載核源程序進行少量修改,重新編譯鏈接即可使用;如果系統(tǒng)中有SDRAM,則還需在標(biāo)準(zhǔn)加載核源程序的起始處加入對SDRAM的初始化程序。但總的看來,如果清楚了ADSP-TS101S的復(fù)位引導(dǎo)過程,用戶就可以在集成開發(fā)環(huán)境中輕松完成整個ADSP-TS101S的復(fù)位引導(dǎo)?!?br/>參考文獻
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ù)字信號處理器與高速實時信號處理. 西安,西安電子科技大學(xué)出版社
4 ADSP-TS101 TigerSHARC Processor Boot Loader Kernel Operation. EE-174.Analog Devices, Inc

c++相關(guān)文章:c++教程


存儲器相關(guān)文章:存儲器原理




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉