• 沒有找到結果。

雙核心處理器之內部溝通機制

OMAP 雖然是一個雙核心元件,但一般 ARM 的開發者有時候並不需要 DSP 核 心,他們可能希望OMAP 開發環境仍然和單核心處理器時相同。我們使用 DSP Gateway 的概念讓ARM 和 DSP 建立連結,讓元件中 DSP 的存在變得透明,以保持 OMAP 運 作時的彈性,讓一般ARM 的開發者不需要 DSP 核心時,其開發環境仍然和單核心處 理器(ARM)時相同。DSP Gateway[31]可被看作同時存在於兩個核心中的軟體層,其主 要用來向ARM 上執行的多媒體引擎導出一組 API(Application Program Interface,應用 程式介面),以便其存取 DSP 資源。在 DSP 端,DSP Gateway 用於管理 DSP 資源和數 據流,並向DSP 演算法提供介面。在架設 DSP Gateway 之前,由於我們需要可以呼叫 與管理DSP Gateway 的介面,再加上我們在 DSP 與 ARM 上面都有許多工作(task)需 要執行,所以,我們分別在DSP 與 ARM 上面架設即時核心(DSP/BIOS)與嵌入式作業 系統(ARM-Linux)來管理這兩個核心的資源。圖 B.7 表示 DSP Gateway 架構的關係圖。

從圖中看出DSP Gateway 包含兩部份,靠著這兩者合作完成通訊的功能:

1. Linux 裝置驅動程式:提供介面讓 ARM 的程式以系統呼叫(system call)的方式使 用DSP。

圖B.7、DSP Gateway系統架構圖

資料來源: http://dspgateway.sourceforge.net/pub/index.php

在OMAP 處理器中的 ARM 與 DSP 資料交互傳遞的方法有三種,透過 Mailbox、

MPU(Micro Processor Unit) Interface(MPUI)與 Share Memory(共享記憶體)等方式來達 成,在DSP Gateway 中是以 Mailbox 以及 Share Memory 來實現 ARM 與 DSP 資料交 互傳遞。以下先對ARM 與 DSP 資料交互傳遞的三種方法作簡介:

(1) Mailbox 機制:

OMAP5912 中有三組 Mailbox 暫存器,如圖 B.8 所示。一組是給 ARM 用,當 ARM 有資料寫入 Mailbox 時,會送出中斷(INT5)給 DSP;其他兩組則是當 DSP 有資 料寫進時,才會送出中斷(IRQ10/11)給 ARM。每一組 Mailbox 是包含兩個 16 位元暫 存器與一個1 位元旗標暫存器。當中斷發生時,中斷的處理器會用兩個 16 位元的暫存 器各自將命令與資料傳到被中斷的處理器上。

圖B.8、ARM/DSP Mailbox 說明圖

資料來源: http://dspgateway.sourceforge.net/pub/index.php

(2) MPU Interface(MPUI)機制:

MPUI 可以讓 ARM 和系統的 DMA(Direct Memory Access,直接記憶體存取) 控 制器與DSP 和 DSP 的週邊互相通訊。MPUI 可以存取整個 DSP 的記憶體空間與 DSP 的週邊匯流排。因此ARM 與系統的 DMA 可以有 DSP 輸出入空間的完整存取權限。

至於透過Share Memory 這樣的架構則是靠 OMAP 上的 Traffic Controller 達成,藉由 ARM 與 DSP 存取相同的記憶體空間。ARM 可以控制 DSP 的 MMU(Memory Management Unit,記憶體管理單元)讓 DSP 可以存取這些記憶媒介。

(3) Share Memory 機制:

由於mailbox 只能傳送兩個 16 位元暫存器與一個 1 位元旗標暫存器,而無法傳送 大量的資料,所以,我們必須借由Share Memory 的方式來傳送大量的資料。而 Share Memory 這樣的架構則是靠 OMAP 上的 Traffic Controller 達成,藉由 ARM 與 DSP 存 取相同的記憶體空間。ARM 可以控制 DSP 的 MMU 讓 DSP 可以存取這些記憶媒介,

在DSP Gateway 中,我們稱這一塊記憶體為 IPBUF。

圖B.9 表示 Mailbox 和 IPBUF 在 ARM 和 DSP 之間的關係,ARM 端的程式 要將資料交給DSP task 處理時,也要將資料傳給 DSP 端。資料傳輸的型式,所採取

command,這時會有 Mailbox 中斷(INT5)產生,接收這個命令,經過 interrupt handler 的處理DSP task 收到接收資料的命令,並會到 Mailbox command 裡面指定的 IPBUF 內取得所要處理的資料,經過在DSP 運算後,將得到結果存在記憶體內。同樣的 ARM 這時會送接收資料的命令過來,DSP 將得到的結果送到 IPBUF 中,ARM 可從 IPBUF 取得DSP 處理後的資料。

圖B.9、ARM/DSP內部傳輸說明圖

資料來源: http://dspgateway.sourceforge.net/pub/index.php

相關文件