俞 靜, 袁三男
(上海電力學(xué)院 電子與信息工程學(xué)院, 上?!?00090)
?
基于OMAPL138雙核通信的測試與實現(xiàn)
俞靜, 袁三男
(上海電力學(xué)院 電子與信息工程學(xué)院, 上海200090)
摘要:通過分析雙核處理器OMAPL138的雙核架構(gòu)、雙核通信組件DSPLINK,以及基本數(shù)據(jù)流的概念,構(gòu)建了雙核通信中基本數(shù)據(jù)流的傳輸流程,并搭建了基于Linux系統(tǒng)的嵌入式交叉編譯開發(fā)平臺,測試實現(xiàn)了通用處理器端任務(wù)和數(shù)字信號處理器端任務(wù)的數(shù)據(jù)傳輸.
關(guān)鍵詞:嵌入式系統(tǒng); 雙核通信; 數(shù)據(jù)流; 數(shù)字信號處理器
隨著科學(xué)技術(shù)的發(fā)展和社會的進步,嵌入式技術(shù)在電子產(chǎn)品和通信領(lǐng)域中的地位日趨提高.嵌入式產(chǎn)品廣泛應(yīng)用于通信、醫(yī)療、娛樂、軍事等重要領(lǐng)域.隨之對嵌入式系統(tǒng)的性能要求也越來越高.嵌入式系統(tǒng)也正朝著高效性、穩(wěn)定性、可靠性、節(jié)能性的方向發(fā)展[1].OMAPL138就是TI公司推出的一款高性能、低功耗的嵌入式雙核處理器,已廣泛應(yīng)用于對講機、廣播電視監(jiān)控等.OMAPL138的雙核芯片設(shè)計降低了硬件電路設(shè)計的難度,增強了數(shù)據(jù)處理能力,但也給雙核開發(fā)的軟件設(shè)計帶來了難度[1-2].本文通過DSP/BIOS和Linux端DSPLINK(“DSP/BIOS LINK”的簡稱)技術(shù),建立ARM(高級精簡指令集計算機)端和DSP(數(shù)字信息處理器)端數(shù)據(jù)傳遞通道,實現(xiàn)了簡單數(shù)據(jù)流的傳輸.
1OMAPL138雙核架構(gòu)特點
OMAPL138雙核架構(gòu)兼具DSP的高數(shù)字信號處理性能和精簡指令計算機(RISC)技術(shù)的優(yōu)點,采用一個高性能的 TMS320C674x DSP內(nèi)核和 ARM926EJ-S 內(nèi)核,因此OMAPL138結(jié)合了ARM 和DSP處理器的優(yōu)點[2].共享內(nèi)存、中斷控制和DSPLINK組件的完美設(shè)計解決了OMAPL138雙核間通信的問題.
1.1OMAPL138通信流程
OMAPL138板上集成了豐富的外設(shè)資源,并且通過外設(shè)與內(nèi)存統(tǒng)一編址[3-4].板上的外設(shè)資源除小部分僅ARM和DSP單獨享用,其余外設(shè)資源均可以被ARM和DSP共享.RAM和DDR(片外)通常作為共享內(nèi)存區(qū)域,RAM通常用于存放小數(shù)量的控制信息傳輸,DDR則用于大數(shù)量的通信傳輸[5].共享內(nèi)存為OMAPL138的雙核間通信提供了良好基礎(chǔ).OMAPL138系統(tǒng)配置模塊中共增加了7個中斷,其中,DSP響應(yīng)中斷3個,ARM響應(yīng)中斷4個.OMAPL138雙核間通信通過中斷來控制.例如:ARM在RAM中寫入命令或是在DDR中寫入傳輸數(shù)據(jù),再向DSP端發(fā)出對應(yīng)的中斷信號,DSP在接收到中斷信號后,從共享內(nèi)存中讀取數(shù)據(jù)或命令,按中斷的優(yōu)先級做出相應(yīng)的處理,完成后再中斷通知ARM,最終完成了雙核通信.如圖1所示.
1.2DSPLINK簡介
DSPLINK是進行雙核通信的驅(qū)動程序,也是雙核通信中最關(guān)鍵的部分[6].為了減小開發(fā)的難度,對DSPLINK雙核的物理連接進行虛擬化處理,并提供了一整套的應(yīng)用程序編程接口[7].DSPLINK的軟件架構(gòu)如圖2所示.
1.2.1GPP(通用處理器)端和DSP端
GPP是指和DSP端通信的通用處理器.DSPLINK中GPP端由GPP OS,OS抽象層,Link Driver,Processor Manager,DSP/BIOS Link API組成.Linux操作系統(tǒng)是本實驗的GPP OS.OS抽象層主要負責提供其他組件訪問的應(yīng)用程序接口和一些常用的操作系統(tǒng)服務(wù)組件.Link Driver是指鏈接驅(qū)動層,在雙核間數(shù)據(jù)傳輸和DSP工作中發(fā)揮著重要作用.Processor Manager為進程管理單元,主要幫助用戶控制連接驅(qū)動層和維護信息.GPP端的最上層就是接口層,通過接口可以更好地訪問GPP端,給用戶開發(fā)帶來便利.
DSPLINK中DSP端由DSP/BIOS,Link Driver和其他驅(qū)動組成,其中DSP/BIOS指DSP端的一個實時的輕量級操作系統(tǒng).與GPP端的鏈接驅(qū)動層不同,DSP端的連接驅(qū)動層只負責在物理連接成功的狀態(tài)下和GPP端的交互.
1.2.2相關(guān)組件
GPP端中DSPLINK包含了PROC,CHNL,MSGQ,POOL,NOTIFY,MPCS,MPLIST,RINGIO等重要組件[8].本文中使用了其中的PROC,CHNL,POOL這3個DSPLINK組件.
(1) PROC組件可以對DSP的空間進行直接操作,讀寫DSP端的地址空間,控制DSP端的程序運行.PROC_setup()初始化DSP,PROC_attach()按照規(guī)定的處理器的ID號與指定的DSP鏈接,PROC_load()將編譯好的程序載入DSP中.
(2) CHNL組件主要負責ARM端和DSP端的數(shù)據(jù)傳送,是一個邏輯數(shù)據(jù)傳輸通道,采用issue-reclaim模式進行數(shù)據(jù)傳送.
(3) POOL 組件主要用于配置共享內(nèi)存,提供相關(guān)應(yīng)用程序接口.
1.3開發(fā)環(huán)境搭建
良好的開發(fā)環(huán)境是雙核通信測試中必不可少的部分[9].本實驗操作系統(tǒng)為Linux系統(tǒng),其開發(fā)流程如圖3所示.測試前需要在PC機上安裝虛擬機和Linux系統(tǒng),將OMAPL138開發(fā)板和PC機用串口線、網(wǎng)線等連接好.待軟硬件就緒后,在虛擬機上建立存放GPP端和DSP端的程序的文件夾,并將該文件夾下載到開發(fā)板上.進入開發(fā)板目錄安裝驅(qū)動程序dsplink.ko.準備就緒即可開始測試.
2基本數(shù)據(jù)流傳輸測試
在信息技術(shù)高速發(fā)展的今天,數(shù)據(jù)流作為一種高速、海量的數(shù)據(jù)形式出現(xiàn)在實際應(yīng)用領(lǐng)域中[10].數(shù)據(jù)流通常被定義為只能以事先規(guī)定好的順序被讀取一次的數(shù)據(jù)序列,其在通信中代表“所使用的信息的數(shù)字編碼信號序列”[10].由于數(shù)據(jù)流簡單、方便,其在傳輸測試的應(yīng)用十分廣泛.本文將傳輸?shù)膬?nèi)容定義為簡單數(shù)據(jù)流序列0x47,在基于OMAPL138的嵌入式開發(fā)平臺下,通過DSPLINK開發(fā)組件的應(yīng)用,進行GPP端與DSP端的傳輸測試.其中,DSP端應(yīng)用程序采用SIO(流輸入輸出)來實現(xiàn)任務(wù)傳輸.
2.1GPP端
本實驗中,GPP端就是ARM端.GPP端只要將DSPLINK組件初始化,將定義好的簡單的數(shù)據(jù)流發(fā)送給DSP端并保存,待DSP端接收并返回傳輸內(nèi)容后,進行比較,再清除釋放內(nèi)存.GPP端是通過調(diào)用不同模塊的功能函數(shù)來實現(xiàn)不同的功能,具體流程如圖4所示.
2.1.1準備
(1) 首先設(shè)置DSP的狀態(tài)變量DSP_STATUS,根據(jù)狀態(tài)變量判斷DSP的狀態(tài)是否正常,這將直接影響到后面的操作.
(2) 設(shè)置用于數(shù)據(jù)傳輸測試的GPP端緩沖區(qū)的大小和循環(huán)的次數(shù).為了解決某種型號的一個CPU可以有幾個內(nèi)核DSP的問題,必須明確指定出其ID號,這樣就解決了多內(nèi)核帶來的混淆不清的問題.在本文中只用了一個DSP內(nèi)核,所以ID均被默認為零.
2.1.2創(chuàng)建
(1) 創(chuàng)建和初始化PROC組件,PROC是表述應(yīng)用空間的DSP處理器.
(2) 根據(jù)DSP的ID號連接到指定的DSP,建立起GPP端與DSP端的聯(lián)系.
(3) 打開共享內(nèi)存池.使用內(nèi)存池不會產(chǎn)生或很少產(chǎn)生堆碎片,可以避免內(nèi)存泄漏,并比malloc或free的內(nèi)存申請和釋放更快.
(4) 將編譯好的DSP程序下載到DSP中,等待DSP處理.
(5) 創(chuàng)建用于數(shù)據(jù)通信的通道.由于CHNL(數(shù)據(jù)傳輸?shù)耐ǖ?組件無方向性,通道方向可以配置,必須建一個通往DSP通道和一個反方向的通道.
(6) 根據(jù)DSP的ID號分配一塊用于DSP數(shù)據(jù)傳輸?shù)木彌_區(qū).
(7) 最后,初始化帶有效數(shù)據(jù)的緩沖區(qū)并返回狀態(tài)值.
2.1.3執(zhí)行
(1) 根據(jù)DSP的ID號開始運行DSP.
(2) 創(chuàng)建一個數(shù)組填寫用于數(shù)據(jù)傳輸?shù)臄?shù)據(jù),并且設(shè)定大小.
(3) 循環(huán)發(fā)送數(shù)據(jù)到指定DSP,接受來自DSP的數(shù)據(jù),并將接收到的數(shù)據(jù)和原來的數(shù)據(jù)進行校驗以檢測傳輸?shù)恼_性.
(4) 最后,返回本過程的狀態(tài)值.
2.1.4釋放內(nèi)存
由于過多的占用內(nèi)存空間,會引起內(nèi)存泄漏,程序運行時間越長,占用存儲空間越多,最終造成整個系統(tǒng)清除崩潰.為了避免這種情況的發(fā)生,要在執(zhí)行步驟完成后釋放內(nèi)存.
2.2DSP端
本實驗中,DSP端主要進行數(shù)據(jù)的接收、處理以及將處理后的數(shù)據(jù)返回給GPP端,在DSP端采用了流輸入輸出型(SIO)實現(xiàn)DSP/BIOS線程中的任務(wù).具體流程如圖5所示.
(1) 定義任務(wù)模式TSK.TSK模式遵循“先來先服務(wù)”的原則,任務(wù)的優(yōu)先級低于軟中斷.
(2) 初始化中斷服務(wù)子程序ISR和DSP/BIOS LINK.
(3) 確定傳輸次數(shù)和大小.
(4) 執(zhí)行任務(wù)模式.首先,動態(tài)創(chuàng)建IOM硬件設(shè)備驅(qū)動模塊和DIO適配模塊.IOM是DSP/BIOS的設(shè)備驅(qū)動模塊的一種接口方式,其根據(jù)輸入輸出方式的不同,有不同的類驅(qū)動程序.本文中采用流輸入輸出型SIO方式.DIO適配模塊主要負責信號同步和緩沖管理等.然后定義數(shù)據(jù)結(jié)構(gòu),創(chuàng)建SIO輸入輸出流.其次,分配緩沖區(qū),接收處理數(shù)據(jù)并將處理后的數(shù)據(jù)送回給GPP端.最后,釋放內(nèi)存緩沖區(qū).
2.3實驗結(jié)果
本實驗在SDK(軟件開發(fā)工具包)提供的范例基礎(chǔ)上加以調(diào)整和更改,最終通過不斷調(diào)試,實現(xiàn)了雙核間的簡單數(shù)據(jù)流通信,通信效果良好.但在測試過程中經(jīng)常會遇上開發(fā)板無法成功啟動的情況,uboot和Kernel都無法啟動.經(jīng)過研究發(fā)現(xiàn)問題是系統(tǒng)沒有配置好,在uboot要起來的時候敲命令printenv查看,然后重新配置系統(tǒng),特別要注意IP地址的配置.
3結(jié)語
本文對OMAPL138中DSPLINK雙核通信系統(tǒng)架構(gòu)進行了分析,詳細概述了雙核通信的基本傳輸流程,并搭建了基于Linux系統(tǒng)的嵌入式交叉編譯平臺,利用簡單數(shù)據(jù)流的易操作特點和DSP端流輸入輸出SIO模塊完成了基于DSPL-INK的GPP端和DSP端的數(shù)據(jù)傳輸任務(wù).實驗結(jié)果表明,雙核通信效果良好,這一技術(shù)具有較高的實用價值和應(yīng)用前景.
參考文獻:
[1]朱敏.基于OMAP平臺DMR數(shù)字集群直通模式實現(xiàn)[D].成都:電子科技大學(xué),2012.
[2]劉紀紅,葉檸,尚奎.DSP+ARM雙核處理器OMAPL138開發(fā)入門[M].北京:清華大學(xué)出版社,2013:5-21.
[3]郭睿,林巖.OMAPL138和FPGA的合并單元設(shè)計方案[J].單片基于嵌入式系統(tǒng)應(yīng)用,2012(11):49-52.
[4]羅澤雄.基于OMAP平臺的水聲通信網(wǎng)絡(luò)協(xié)議實現(xiàn)研究[D].哈爾濱:哈爾濱工程大學(xué),2013.
[5]趙加祥.DSP系統(tǒng)設(shè)計和BIOS編程及應(yīng)用實例[M].北京:機械工業(yè)出版社,2008:14-23.
[6]翟巍,劉成,田永春.基于OMAPL138芯片的無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計[J].通信技術(shù),2014(2):221-225.
[7]岳仁超,孫建東,劉曉銘.基于OMAPL138智能臺區(qū)終端的設(shè)計[J].自動化與儀器儀表,2014(5):44-49.
[8]HENZINGER M R,RAGHAVAN P,RAJAGOPALAN S.Computing on data streams[C]∥External Memory Algorithms.American Mathematical Society,1999:107-118.
[9]李心陽,唐厚君.基于OMAPL138的電能質(zhì)量監(jiān)測系統(tǒng)的設(shè)計[J].微計算機信息,2011(6):78-80.
[10]李培培.數(shù)據(jù)流中概念漂檢測與分類方法研究[D].合肥:合肥工業(yè)大學(xué),2012.
(編輯桂金星)
Test and Realization of Dual-core Communication Based on OMAPL138YU Jing, YUAN Sannan
(School of Electronics and Information Engineering, Shanghai University of
Electric Power, Shanghai200090, China)
Abstract:By analyzing OMAPL138 dual-core architecture,dual-core communication component DSPL-INK and the basic concept of data streams,the basic data stream transmission process is constructed between dual-corecommunication.On the basis of the system of Linux,the embedded cross-compilation development platform is established.By testing,the task of data transmission between digital signal processor task and general processor is realized.
Key words:embedded system; dual-core communication; data stream; digital signal processor
中圖分類號:TP332
文獻標志碼:A
文章編號:1006-4729(2016)01-0061-05
通訊作者簡介:袁三男(1967-),男,博士,副教授,江蘇蘇州人.主要研究方向為通信與信息系統(tǒng),流媒體網(wǎng)絡(luò),數(shù)字電視,嵌入式系統(tǒng).E-mail:samuel.yuan@shiep.edu.cn.
收稿日期:2015-06-08
DOI:10.3969/j.issn.1006-4729.2016.01.014