TS201S型DSP引導(dǎo)程序加載方法研究
關(guān)鍵詞:DSP;TigerSHARC;引導(dǎo)程序;加載;接口;TS201S
隨著DSP技術(shù)的發(fā)展,DSP的功能越來越強,類型也越來越多。由于DSP內(nèi)部結(jié)構(gòu)的特點,DSP的算法程序一般都存儲在外部的非易失性存儲器中,在系統(tǒng)上電后,要將算法程序從外部存儲器加載到DSP中,再進行相應(yīng)的數(shù)據(jù)算法處理。
TS20lS是ADI公司TigerSHARC系列中集成了定點和浮點計算功能的高速DSP。處理器工作在600MHz,單周期能執(zhí)行4條指令,每秒能進行3.4億次乘累加和2.8億次浮點操作,是面向通信和視頻領(lǐng)域的高端DSP。TS201S包括24Mbit的片內(nèi)DRAM;1個14通道的DMA控制器:4個鏈路口可用于和其他DSP進行無縫聯(lián)接。以組成一個多DSP處理器系統(tǒng),每個鏈路口的數(shù)據(jù)率可達1GB/s;集成SDRAM控制器最大支持256M x 32bit的內(nèi)存容量,方便和外部SDRAM連接。TS20lS非常適合對大數(shù)據(jù)量數(shù)據(jù)處理實時性要求高的應(yīng)用領(lǐng)域。
TigerSHARC系列的DSP接口豐富,其引導(dǎo)程序的加載方法也非常靈活,可根據(jù)實際系統(tǒng)設(shè)計的需要靈活選用。
1 TigerSHARC系列DSP的引導(dǎo)模式
DSP的引導(dǎo)就是在DSP系統(tǒng)復(fù)位的情況下從DSP外部存儲器裝載算法程序代碼的過程。TS201S支持二種引導(dǎo)模式:主引導(dǎo)(master boot)模式和從引導(dǎo)(slave boot)模式。
在主引導(dǎo)模式下,TS201S作為主動方,用外部口輸出地址、讀、引導(dǎo)方式選擇(BMS)等控制信號,從EPROM或Flash中加載代碼。在從引導(dǎo)模式下,TS201S作為被動方,不向外部輸出控制信號,外部主機或其他設(shè)備向TS201S的主機、鏈路口傳送要加載的代碼,TS201S僅啟動若干DMA通道,并執(zhí)行第一個DMA所接收的加載核。
另外,TS201S還可以選擇一種“非引導(dǎo)”模式,或利用TS20lS的(仿真器)EZ—ICE加載程序,這種方式可直接將程序加載進TS201S內(nèi)部的RAM或外部的RAM中,DSP直接從RAM中運行程序,常用于DSP的調(diào)試過程。
通過對TS20lS的BMS引腳的設(shè)置,可將DSP的引導(dǎo)過程設(shè)置成主引導(dǎo)模式或從引導(dǎo)模式。在DSP復(fù)位期間,如果BMS低電平,則選擇主引導(dǎo)模式,DSP從外部EPROM或Flash中加載程序;若BMS引腳為高電平,則進入從引導(dǎo)模式,DSP為空閑狀態(tài),等待主機或鏈路口加載程序。2種引導(dǎo)模式都有相同的加載過程。具體步驟如下:
(1)TS201S自動啟動一個DMA.自動把256個字(32位)傳送到內(nèi)部存儲器的地址0x00-0xFF。
(2)TS201S執(zhí)行上述256個字的指令(加載核),加載核啟動其他DMA,把后續(xù)指令和數(shù)據(jù)加載到內(nèi)部和/或外部存儲器中。
(3)加載核自我覆蓋,執(zhí)行DSP算法程序。
2 單TS201S的程序加載接口設(shè)計
TigerSHARC系列中的TS20lS作為單個DSP使用時,主要有3種引導(dǎo)方式。
2.1外部EPROM引導(dǎo)
外部EPROM引導(dǎo)為主引導(dǎo)模式,是最常用的引導(dǎo)模式。在該模式下,BMS引腳和RD引腳作為EPROM的片選和輸出使能引腳。EPROM的8位數(shù)據(jù)線接TS201S的DATA0-DATA7。TS20lS最大支持16M的EPROM地址空間,其低位地址引腳與EPROM的地址引腳相連。對于多處理器共享總線的系統(tǒng),可用一個EPROM對所有TS201S加載。圖1所示為ST公司的Flash(DSM2150)與TS201S程序加載接口設(shè)計實例。
復(fù)位后,DMA通道0被自動配置好,DMA相應(yīng)的2個TCB寄存器(Transfer Control Block)被初始化,然后從8位的外部EPROM地址0開始,把一個256字的加載核傳送到內(nèi)部存儲器地址0x00-0xFFo。DMA通道0的中斷矢量初始化為內(nèi)部存儲器地址0x00。當(dāng)DMA通道0傳送完成時,產(chǎn)生中斷,TS20lS開始從0x00執(zhí)行加載核。然后,加載核通過一串單字DMA傳送將后續(xù)應(yīng)用代碼和數(shù)據(jù)加載。最后,加載核啟動一個256字的DMA,使其自身被用戶應(yīng)用程序代碼覆蓋。當(dāng)該DMA過程完成時,DMA通道0的中斷矢量人口地址為內(nèi)部存儲器地址0,用戶的應(yīng)用代碼從地址0開始執(zhí)行。TS20lS的外部接口是32位數(shù)據(jù)寬度,所以TS201S在通過DMA通道加載程序時,自動使用8到32位的專用打包方式,低位在前,完成從EPR()M的DMA讀。只有DMA通道0支持該專用打包方式,所以引導(dǎo)程序必須用DMA0。
另外,在算法應(yīng)用程序運行階段,內(nèi)核不能用指令使能BMS的方式直接對EPROM進行訪問,但可通過DMA通道方式訪問。這是因為EPROM是字節(jié)尋址空間,它不屬于TS201S的存儲器空間。外部EPROM所占的最大存儲空間為16M字節(jié),由于E-PROM是慢速外設(shè),對EPROM的每一個讀訪問,TS201S都要等待16個周期。TS201S對外部E-PROM的讀時序如圖2所示。
2.2主機引導(dǎo)
采用主機(HOST)引導(dǎo)模式時,32位或64位主機通過外部的數(shù)據(jù)和地址總線完成對TS201S的引導(dǎo)。在主機引導(dǎo)方式下TS201S可用任何一個Auto DMA通道進行代碼傳送。其余過程與外部E-PROM引導(dǎo)相同。主機通過DSM狀態(tài)寄存器(DSSTAT)監(jiān)視Auto DMA的狀態(tài)。在一默認的情況下TS201S的外部總線寬度被設(shè)置成32位,所以主機必須使用流水線協(xié)議與TS201S進行通信。
2.3鏈路口引導(dǎo)
TS201S有4個鏈路口(Link Port),每個鏈路口都可用于引導(dǎo)程序的加載。其加載過程和主機引導(dǎo)模式相似。
3 多TS201S的程序加載接口設(shè)計
在實際的系統(tǒng)設(shè)計中,在處理高數(shù)據(jù)流和大數(shù)據(jù)量的條件下經(jīng)常用到多個DSP級聯(lián)。對多個DSP進行程序加載,用EPROM、HOST、LINK PORI、加載模式都可實現(xiàn)。
在EPROM引導(dǎo)模式下,將各DSP的麗BMS引腳接到一起,連接到EPROM的片選信號上,外部地址、數(shù)據(jù)也都分別連到EPROM的數(shù)據(jù)、地址總線上,各DSP按總線優(yōu)先權(quán)依次訪問EPROM。EPROM引導(dǎo)多DSP的另一種方法是在主DSP(ID2-0=000)加載完成后,通過多DSF的存儲器空間向其他DSP的AutoDMA通道0寫入加載碼,完成其他DSP的程序加載。這種方法只有主DSP的RD引腳和EPROM片選相連,其他。DSP的RD信號通過外部上拉電阻器上拉。
在HOST加載模式下,主機按照流水協(xié)議,用HBR和HBG信號引導(dǎo)其他DSP。
在多DSP系統(tǒng)中LINK PORT加載方式是最為靈活的一種程序加載方式,可將前面二種加載模式結(jié)合使用,當(dāng)?shù)谝粋€DSP用EPROM?;騂OST加載成功后,可按菊花鏈形式由第一個依次加載其他的DSP。
4 引導(dǎo)程序設(shè)計
下面以EPROM引導(dǎo)模式為例說明TS20lS引導(dǎo)程序的設(shè)計方法。ADI公司的visual DSP++工具提供的程序加載應(yīng)用程序(elfloader.exe)可將DSP算法程序和加載核程序合并生成:EPROM的加載輸出文件(*.ldr)。該加載輸出文件用來定義加載過程中TS201S的內(nèi)部和外部存儲器如何被初始化,其格式如圖3所示。其中數(shù)據(jù)標(biāo)識塊中標(biāo)簽字的格式定義如圖4所示。
DSF程序加載過程中的比較復(fù)雜的過程是加載核的自我覆蓋。當(dāng)數(shù)據(jù)標(biāo)識塊中標(biāo)簽字的高3位的數(shù)據(jù)為O時(見圖4,TYPE=0),加載核執(zhí)行“結(jié)束加載”的過程,用DSt算法代碼覆蓋加載核的256個字的程序。這是加載過程的最后一個DMA,將DSP從IDLE狀態(tài)喚醒,完成加載核的自我覆蓋,但是,簡單的自我覆蓋會使DSP算法程序從DMA0中斷級開始執(zhí)行,這是所不希望的。為了解決這一問題,通過以下算法來實現(xiàn)。
(1)DSP算法代碼的第一個4字被存儲在xRll:8中。
(2)將以下代碼寫入Ox00000000一Ox00000003 RETI=0;;NOP;;RTI(NP);;QD31+=0]=xRl 1:8;;
(3)DMA中斷矢量設(shè)置為地址0。
(4)設(shè)置地址緩沖區(qū)無效(BTBINV)以清除緩沖區(qū)內(nèi)的任何分支地址。
(5)把256個用戶代碼放到0x00000004-0x000000FF。
(6)對TCB編程,啟動DMlA,處理器進入IDLE狀態(tài)。
(7)DMA完成后,響應(yīng)DMA中斷,程序控制器跳到地址0x00000000,開始執(zhí)行以下代碼:RTI(NPl;;Q[j3 l+=0]=xRll:8;;。
這些指令使中斷降級,用戶DSP算法程序放到0x00000000-Ox00000003,指令計數(shù)器指針指到地址0x00000000(),用戶的算法程序從0x00000000開始執(zhí)行,此時算法程序不處于中斷級。這里的NP選項是必須的,以使:RTI指令不緩沖到:BTB中。
如系統(tǒng)中的外部存儲器要被特殊初始化(如SDRAM),則這個存儲器必須由內(nèi)核來配置及初始化。加載核要被修改和重新編譯,最后的加載核代碼不能超過256個字,是由:DSP的特點所決定的。
5 結(jié)束語
ADI公司的高性能Tiger SHARK系列TS201S型DSF已在對實時處理要求高的場合得到廣泛應(yīng)用,如通信基站、機載雷達預(yù)警、陣列信號處理等。文中著重論述了其程序加載接口,介紹了DSF加載的幾種常用模式,并給出了一種實用的接口方案。在軟件方面,對DSP加載過程中的難點做了說明。文中提到的幾種DSP程序加載方法也適用于其他類型的DSP,讀者可將其靈活運用于實際的DSP系統(tǒng)設(shè)計中。