• 沒有找到結果。

第三章 嵌入式多工排程系統設計

3.1 嵌入式系統開發環境簡介

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

OMAP 雖然是一個雙核心元件,但一般 ARM 的開發者有時候並不需要 DSP 核心,他們可能希望OMAP 開發環境仍然和單核心處理器時相同。我們使用 DSP Gateway 的概念讓 ARM 和 DSP 建立連結,讓元件中 DSP 的存在變得透明,以 保持OMAP 運作時的彈性,讓一般 ARM 的開發者不需要 DSP 核心時,其開發 環境仍然和單核心處理器(ARM)時相同。DSP Gateway 可被看作同時存在於兩個 核 心 中 的 軟 體 層 , 其 主 要 用 來 向 ARM 上 執 行 的 多 媒 體 引 擎 導 出 一 組 API(Application Program Interface,應用程式介面),以便其存取 DSP 資源。在 DSP 端,DSP Gateway 用於管理 DSP 資源和數據流,並向 DSP 演算法提供介面。

在架設DSP Gateway 之前,由於我們需要可以呼叫與管理 DSP Gateway 的介面,

再加上我們在DSP 與 ARM 上面都有許多工作(task)需要執行,所以,我們分別 在 DSP 與 ARM 上面架設即時核心(DSP/BIOS)與嵌入式作業系統(ARM-Linux)

來管理這兩個核心的資源。圖3.6 表示 DSP Gateway 架構的關係圖。從圖中看出 DSP Gateway 包含兩部份,靠著這兩者合作完成通訊的功能:

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

™ DSP 的函式庫:提供函式讓 DSP task 可以被 ARM 透過驅動程式使用。

圖3.6、DSP Gateway系統架構圖[41]

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

(1) Mailbox 機制:

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

(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。

圖3.7表示Mailbox和IPBUF在ARM和DSP之間的關係,ARM端的程式要將資 料交給DSP task處理時,也要將資料傳給DSP端。資料傳輸的型式,所採取的方 式是block send的方式,ARM在傳送資料時的Mailbox command中下達BKSND的 命令,並且傳送BID(buffer ID)給DSP。ARM在傳送資料時,會先傳送Mailbox command,這時會有Mailbox中斷(INT5)產生,接收這個命令,經過interrupt handler 的處理DSP task收到接收資料的命令,並會到Mailbox command裡面指定的IPBUF 內取得所要處理的資料,經過在DSP運算後,將得到結果存在記憶體內。同樣的 ARM這時會送接收資料的命令過來,DSP將得到的結果送到IPBUF中,ARM可 從IPBUF取得DSP處理後的資料。

圖3.7、ARM/DSP內部傳輸說明圖