當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]SHARC陣列板的VMEBus通信分析與應(yīng)用

摘要:分析在Apex軟件環(huán)境下,SHARC處理器陣列板與MVME2700單板機(jī)基于VME總線的交互通信機(jī)制;利用該機(jī)制在VxWorks操作系統(tǒng)下,實(shí)現(xiàn)MVME2700單板機(jī)對(duì)DSP陣列板的被動(dòng)觸式工作時(shí)序控制。

    關(guān)鍵詞:嵌入式系統(tǒng) SHARC 實(shí)時(shí)性 VxWorks

目前,許多信號(hào)處理系統(tǒng)DSP都采用Analog Device公司的SHARC系列產(chǎn)品。隨著DSP計(jì)算能力與應(yīng)用范圍的不斷增強(qiáng)和擴(kuò)大,越來(lái)越要求DSP具有實(shí)時(shí)控制能力以及具備多種通信接口。特別隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,基于網(wǎng)絡(luò)控制的DSP應(yīng)用已成為主流;而嵌入式單板機(jī)(Signal Board Computer)顯然在實(shí)時(shí)控制與多通信接口及網(wǎng)絡(luò)應(yīng)用方面具有及大的優(yōu)勢(shì)。因此,通常在DSP處理機(jī)前端利用單板機(jī)設(shè)置通信控制器,加強(qiáng)對(duì)DSP系統(tǒng)的實(shí)時(shí)控制與外圍通信接口擴(kuò)展。DSP系統(tǒng)與其前端通信控制器之間是否具有良好的實(shí)時(shí)通信,決定了其整體性能的優(yōu)良程度。本文利用Motorola公司的MVME2700單板機(jī)作為DSP信號(hào)處理機(jī)的前端通信控制器,實(shí)現(xiàn)了對(duì)DSP系統(tǒng)的實(shí)時(shí)通信控制。

1 DSP及其前端控制

在需要高強(qiáng)度信號(hào)處理能力的領(lǐng)域,一般可采用多塊具有拓?fù)浣Y(jié)構(gòu)的SHARC處理器VMEBus陣列板作為信號(hào)處理機(jī)。各陣列板通過(guò)連接線連接,具有很強(qiáng)的信號(hào)處理 能力。SHARC陣列板雖具有強(qiáng)大的計(jì)算功能,但是卻不適合加載實(shí)時(shí)操作系統(tǒng),因此其自身管理功能并不強(qiáng)大,并且通信接口擴(kuò)展性較差,不利于功能擴(kuò)展和網(wǎng)絡(luò)控制。為了對(duì)其實(shí)施合理的工作時(shí)序控制并增強(qiáng)外圍通信功能,在其前端配置一塊單板機(jī),利用VxWorks作為操作系統(tǒng),并安裝控制程序?qū)HARC陣列板實(shí)施控制。由于單板機(jī)具有良好的通信接口擴(kuò)展性,該單板機(jī)作為信號(hào)處理系統(tǒng)的前端機(jī)可以外接網(wǎng)絡(luò)接口、視頻接口、I/O接口等等,使得信號(hào)處理機(jī)可作為一個(gè)完整的分系統(tǒng)接入控制網(wǎng)絡(luò);利用單板機(jī)的強(qiáng)大的實(shí)時(shí)控制功能和網(wǎng)絡(luò)功能,使信號(hào)處理機(jī)發(fā)揮最大功效。下面給出SHARC陣列板與其前端的單板機(jī)組成的通信處理系統(tǒng),如圖1所示。

    該嵌入式系統(tǒng)基于標(biāo)準(zhǔn)的VME總線結(jié)構(gòu),SHARC處理器為ADSP21060,其時(shí)鐘頻率為40MHz,晶體振蕩器的頻率為25.6MHz。每一個(gè)SHARC處理器都支持高達(dá)240MB/s的高速通信。對(duì)SHARC的軟件開(kāi)發(fā)采用Apex(Advanced parallel excutive),即高級(jí)并行執(zhí)行指令,由Signal Spectrum公司開(kāi)發(fā)的SHARC指令高級(jí)開(kāi)發(fā)語(yǔ)言。

Apex提供了性能優(yōu)良的、靈活的并行處理器指令集,以及對(duì)DSP硬件的便捷訪問(wèn)功能。同時(shí),Apex還提供了基于VME總線的通信機(jī)制,允許從主機(jī)下裝SHARC代碼到客戶機(jī),并且具備在主機(jī)和客戶機(jī)之間進(jìn)行數(shù)據(jù)傳輸?shù)墓δ?。本文采用美?guó)Motorola公司生產(chǎn)的單板機(jī)MVME2700,中央處理器PowerPC MPC750作為Melbourne的前端通信控制器。MVME2700是一個(gè)高度集成計(jì)算機(jī)系統(tǒng),適用于要求高度實(shí)時(shí)控制管理的系統(tǒng)環(huán)境。它所使用的操作系統(tǒng)就是嵌入式的實(shí)時(shí)操作系統(tǒng)中的佼佼者VxWorks。VxWorks是具有高性能的實(shí)時(shí)操作系統(tǒng)內(nèi)核。該內(nèi)核使用中斷驅(qū)動(dòng)、搶占優(yōu)先級(jí)的任務(wù)調(diào)配機(jī)制,這種機(jī)制使得VxWorks具有高性能的實(shí)時(shí)特性。MVME2700的通信控制程序通過(guò)Tornado軟件在Windows環(huán)境下進(jìn)行程序開(kāi)發(fā)。

2 SHARC的VME總線通信機(jī)制分析

如果要實(shí)現(xiàn)MVME2700對(duì)SHARC的實(shí)時(shí)控制,則必須了解SHARC是如何基于VME總線對(duì)外訪問(wèn)的。由于MVME2700對(duì)SHARC陣列板起著程序下載、引導(dǎo)和控制作用,在Apex開(kāi)發(fā)環(huán)境下視其為主機(jī),而SHARC陣列板則稱為目標(biāo)機(jī)。對(duì)于SHARC陣列板而言,一般只有根部SAHRC處理器參與VME總線通信。Apex支持兩類主機(jī)與SHARC系統(tǒng)進(jìn)行VME通信的方式:一類方式是在主機(jī)應(yīng)用程序和SHARC陣列板根部處理之間進(jìn)行的較低層的數(shù)據(jù)塊拷貝,類似于簡(jiǎn)單的本地?cái)?shù)據(jù)拷貝標(biāo)準(zhǔn)C程序當(dāng)中的memcpy;另一類則以客戶端/服務(wù)端交互的形式在主機(jī)與SHARC之間建立通信,利用中斷實(shí)現(xiàn)同步,并且可以多路傳輸。下面對(duì)這兩種方式加以分析。

2.1 同存塊拷貝方式

Apex提供主機(jī)與SHARC目標(biāo)機(jī)的任何內(nèi)存地址拷貝數(shù)據(jù)的函數(shù):cpy_to_SHARC()和cpy_from_SHARC()。給出SHARC陣列板上SHARC-0(根部處理器)的本地地址和主機(jī)上的本地址,即可進(jìn)行內(nèi)存塊拷貝。本質(zhì)上,這是一種基于VME總線的共享內(nèi)存DMA方式,函數(shù)cpy_to_SHARC()和cpy_from_SHARC()自動(dòng)將主機(jī)與目標(biāo)機(jī)的本地址釋放成VME總線地址,通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)傳輸,因此可以不必關(guān)心低層具體的VME總線映射關(guān)系,而將重點(diǎn)在上層數(shù)據(jù)傳輸。不過(guò),某些情況下需要獲得VME映射關(guān)系的時(shí)候,例如主機(jī)需要通過(guò)VME總線對(duì)SHARC的控制寄存器進(jìn)行操作,此時(shí)應(yīng)當(dāng)利用VxWorks的函數(shù)sysLocaltoBusAddr()來(lái)主動(dòng)獲得該寄存器的VME地址映射,對(duì)該VME地址進(jìn)行位操作。要做到這一點(diǎn),在NT操作系統(tǒng)下則顯得要麻煩得多。由于SHARC與MVME2700的數(shù)據(jù)拷貝通過(guò)VME總線傳輸,其數(shù)據(jù)傳輸速率是非常高的;同時(shí),由于采取了DMA方式,幾乎不需要CPU介入,從而可提高程序執(zhí)行效率。

2.2 客戶/服務(wù)的阻塞交互方式

該方式要求每次客戶端申請(qǐng)獲得服務(wù)的時(shí)候,向系統(tǒng)提供一個(gè)服務(wù)請(qǐng)求。該請(qǐng)求包括標(biāo)簽和一同發(fā)送的數(shù)據(jù)包,其結(jié)構(gòu)體數(shù)據(jù)格式如下:

typedef struct{

INT32 tag; /*服務(wù)標(biāo)簽*/

INT32 param; /*客戶服務(wù)程序參數(shù)*/

INT32 data; /*數(shù)據(jù)包指針*/

INT16 length; /*數(shù)據(jù)包長(zhǎng)度*/

INT16 max_len; /*返回包的最大長(zhǎng)度*/

} Server_packet

客戶端提完申請(qǐng)之后就會(huì)進(jìn)入阻塞狀態(tài)等待服務(wù)端的回答。服務(wù)端截獲該申請(qǐng)之后,根據(jù)服務(wù)標(biāo)簽啟動(dòng)相應(yīng)的服務(wù)模塊,完成相應(yīng)的服務(wù)之后向客戶端發(fā)送回復(fù),此時(shí)客戶端才能停止阻塞恢復(fù)運(yùn)行,如圖2所示。申請(qǐng)和回復(fù)這兩種數(shù)據(jù)包具有同樣的結(jié)構(gòu),每次最大數(shù)據(jù)傳輸量不能超過(guò)4KB??蛻舳伺c服務(wù)端之間的實(shí)時(shí)響應(yīng)由系統(tǒng)發(fā)送中斷自動(dòng)完成,不需要人為干預(yù),具有較高的實(shí)時(shí)性和安全性。

該方式實(shí)質(zhì)是構(gòu)架于VME總線中斷之上的。在客戶端發(fā)送申請(qǐng)包的時(shí)候包含了一個(gè)VME總線中斷,由該中斷驅(qū)動(dòng)服務(wù)端的服務(wù)循環(huán)模塊,然后服務(wù)循環(huán)模塊再調(diào)用相應(yīng)的客戶服務(wù)程序,從而實(shí)現(xiàn)兩路通信握手。該方式將底層的VME總線中斷驅(qū)動(dòng)機(jī)制封裝起來(lái),在上層建立了規(guī)范的服務(wù)循環(huán)模塊并且允許添加個(gè)人服務(wù)程序,對(duì)于軟件的規(guī)范與維護(hù)有利。當(dāng)然,如果需要更高的實(shí)時(shí)性,可以不采用該方式,而是由客戶端直接發(fā)送VME總線中斷來(lái)實(shí)現(xiàn)握手,但必須對(duì)于底層的中斷寄存器直接操作,不易維護(hù)。需要指出的是,對(duì)于具有拓?fù)浣Y(jié)構(gòu)的SHARC芯片組而言,只能由根端SHARC處理器作為客戶端,內(nèi)存拷貝也只能在根部SHARC處理器與服務(wù)端處理機(jī)之間進(jìn)行。

    2.3 Apex通信機(jī)制在單板機(jī)控制中的應(yīng)用

一般來(lái)說(shuō),進(jìn)行高強(qiáng)度運(yùn)算的信號(hào)處理機(jī)都應(yīng)該具有嚴(yán)格的工作時(shí)序,在每個(gè)工作時(shí)序進(jìn)入相應(yīng)的工作狀態(tài),這有利于其它分系統(tǒng)的相關(guān)處理以及信號(hào)處理機(jī)運(yùn)算流程的合理安排。因此,對(duì)于信號(hào)處理機(jī)可以采取被動(dòng)觸發(fā)控制,即信號(hào)處理機(jī)完成當(dāng)前工作時(shí)序之后向通信控制器提交下一工作時(shí)序請(qǐng)求,通信控制器可根據(jù)外部指令(通過(guò)網(wǎng)絡(luò))決定何時(shí)執(zhí)行,這期間信號(hào)處理機(jī)應(yīng)當(dāng)處理阻塞狀態(tài)等待回答。那么通信控制器可以利用Apex提供的第二類交互方式,作為服務(wù)端實(shí)時(shí)響應(yīng)SHARC的服務(wù)申請(qǐng),并根據(jù)整體系統(tǒng)工作時(shí)序決定信號(hào)處理機(jī)的阻塞時(shí)間;同時(shí),該方式提供每次4KB的傳輸量,可以用來(lái)下發(fā)工作參數(shù)和其它命令。這樣既可避免繁瑣的中斷同步設(shè)置,又有利于軟件的范也維護(hù);而進(jìn)行大指數(shù)據(jù)傳輸應(yīng)當(dāng)?shù)谝活惙绞???紤]到采取該方式缺乏握手機(jī)制,故應(yīng)當(dāng)在交互方式以及VxWorks的多任務(wù)協(xié)調(diào)與約束下進(jìn)行避免數(shù)據(jù)傳輸發(fā)生沖突與覆蓋。

3 被動(dòng)觸發(fā)控制實(shí)現(xiàn)

3.1 阻塞式時(shí)序控制

要實(shí)現(xiàn)對(duì)信號(hào)處理機(jī)的被動(dòng)觸發(fā)控制,必須在通信控制器上建立面向SHARC陣列板的服務(wù)模塊。Apex提供一個(gè)SHARC_system對(duì)象,所有的服務(wù)都基于該對(duì)象建立,包括Melbourne引導(dǎo)。該類中的成員函數(shù)SHARC_system::transaction的作用是初始化一個(gè)雙向通信管道,客戶端/服務(wù)端的交互通道都通過(guò)該通道進(jìn)行。完成管道初始化之后,調(diào)用相應(yīng)的成員函數(shù)SHARC_system::service_loop建立服務(wù)循環(huán),如下面的程序所示:

/*服務(wù)循環(huán)線程*/

int service_thread(SHARC_system *sys){

int status;

printf(“service thread running...”);

sys->service_loop(Timeout(ENVER));/*啟動(dòng)服務(wù)循環(huán)*/

sys->exit_status(&status); /*退出服務(wù)循環(huán)*/

exit(status);

return status;

}

利用VxWorks的任務(wù)產(chǎn)生函數(shù)taskSpawn(),將service_thread服務(wù)循環(huán)派生成一個(gè)獨(dú)立的線程來(lái)處理SHARC的申請(qǐng)。當(dāng)SHARC的程序退出后,通信控制器的循環(huán)也將自動(dòng)終止。

由于服務(wù)端必須根據(jù)客戶端提供的服務(wù)標(biāo)簽調(diào)用相應(yīng)的服務(wù),這就要求為SHARC_system類加載個(gè)人的服務(wù)程序。首先,定義系統(tǒng)標(biāo)準(zhǔn)類Service_group的繼承類Custom_group。然后,在這個(gè)類當(dāng)中添加自己的成員函數(shù),即通信控制器SHARC的服務(wù)程序;同時(shí),再定義一個(gè)向量表table[],將不同成員函數(shù)名稱順次列在其中編制成服務(wù)標(biāo)簽,如下所示:

Custom_call Custom_group::table[]={

/*在向量表里添加服務(wù)標(biāo)簽,第一個(gè)對(duì)應(yīng)的標(biāo)簽序號(hào)為0

(table[0]),第二個(gè)為1(table[1]),以后的以此類推*/

executCommand1,

executCommand2,

……

};

void Custom_group::executCommand1(Server_packet *pkt){

/*在這里用戶寫入自己的服務(wù)代碼*/

}

當(dāng)服務(wù)端接收到了申請(qǐng)后,會(huì)立刻自動(dòng)調(diào)用Custom_group::call_service()。該函數(shù)的作用是讀取服務(wù)標(biāo)簽號(hào)碼,并從table[]當(dāng)中取出相應(yīng)的客戶服務(wù)程序執(zhí)行它,如下所示:

void Custom_group::call_service(Server_packet *pkt){

int tag=MINOR_TAG(pkt->tag); /*讀取申請(qǐng)包里的標(biāo)簽序號(hào)*/

if(tag>=0 && tag<=MAX) /*判斷服務(wù)標(biāo)簽是否在原先設(shè)定的范圍內(nèi)*/

{

(this->*(table[tag]))(pkt); /*根據(jù)標(biāo)簽調(diào)用相應(yīng)的服務(wù)*/

}

……

}

此時(shí)可將需要下達(dá)的指令裝載在回復(fù)包,當(dāng)客戶服務(wù)程序執(zhí)行完畢之后,該回復(fù)包立刻被自動(dòng)發(fā)送出去,因此,可在允許信號(hào)處理機(jī)進(jìn)入下一工作時(shí)序的時(shí)候?qū)⒖蛻舴?wù)程序返回。在Custom_group類當(dāng)中可以添加各項(xiàng)控制服務(wù)項(xiàng)目,例如Melbourne開(kāi)機(jī)/關(guān)機(jī)、工作參數(shù)下發(fā)等等。

    3.2 非阻塞數(shù)據(jù)拷貝方式

由于這種客戶/服務(wù)交互通信采用了阻塞模式,即SHARC必須等待通信控制器的回復(fù)才可以繼續(xù)執(zhí)行,但在某些情況下SHARC不需要等待。例如,SHARC提出申請(qǐng),通知通信控制器將計(jì)算完畢的數(shù)據(jù)取走,而SHARC不必等待通信控制器將數(shù)據(jù)拷貝完畢才執(zhí)行后面的計(jì)算。為了避免一直阻塞,可在相應(yīng)的客戶服務(wù)程序當(dāng)中設(shè)置一個(gè)信號(hào)燈,當(dāng)該程序被調(diào)用的時(shí)候即釋放該信號(hào)燈,由信號(hào)燈驅(qū)動(dòng)其它的模塊進(jìn)行數(shù)據(jù)拷貝,而該客戶服務(wù)程序立刻返回使SHARC解除阻塞狀態(tài),如圖3所示。

要實(shí)現(xiàn)該功能,可采取如下的程序代碼:

void Custom_group::executCommand1(Server_packet *pkt){

semGive(semId); /*信號(hào)燈驅(qū)動(dòng)數(shù)據(jù)拷貝模塊*/

return;

}

/*數(shù)據(jù)拷貝模塊*/

void SharcDataCopy(void){

semTake(semId); /*等待獲得信號(hào)燈*/copy_from_SHARC(localBuffer,SHARCBufferAddress,dataLength); /*從SHARC拷貝數(shù)據(jù)*/

}

通過(guò)以上代碼,當(dāng)SHARC提出申請(qǐng)后,通信控制器立刻響應(yīng)該申請(qǐng),并在客戶服務(wù)程序當(dāng)中釋放信號(hào)燈。驅(qū)動(dòng)數(shù)據(jù)拷貝模塊向Melbourne的根部處理器提取數(shù)據(jù),客戶服務(wù)程序迅速返回,解除信號(hào)處理機(jī)的阻塞狀態(tài)。

4 結(jié)論

通過(guò)以上的步驟,MVME2700作為服務(wù)端可以隨時(shí)響應(yīng)SHARC的服務(wù)請(qǐng)求,利用阻塞特性執(zhí)行相應(yīng)的時(shí)序控制操作;同時(shí),也可以執(zhí)行非阻塞數(shù)據(jù)拷貝,從而在VxWorks環(huán)境下建立起通信控制器與SHARC之間完整的被動(dòng)觸發(fā)控制模式。實(shí)際上,也可以由SHARC作為服務(wù)端,MVME2700作為客戶端,建立的方法與上述基本一致。這種模式下,陣列板的任何一塊SHARC處理器均可以作為服務(wù)端,而并非僅有根部處理器。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉