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