日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]SHARC陣列板的VMEBus通信分析與應用

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

    關鍵詞:嵌入式系統(tǒng) SHARC 實時性 VxWorks

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

1 DSP及其前端控制

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

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

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

2 SHARC的VME總線通信機制分析

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

2.1 同存塊拷貝方式

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

2.2 客戶/服務的阻塞交互方式

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

typedef struct{

INT32 tag; /*服務標簽*/

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

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

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

INT16 max_len; /*返回包的最大長度*/

} Server_packet

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

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

    2.3 Apex通信機制在單板機控制中的應用

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

3 被動觸發(fā)控制實現(xiàn)

3.1 阻塞式時序控制

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

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

int service_thread(SHARC_system *sys){

int status;

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

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

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

exit(status);

return status;

}

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

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

Custom_call Custom_group::table[]={

/*在向量表里添加服務標簽,第一個對應的標簽序號為0

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

executCommand1,

executCommand2,

……

};

void Custom_group::executCommand1(Server_packet *pkt){

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

}

當服務端接收到了申請后,會立刻自動調用Custom_group::call_service()。該函數(shù)的作用是讀取服務標簽號碼,并從table[]當中取出相應的客戶服務程序執(zhí)行它,如下所示:

void Custom_group::call_service(Server_packet *pkt){

int tag=MINOR_TAG(pkt->tag); /*讀取申請包里的標簽序號*/

if(tag>=0 && tag<=MAX) /*判斷服務標簽是否在原先設定的范圍內*/

{

(this->*(table[tag]))(pkt); /*根據(jù)標簽調用相應的服務*/

}

……

}

此時可將需要下達的指令裝載在回復包,當客戶服務程序執(zhí)行完畢之后,該回復包立刻被自動發(fā)送出去,因此,可在允許信號處理機進入下一工作時序的時候將客戶服務程序返回。在Custom_group類當中可以添加各項控制服務項目,例如Melbourne開機/關機、工作參數(shù)下發(fā)等等。

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

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

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

void Custom_group::executCommand1(Server_packet *pkt){

semGive(semId); /*信號燈驅動數(shù)據(jù)拷貝模塊*/

return;

}

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

void SharcDataCopy(void){

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

}

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

4 結論

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

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

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉