<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM和DSP架構的多處理器高速通訊協(xié)議設計

基于A(yíng)RM和DSP架構的多處理器高速通訊協(xié)議設計

作者: 時(shí)間:2011-07-11 來(lái)源:網(wǎng)絡(luò ) 收藏
  目前,建立在寬帶網(wǎng)絡(luò )的多媒體應用日漸增多,高性能的DSP也不斷推陳出新,由于DSP具備非常靈活的編程運算能力,針對不同的編碼標準,采用不同的編碼軟件,加上合適的芯片價(jià)位,在視頻會(huì )議終端、視頻監控服務(wù)器、IP數字機頂盒等產(chǎn)品中已被普遍采用。
  雖然DSP具備眾多的優(yōu)點(diǎn), 但卻不適合作系統控制,因為DSP通常沒(méi)有強大的操作系統,沒(méi)有完備的網(wǎng)絡(luò )協(xié)議棧和可靠的文件系統,在作控制指令時(shí)無(wú)法并行處理,分支判斷和高速緩存沒(méi)命中(cache miss)都會(huì )使運行效率極大降低。而這些正好是嵌入式RISC處理器的強項,比如和MIPS系列,所以現在很多國際知名的半導體公司如PHILIPS和TI都推出了整合了RISC處理器和DSP的SOC芯片,如PNX8550、PNX8525、OMAP等。
  高性能的DSP在進(jìn)行媒體處理時(shí)會(huì )產(chǎn)生和消費大量的音視頻數據,這些數據需要在RISC 和DSP兩個(gè)處理器之間高速、穩定地交換數據,另外,RISC處理器也要經(jīng)常給DSP發(fā)送指令,并且還要支持來(lái)自DSP的RPC調用。下面本文將要介紹一種基于之間的機制,并且已在實(shí)踐中得到商業(yè)化的應用。
  本方案采用了SAMSUNG的S3C2510(940T內核)和PHILIPS的Trimedia1300(TM1300) 數字信號處理器,940T內置了PCI2.1規范的總線(xiàn)接口,Trimedia1300可以作為PCI的MASTER和SLAVE,基本架構如圖-1。
基于A(yíng)RM和DSP架構的多處理器高速通訊協(xié)議設計
圖-1
  基于上述的硬件架構,在A(yíng)RM和Trimedia1300處理器上分別采用了WindRiver的實(shí)時(shí)嵌入式操作系統(RTOS)vxWorks和pSos2.5,本通訊協(xié)議的基本思路為,在A(yíng)RM的內存空間上開(kāi)辟一塊共享內存,并能使TRIMEDIA能夠訪(fǎng)問(wèn),數據通訊的握手協(xié)議通過(guò)兩個(gè)處理器的中斷來(lái)實(shí)現,配合信號量的使用,可以達到高速、高效通訊的目的,其軟件架構如圖-2。
基于A(yíng)RM和DSP架構的多處理器高速通訊協(xié)議設計
圖-2
  該通訊協(xié)議采用分層分布,兩個(gè)處理器基本處于對稱(chēng)狀態(tài),因此,主要軟件模塊是公用的,有區別的是硬件抽象層和操作系統抽象層,與硬件和操作系統相關(guān)的模塊比如中斷驅動(dòng)、信號量同步處理都分別提煉出來(lái),單獨放在這些模塊文件中,減少軟件開(kāi)發(fā)和維護的工作量。
下面對圖-2中的軟件模塊進(jìn)行說(shuō)明:
 1. 硬件抽象層:該層主要完成對不同處理器的硬件的抽象,比如地址映射、中斷處理、 PCI配置空間的訪(fǎng)問(wèn),IO寄存器的訪(fǎng)問(wèn)等功能。將兩個(gè)處理器之間的硬件差異隱藏起來(lái),以便上一層統一管理接口。
 2. 操作系統抽象層:該層主要完成對不同操作系統之間的抽象,提供vxWorks和pSos兩個(gè)操作系統的統一接口,主要是同步、信號量、關(guān)鍵代碼的互斥保護機制等功能。
 3. 通道及同步事件管理層:為了建立之間的多通道通訊和同步機制,該層支持多個(gè)通道獨立通訊能力,每個(gè)通道都有唯一的句柄用于訪(fǎng)問(wèn),通道的打開(kāi)、使用、關(guān)閉相互獨立。該層同時(shí)也支持命名的同步事件,可用于處理器之間的同步等待功能。
 4. 消息處理管理層:該層完成多通道的指定長(cháng)度分組包通訊功能,支持小數據量的通訊數據,并支持同步機制,DSP的控制指令可以采用這種方式進(jìn)行通訊。
 5. 共享緩存:支持多通道命名共享緩存,其中的數據可以同時(shí)被兩個(gè)處理器訪(fǎng)問(wèn),配合同步事件機制,流式數據可以采用這種方式進(jìn)行高速、高效通訊。
 6. 同步事件:支持多通道可命名的處理器之間的同步事件功能,ARM或DSP可以讓對方等待同步事件,用于精確控制同步處理共享資源。
 7. RPC(遠程過(guò)程調用)層:在消息處理管理層和同步事件的基礎上,當DSP處理器有時(shí)需要打印調試信息,或者讀取HOST的資源時(shí),比如調用printf、fopen、fread等標準c輸入輸出函數,通過(guò)該層處理后,ARM會(huì )調用相關(guān)函數完成指定的任務(wù),并將結果返回給Trimedia1300。
  在這里我們還要專(zhuān)門(mén)的描述的是位于硬件抽象層里的共享內存,它只在HOST的一方存在,所有需要兩個(gè)處理器共享的數據都存儲在該區域里,包括高層的共享緩存、消息、同步事件、通道信息等數據,因此需要主機維護物理連續的、一定大小的內存,并且是處理器非cacheable的區域。
下面本文將描述典型的控制指令傳輸方式,具體的過(guò)程見(jiàn)圖-3
基于A(yíng)RM和DSP架構的多處理器高速通訊協(xié)議設計
圖-3
  過(guò)程說(shuō)明:本端處理器作初始化,創(chuàng )建同步事件,打開(kāi)消息通訊句柄, 同步事件用于讀取數據時(shí)任務(wù)阻塞,然后創(chuàng )建通訊數據包并且發(fā)送,發(fā)送例程將數據存儲在共享緩沖區內,最后觸發(fā)對方中斷。
  對端處理器進(jìn)入中斷響應,首先中斷例程分析共享數據區的通訊數據狀態(tài),發(fā)現某通道有新的未處理數據后,將其拷貝至自己的私有內存空間,并清理自己的共享數據區狀態(tài),然后釋放在等待中的通訊任務(wù)的信號量,使讀通訊數據包的任務(wù)解除阻塞狀態(tài),從私有數據區讀取通訊數據包并作相應處理。
  數據流通訊與數據包通訊類(lèi)似,不過(guò)方法更簡(jiǎn)單,在創(chuàng )建共享緩存和同步事件后,一方寫(xiě)入數據后,出發(fā)同步事件,另一方等到同步事件解除后讀取數據,效率很高而處理器開(kāi)銷(xiāo)節省至最低。
  處理器之間的同步事件功能可以有效地對共享資源進(jìn)行保護,防止同時(shí)對某一個(gè)共享資源訪(fǎng)問(wèn),導致數據不完整。RPC(遠程過(guò)程調用)功能能方便的用于系統調試和利用主處理器資源,能方便產(chǎn)品的調試和功能開(kāi)發(fā)。
  以上是簡(jiǎn)化的多處理器通訊模型,方法適用于大多數RISC+DSP的架構,另外為了實(shí)現該通訊機制,還必須先完成三個(gè)前提,下面將簡(jiǎn)單對此進(jìn)行描述。
 1. 位于HOST的共享內存必須是物理連續、非緩沖(none-cacheable)的一段內存,否則,兩個(gè)處理器因為本身都帶有數據高速緩存,會(huì )使數據的完整性無(wú)法保障,因此需要對兩個(gè)處理器進(jìn)行配置,對這段內存的訪(fǎng)問(wèn)關(guān)閉cache操作,具體操作過(guò)程不再贅述。
 2. 在編譯Trimedia1300程序的時(shí)候,將指向共享內存的指針設置為下載時(shí)解析,并且要將Trimedia1300的下載程序移植到vxWorks操作系統,再下載解析該指針時(shí)將其指向ARM已分配給好的物理連續內存,Trimedia1300程序開(kāi)始運行后就可以立即對共享內存初始化并進(jìn)行通訊。
 3. 該通訊協(xié)議以vxWorks的BSP(板級支持包)的方式提供接口,并創(chuàng )建標準的vxWorks設備,便于安裝、使用。
  該通訊規范已經(jīng)在實(shí)用化的商業(yè)多媒體機頂盒中運行,該產(chǎn)品的數據流量較大,對時(shí)延要求很高,控制命令非常密集,從總體評價(jià)來(lái)看,采用該通訊協(xié)議后,無(wú)論是其效率、延時(shí)、處理器占用時(shí)間、靈活性、穩定性、可拓展性均獲得很好的表現,希望本文也能對正在開(kāi)發(fā)類(lèi)似產(chǎn)品的人員起一定的提示作用,能加快相關(guān)產(chǎn)品的研發(fā)。
2004-7-8
參考文獻:
Tornado Online Manuals by Windriver
Trimedia SDE Documents by Philips Semiconductor
pSOS Manuals by Integrated Systems, Inc.
S3c2510A User’s manuals by Samsung Electronics
PCI Local Bus Specification by PCI Special Interest Group


關(guān)鍵詞: ARM DSP架構 多處理器 高速通訊

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>