OMAPL138雙核系統(tǒng)的調(diào)試方案設(shè)計(jì)
摘要:OMAPL138高性能、低功耗雙核處理器為手持式移動(dòng)設(shè)備提供強(qiáng)有力的支持。對(duì)雙核通信模塊DSPLink的軟件架構(gòu)和在Linux嵌入式操作系統(tǒng)下的編譯加載進(jìn)行了分析和介紹,以消息隊(duì)列組件為例分析了ARM和DSP雙核通信時(shí)通道的建立和連接的方式。通過(guò)DSP/BIOS和Linux端DSPLink的MSGQ接口和多線程技術(shù),建立ARM和DSP消息傳遞通道,提供了在雙核開(kāi)發(fā)中對(duì)DSP端暗箱調(diào)試的解決方法。
關(guān)鍵詞:OMAPL138;雙核處理器;DSPLink;消息隊(duì)列;調(diào)試
1 雙核調(diào)試困難
雙核芯片的推出為兼顧強(qiáng)大的數(shù)據(jù)處理能力和良好的用戶體驗(yàn)提供了解決方案,將雙CPU集成在一個(gè)芯片上也簡(jiǎn)化了硬件電路設(shè)計(jì)的難度。但是,雙核開(kāi)發(fā)增加了軟件設(shè)計(jì)的難度。以往的ARM工程師與DSP算法工程師的明確分工已經(jīng)不能適用于雙核芯片的開(kāi)發(fā),需要在雙核芯片的同步運(yùn)行上提供一些解決方案。開(kāi)發(fā)工程師在進(jìn)行雙核開(kāi)發(fā)中會(huì)遇到調(diào)試方面的困難,以往的CCS和仿真器的調(diào)試方式已經(jīng)不適用于雙核環(huán)境下對(duì)DSP程序的調(diào)試。DSP端的程序運(yùn)行,無(wú)法直觀地提供調(diào)試信息給開(kāi)發(fā)者,相當(dāng)于一個(gè)“黑匣子”,以至于開(kāi)發(fā)者無(wú)法獲取DSP端寄存器和變量的變化情況。本文通過(guò)推出基于DSPLink軟件模塊的消息隊(duì)列組件,使DSP調(diào)試信息通過(guò)ARM端應(yīng)用程序打印。
2 雙核通信理論
TI公司推出的OMAP體系結(jié)構(gòu)與其推出的達(dá)芬奇結(jié)構(gòu)有相似之處,OMAP體系開(kāi)發(fā)套件與達(dá)芬奇套件有很大的相似性,而達(dá)芬奇處理器最具革命性的意義在于它的全平臺(tái)開(kāi)放。TI提供了全套開(kāi)發(fā)套件,給工程師們?cè)陂_(kāi)發(fā)上提供了便利性和規(guī)范。開(kāi)發(fā)套件中,基于雙核通信的底層為DSPLink模塊,為核心模塊。
2.1 DSPLink雙核通信構(gòu)架
在OMAP體系中,芯片設(shè)計(jì)時(shí),在片內(nèi)分配一塊RAM內(nèi)存區(qū)域,是ARM和DSP都可以直接使用的共享內(nèi)存區(qū)域。在小數(shù)據(jù)量的簡(jiǎn)單的控制信息通信時(shí),可以直接使用片內(nèi)的共享內(nèi)存,通信速率也是最快的。同時(shí)還有將共享內(nèi)存分配在片外的DDR,以便進(jìn)行大數(shù)據(jù)量的傳輸。
DSPLink為T(mén)I針對(duì)雙核通信的底層模塊,在ARM端和DSP端具有相似的作用,在ARM端Linux嵌入式操作系統(tǒng)中作為L(zhǎng)inux的內(nèi)核模塊存在,扮演著設(shè)備驅(qū)動(dòng)的角色,通過(guò)驅(qū)動(dòng)提供的眾多上層API接口直接操作共享內(nèi)存。在DSP端其連接的是TI推出的主要用于DSP的一款實(shí)時(shí)操作系統(tǒng)DSP/BIOS,同樣作為驅(qū)動(dòng)存在。采用DSPLink軟件方法將物理層抽象出來(lái),為硬件提供了十分優(yōu)秀的擬合,使ARM和DSP在通信上實(shí)現(xiàn)無(wú)縫的鏈接。
DSPLink的軟件構(gòu)架如圖1所示。
(1)在GPP端
GPP OS:在GPP端多采用操作系統(tǒng),比較常用的是嵌入式操作系統(tǒng)Linux和WinCE,TI的DVSDK中有相關(guān)的支持。
OS抽象層:OS抽象層包含了DSPLink需要的一些通用的OS服務(wù)部件,通過(guò)此層使DSPLink可以不依賴特定的操作系統(tǒng),從而可以利用接口特性更多地針對(duì)不同的操作系統(tǒng)使用,使開(kāi)發(fā)者方便地移植到不同操作系統(tǒng)中。
Link Driver:GPP端的驅(qū)動(dòng)層,該層提供了共享內(nèi)存的GPP端的驅(qū)動(dòng)。
Processor Manager:該層維護(hù)一個(gè)針對(duì)所有模塊的Book-Keeping信息,通過(guò)API給用戶提供通過(guò)Link Driver的控制操作。
DSP/BIOS Link:通過(guò)API可以脫離對(duì)底層的了解,直接操作共享內(nèi)存,以實(shí)現(xiàn)通信。
(2)在DSP端
DSP Link Driver:Link Driver是DSP/BIOS中驅(qū)動(dòng)的一部分,該部分驅(qū)動(dòng)只負(fù)責(zé)基于物理連接之上與GPP之間的交互。
DSP/BIOS:DSP端的實(shí)時(shí)操作系統(tǒng)。
2.2 MSGQ通信搭建方法
雙核通信的基本模式即是一方將所需要傳輸?shù)臄?shù)據(jù)放到共享內(nèi)存中,通過(guò)中斷的方式告知另一方。作為DSPLink中不同的通信模塊,存在的不同只是對(duì)共享內(nèi)存的組織方式不同。下面以MSGQ傳輸方式為例分析建立雙核通信構(gòu)架。
MSGQ表述消息隊(duì)列方式,主要針對(duì)ARM和DSP端可變長(zhǎng)度的短消息的交互,是基于DSP/BIOS的MSGQ模塊實(shí)現(xiàn)的。消息的發(fā)送/接收都要以隊(duì)列的方式進(jìn)行。消息的發(fā)送者將消息發(fā)送入隊(duì)列中,隨后接收者從隊(duì)列中將消息取出。每個(gè)消息隊(duì)列只能有一個(gè)接收者,但是可以同時(shí)有多個(gè)發(fā)送者。在一個(gè)任務(wù)中,可以進(jìn)行多個(gè)消息隊(duì)列的讀寫(xiě)。使用MSGQ進(jìn)行數(shù)據(jù)傳輸還需要用到另外兩個(gè)組件:
①PROC,在GPP應(yīng)用中模擬DSP角色,控制DSP程序的載入、運(yùn)行、停止。
②POOL,用于分配存儲(chǔ)器緩沖區(qū),將內(nèi)存合理分塊,使分配所需內(nèi)存適合傳輸數(shù)據(jù)的尺寸。
利用這兩個(gè)組件,將完成DSP程序的載入啟動(dòng)和內(nèi)存池的分配。
MSGQ通信流程如圖2所示。
linux相關(guān)文章:linux教程
評(píng)論