基于ARM和DSP架構的多處理器高速通訊協議設計
關鍵詞:RISC processor(精簡指令集處理器),DSP(數字信號處理器), ARM, Trimedia,RTOS(嵌入式操作系統),數字視頻,STB(機頂盒),PCI, 通訊
目前,建立在寬帶網絡的多媒體應用日漸增多,高性能的DSP也不斷推陳出新,由于DSP具備非常靈活的編程運算能力,針對不同的編碼標準,采用不同的編碼軟件,加上合適的芯片價位,在視頻會議終端、視頻監控服務器、IP數字機頂盒等產品中已被普遍采用。雖然DSP具備眾多的優點, 但卻不適合作系統控制,因為DSP通常沒有強大的操作系統,沒有完備的網絡協議棧和可靠的文件系統,DSP架構在作控制指令時無法并行處理,分支判斷和高速緩存沒命中(cache miss)都會使運行效率極大降低。而這些正好是嵌入式RISC處理器的強項,比如ARM和MIPS系列,所以現在很多國際知名的半導體公司如 PHILIPS和TI都推出了整合了RISC處理器和DSP的SOC芯片,如PNX8550、PNX8525、OMAP等。
高性能的DSP在進行媒體處理時會產生和消費大量的音視頻數據,這些數據需要在RISC 和DSP兩個處理器之間高速、穩定地交換數據,另外,RISC處理器也要經常給DSP發送指令,并且還要支持來自DSP的RPC調用。下面本文將要介紹一種基于多處理器之間的高速通訊機制,并且已在實踐中得到商業化的應用。
本方案采用了SAMSUNG的S3C2510(ARM940T內核)和PHILIPS的Trimedia1300(TM1300) 數字信號處理器,ARM940T內置了PCI2.1規范的總線接口,Trimedia1300可以作為PCI的MASTER和SLAVE,基本架構如圖 -1。
圖-1
基于上述的硬件架構,在ARM和Trimedia1300處理器上分別采用了WindRiver的實時嵌入式操作系統(RTOS)vxWorks和 pSos2.5,本通訊協議的基本思路為,在ARM的內存空間上開辟一塊共享內存,并能使TRIMEDIA能夠訪問,數據通訊的握手協議通過兩個處理器的中斷來實現,配合信號量的使用,可以達到高速、高效通訊的目的,其軟件架構如圖-2。
圖-2
該通訊協議采用分層分布,兩個處理器基本處于對稱狀態,因此,主要軟件模塊是公用的,有區別的是硬件抽象層和操作系統抽象層,與硬件和操作系統相關的模塊比如中斷驅動、信號量同步處理都分別提煉出來,單獨放在這些模塊文件中,減少軟件開發和維護的工作量。下面對圖-2中的軟件模塊進行說明:
1. 硬件抽象層:該層主要完成對不同處理器的硬件的抽象,比如地址映射、中斷處理、 PCI配置空間的訪問,IO寄存器的訪問等功能。將兩個處理器之間的硬件差異隱藏起來,以便上一層統一管理接口。
2. 操作系統抽象層:該層主要完成對不同操作系統之間的抽象,提供vxWorks和pSos兩個操作系統的統一接口,主要是同步、信號量、關鍵代碼的互斥保護機制等功能。
3. 通道及同步事件管理層:為了建立多處理器之間的多通道通訊和同步機制,該層支持多個通道獨立通訊能力,每個通道都有唯一的句柄用于訪問,通道的打開、使用、關閉相互獨立。該層同時也支持命名的同步事件,可用于處理器之間的同步等待功能。
4. 消息處理管理層:該層完成多通道的指定長度分組包通訊功能,支持小數據量的通訊數據,并支持同步機制,DSP的控制指令可以采用這種方式進行通訊。
5. 共享緩存:支持多通道命名共享緩存,其中的數據可以同時被兩個處理器訪問,配合同步事件機制,流式數據可以采用這種方式進行高速、高效通訊。
6. 同步事件:支持多通道可命名的處理器之間的同步事件功能,ARM或DSP可以讓對方等待同步事件,用于精確控制同步處理共享資源。
7. RPC(遠程過程調用)層:在消息處理管理層和同步事件的基礎上,當DSP處理器有時需要打印調試信息,或者讀取HOST的資源時,比如調用 printf、fopen、fread等標準c輸入輸出函數,通過該層處理后,ARM會調用相關函數完成指定的任務,并將結果返回給 Trimedia1300。
在這里我們還要專門的描述的是位于硬件抽象層里的共享內存,它只在HOST的一方存在,所有需要兩個處理器共享的數據都存儲在該區域里,包括高層的共享緩存、消息、同步事件、通道信息等數據,因此需要主機維護物理連續的、一定大小的內存,并且是處理器非cacheable的區域。
下面本文將描述典型的控制指令傳輸方式,具體的過程見圖-3
圖-3
過程說明:本端處理器作初始化,創建同步事件,打開消息通訊句柄, 同步事件用于讀取數據時任務阻塞,然后創建通訊數據包并且發送,發送例程將數據存儲在共享緩沖區內,最后觸發對方中斷。對端處理器進入中斷響應,首先中斷例程分析共享數據區的通訊數據狀態,發現某通道有新的未處理數據后,將其拷貝至自己的私有內存空間,并清理自己的共享數據區狀態,然后釋放在等待中的通訊任務的信號量,使讀通訊數據包的任務解除阻塞狀態,從私有數據區讀取通訊數據包并作相應處理。
數據流通訊與數據包通訊類似,不過方法更簡單,在創建共享緩存和同步事件后,一方寫入數據后,出發同步事件,另一方等到同步事件解除后讀取數據,效率很高而處理器開銷節省至最低。
處理器之間的同步事件功能可以有效地對共享資源進行保護,防止多處理器同時對某一個共享資源訪問,導致數據不完整。RPC(遠程過程調用)功能能方便的用于系統調試和利用主處理器資源,能方便產品的調試和功能開發。
以上是簡化的多處理器通訊模型,方法適用于大多數RISC+DSP的架構,另外為了實現該通訊機制,還必須先完成三個前提,下面將簡單對此進行描述。
1. 位于HOST的共享內存必須是物理連續、非緩沖(none-cacheable)的一段內存,否則,兩個處理器因為本身都帶有數據高速緩存,會使數據的完整性無法保障,因此需要對兩個處理器進行配置,對這段內存的訪問關閉cache操作,具體操作過程不再贅述。
2. 在編譯Trimedia1300程序的時候,將指向共享內存的指針設置為下載時解析,并且要將Trimedia1300的下載程序移植到vxWorks操作系統,再下載解析該指針時將其指向ARM已分配給好的物理連續內存,Trimedia1300程序開始運行后就可以立即對共享內存初始化并進行通訊。
3. 該通訊協議以vxWorks的BSP(板級支持包)的方式提供接口,并創建標準的vxWorks設備,便于安裝、使用。
該通訊規范已經在實用化的商業多媒體機頂盒中運行,該產品的數據流量較大,對時延要求很高,控制命令非常密集,從總體評價來看,采用該通訊協議后,無論是其效率、延時、處理器占用時間、靈活性、穩定性、可拓展性均獲得很好的表現,希望本文也能對正在開發類似產品的人員起一定的提示作用,能加快相關產品的研發。 想繼續了解更多內容,請點擊“重慶監控”進行查詢。
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
瀏覽次數:4067時間:2013/11/12 15:09:08
熱點新聞更多
- 安裝監控攝像頭還需求其他什么設備呢?2021/2/3 1
- 監控攝像頭有哪些分類2021/1/26
- 網線和監控線一樣嗎2020/12/8
- 監控攝像頭哪個牌子好?2020/11/13
- 監控攝像頭多少錢一個2020/10/26
- 隨處可見的監控攝像2020/9/2 1
- 監控攝像頭的區別分類2020/9/2 1
- 安裝監控要求有哪些2020/8/24
- 樓宇小區等安保系統如何組成2020/8/24
- 攝像頭安裝環境應該怎么選2020/8/13
- 安防監控系統使用注意事項2020/8/13
- 對監控系統故障的解決方法?2020/7/23
- 重慶購買網絡攝像機需要注意什么?2020/7/23
- 監控安防系統常見問題及解決方法2020/7/15
- 智能小區安防防盜報警常見問題有哪些2020/7/15
- 白光攝像機和紅外攝像機的區別講解2020/7/3 9
- 影響網絡監控攝像機帶寬的因素有哪些?2020/7/2 1
- 視頻監控系統使用前注意事項和維護保養2020/7/1 1
- 民用監控攝像機有哪些種類?2020/7/1 1
- 如何提高監控攝像機防破壞能力?2020/6/30