《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于OMAP3530硬件平臺的ARM和DSP協(xié)同開發(fā)方法
基于OMAP3530硬件平臺的ARM和DSP協(xié)同開發(fā)方法
來源:電子技術(shù)應(yīng)用2013年第2期
林上升,韓潤萍
北京服裝學(xué)院 信息工程學(xué)院,北京100029
摘要: 以O(shè)MAP3530為硬件平臺,以DVSDK為軟件工具,介紹了協(xié)同開發(fā)環(huán)境的搭建方法。說明了OMAP3530中ARM和DSP協(xié)同開發(fā)的兩種方法,并對兩種方法的優(yōu)缺點(diǎn)進(jìn)行了比較。
關(guān)鍵詞: DSP OMAP3530 ARM DVSDK CodecEngine
中圖分類號: TP319
文獻(xiàn)標(biāo)志碼: A
文章編號: 0258-7998(2013)02-0006-03
Development methods of establishing cooperation between ARM and DSP based on OMAP3530 hardware platform
Lin Shangsheng,Han Runping
School of Information Engineering, Beijing Institute of Fashion Technology, Beijing 100029,China
Abstract: Taking OMAP3530 as the hardware platform and DVSDK as software tools, this paper introduces how to establish the development environment in order to make ARM and DSP work cooperatively, especially expounds two development methods for establishing cooperation between ARM and DSP. The advantages and disadvantages of two development methods are pointed out in this paper.
Key words : OMAP3530;ARM;DSP;DVSDK;Codec Engine

    目前市場上有良好控制功能的處理器很多,但是這些處理器大多在數(shù)據(jù)處理能力方面略顯不足。因此,美國德州儀器(TI)公司于2009推出了一款多核處理器OMAP3530,它采用了600 MHz ARM Cortex-A8內(nèi)核與420 MHz TMS320C64+TM DSP雙核結(jié)構(gòu)[1-2]。由于ARM在工業(yè)控制方面具有很大的優(yōu)勢以及DSP具有良好的數(shù)據(jù)處理能力,所以O(shè)MAP3530在嵌入式系統(tǒng)的應(yīng)用開發(fā)方面有著廣泛的應(yīng)用前景和技術(shù)潛力。

    要使OMAP3530發(fā)揮ARM+DSP雙核架構(gòu)的優(yōu)勢,必須要使ARM和DSP協(xié)同工作。目前關(guān)于如何使ARM和DSP協(xié)同工作的參考資料不多,因此本文在研究實(shí)踐的基礎(chǔ)上,就如何搭建協(xié)同開發(fā)環(huán)境以及ARM和DSP協(xié)同開發(fā)方法進(jìn)行了說明。
1 開發(fā)環(huán)境的搭建
1.1 PC端系統(tǒng)的搭建

    OMAP3530幾乎支持所有嵌入式操作系統(tǒng)(例如WinCE、Symbian OS、EPOC、Linux等),由于大部分嵌入式操作系統(tǒng)都要收費(fèi),所以這里采用Linux系統(tǒng),它不僅應(yīng)用廣泛,而且免費(fèi)和開源。
    為了能夠開發(fā)OMAP3530,首先要搭建開發(fā)環(huán)境,在PC端,需要安裝虛擬機(jī)VMware Workstation,配置超級終端;然后在虛擬機(jī)上安裝Linux操作系統(tǒng)。除此之外,還需要在Linux系統(tǒng)上安裝交叉編譯器、NFS服務(wù)器、FTP服務(wù)器等一些必要的開發(fā)工具。
1.2 OMAP3530系統(tǒng)啟動方式及分析
    OMAP3530上運(yùn)行的Linux系統(tǒng)的組成結(jié)構(gòu)如圖1所示。其中,x-loader是一級引導(dǎo)程序,主要作用是初始化CPU和拷貝u-boot到內(nèi)存中運(yùn)行[3],然后把控制權(quán)交給u-boot。u-boot為二級引導(dǎo)程序,主要用于與用戶進(jìn)行交互,以及提供鏡像更新、引導(dǎo)內(nèi)核等功能。kernel為Linux內(nèi)核,是操作系統(tǒng)的核心,負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。rootfs為根文件系統(tǒng),在嵌入式Linux操作系統(tǒng)中,文件系統(tǒng)作為操作系統(tǒng)的重要組成部分,用于控制對數(shù)據(jù)文件及設(shè)備的存取,并提供對文件和目錄的分層組織形式、數(shù)據(jù)緩沖以及對文件存取權(quán)限的控制。根文件系統(tǒng)是Linux系統(tǒng)不可或缺的組件,在嵌入式Linux中,內(nèi)核在啟動期間,必須調(diào)用根文件系統(tǒng)才能啟動。Linux系統(tǒng)將自身劃分為兩部分,一部分為核心軟件,即kernel(也稱作內(nèi)核空間);另一部分為普通應(yīng)用程序,這部分稱為用戶空間(user area)。

    可以通過配置及編譯x-loader、u-boot、kernel、busybox源碼文件來獲得OMAP3530所需的鏡像文件,然后把鏡像文件拷貝進(jìn)SD卡,這樣就可通過SD卡啟動Linux系統(tǒng)。
    為了便于開發(fā),通常使用交叉網(wǎng)線連接PC和OMAP3530開發(fā)板,然后通過由NFS掛載根文件系統(tǒng)的方法來啟動Linux系統(tǒng)。該方法的好處是能直接在虛擬機(jī)中修改OMAP3530端Linux的文件系統(tǒng),就可以直接在PC上開發(fā)OMAP3530端的程序。
2 搭建ARM與DSP之間的橋梁
2.1 DVSDK簡介

    為了使ARM與DSP建立連接,TI公司推出了DVSDK(Digital Video Software Development Kit)軟件開發(fā)包,它集成了多種軟件工具,包括支持獨(dú)立DSP處理器和ARM處理器組件以及雙核系統(tǒng)交互組件,各個組件之間緊密聯(lián)系,形成了完整的開發(fā)套件[4-5]。DVSDK部分軟件模塊介紹如下。
    (1)DSP/BIOS for Linux:是一個可擴(kuò)縮的實(shí)時DSP核,可以理解為在DSP端獨(dú)立運(yùn)行的實(shí)時系統(tǒng)。
    (2)TI Codegen Tools for Linux:是Linux環(huán)境下DSP程序的編譯器、連接器及相關(guān)工具,類似于Windows環(huán)境下的CCS軟件(在Windows環(huán)境下的CCS軟件用來編譯和調(diào)試DSP程序)。
    (3)Framework Component:負(fù)責(zé)DSP端的Memory和DMA資源管理。
    (4)xDAIS:定義了DSP算法接口的標(biāo)準(zhǔn)。
    (5)DSP/BIOS Link:是實(shí)現(xiàn)ARM和DSP之間通信的底層軟件。
    (6)Codec Engine:是DVSDK的核心,所有其他軟件模塊基本上都是圍繞Codec Engine來設(shè)計(jì)的。
2.2 DVSDK的安裝與編譯
    首先要在虛擬機(jī)上的Linux系統(tǒng)中安裝DVSDK軟件包。DVSDK軟件包可以從TI公司的官方網(wǎng)站上獲取,軟件包獲取后執(zhí)行如下命令即可實(shí)現(xiàn)其安裝:
    ./ dvsdk_setuplinux_3_01_00_10.bin
    完成安裝后會生成一個文件夾,里面包含了所有DVSDK軟件模塊。然后還需要對DVSDK內(nèi)部的一些文件進(jìn)行配置,主要的配置是指定各個模塊編譯所需要的編譯工具以及相應(yīng)目錄的相對位置,配置好以后就可以對各個模塊進(jìn)行編譯。
    編譯成功后,在DVSDK相應(yīng)的目錄下會生成cmem.ko(內(nèi)存管理模塊)、dsplink.ko(ARM與DSP連接模塊)、lpm_omap3530.ko(電源管理模塊)等內(nèi)核模塊。為了使ARM與DSP建立連接,必須要有DSPLINK模塊的支持,系統(tǒng)需要通過DSPLINK來完成ARM與DSP端之間底層的數(shù)據(jù)通信。DSPLINK提供了一套通用的API,從應(yīng)用層抽象出ARM與DSP的物理連接特性,從而降低用戶開發(fā)程序的難度。
2.3 內(nèi)存的分配
    由于ARM端運(yùn)行的是Linux操作系統(tǒng),DSP端運(yùn)行的是DSP/BIOS操作系統(tǒng),為了使兩個系統(tǒng)協(xié)同工作,兩者之間需要開辟一塊ARM端和DSP端共享的內(nèi)存空間。這部分的工作由CMEM來完成,所以在加載cmem.ko時,需要對其進(jìn)行內(nèi)存分配設(shè)置。CMEM還能夠?qū)?nèi)存的物理地址轉(zhuǎn)化為操作系統(tǒng)能夠識別的虛擬地址,避免了操作系統(tǒng)對物理地址的直接訪問。這樣無論是Linux操作系統(tǒng)還是DSP/BIOS操作系統(tǒng)都是通過CMEM對內(nèi)存進(jìn)行管理。
    加載完上述各個功能模塊后就可以開發(fā)可供ARM端調(diào)用的DSP程序。
3 供ARM端調(diào)用的DSP程序的開發(fā)
    為了開發(fā)可供ARM端調(diào)用的DSP程序,必須了解Codec Engine。Codec Engine是連接ARM和DSP協(xié)處理器的橋梁,是介于應(yīng)用層(ARM端的應(yīng)用程序)和信號處理層(DSP端的算法程序)之間的軟件模塊。在編譯DSP端和ARM端程序時,都需要Codec Engine的支持。當(dāng)ARM端應(yīng)用程序調(diào)用Codec Engine的VISA(Video,Image,Speech,Audio)API,例如圖2中VIDENC_process(a,b,c)時,Codec Engine的stub(ARM端)會把參數(shù)a、b、c以及要調(diào)用DSP端的process信息打包,通過消息隊(duì)列(message queue)傳遞到DSP。Codec Engine的skeleton(DSP端)會解開這個參數(shù)包,把參數(shù)a、b、c轉(zhuǎn)換成DSP端對應(yīng)的參數(shù)x、y、z;DSP端的server會根據(jù)process這一信息創(chuàng)建一個DSP端的process(x,y,z)任務(wù),最終實(shí)現(xiàn)VIDENC_process(a,b,c)的操作。

    DSP端的算法程序開發(fā)一般有兩種:
    (1)在Windows的CCS下直接開發(fā)DSP端運(yùn)行的程序,然后打包成固定的格式,使其能夠被Codec Engine調(diào)用。這種方法的優(yōu)點(diǎn)是能夠通過優(yōu)化程序最大限度地提高DSP的運(yùn)行效率。目前大多數(shù)DSP雖然都支持C語言編程,但是在實(shí)際工程應(yīng)用中,具體的算法模塊以及比較耗時的功能模塊還是采用匯編語言來編寫。這是因?yàn)镃語言雖然具有易讀性、可移植性等優(yōu)點(diǎn),但是它不便于對系統(tǒng)硬件資源的直接控制,無法發(fā)揮DSP自身的特點(diǎn),無法充分利用DSP系統(tǒng)結(jié)構(gòu)中有限的資源。特別是在硬實(shí)時性系統(tǒng)中,用匯編語言進(jìn)行編程可利用DSP自身硬件結(jié)構(gòu)的特點(diǎn)對匯編程序進(jìn)行優(yōu)化和精簡,往往能夠使一些復(fù)雜的算法及功能模塊在實(shí)時性方面取得非常好的效果。但是這種方法也有其缺點(diǎn),那就是算法程序的可移植性非常差,基本上針對每一個應(yīng)用都要開發(fā)不同的DSP程序,這是比較致命的問題。
    (2)通過DVSDK開發(fā)套件在宿主機(jī)上直接開發(fā)算法程序,其開發(fā)方法遵照TI公司制訂的基于eXpressDSP算法互用性標(biāo)準(zhǔn)。這種方法雖然會使DSP的運(yùn)行效率受到一定影響,但為系統(tǒng)的整體性能和二次開發(fā)提供了可靠的保證。下面以示例程序來說明其開發(fā)方法。
    ①進(jìn)入DVSDK安裝后生成目錄/dvsdk_3_01_00_10/codec_engine_2_25_02_11/examples/ti/sdo/ce/examples/codecs/imgdec_copy,如圖3所示。該目錄下的程序是DVSDK提供的示例程序,其中imgdec_copy.c是DSP端的程序,該程序?qū)崿F(xiàn)了將ARM端讀進(jìn)的in.bmp圖像拷貝成當(dāng)前目錄下的out.bmp圖像的功能。
 

    ③編譯ARM端的程序。進(jìn)入ARM端應(yīng)用程序目錄/dvsdk_3_01_00_10/codec_engine_2_25_02_11/examples/ti/sdo/ce/examples/apps/image_copy,如圖7所示。該目錄下app.c是在ARM端運(yùn)行的應(yīng)用程序,該程序的主要功能就是從當(dāng)前目錄讀取in.bmp文件,然后調(diào)用DSP端的程序,讓DSP去實(shí)現(xiàn)圖像拷貝。對該程序進(jìn)行編譯(執(zhí)行make命令),編譯完成后會在該目錄的bin子目錄下生成ARM端的應(yīng)用程序app_remote.xv5T,如圖8所示。

 

 

    本文闡述了OMAP3530中兩種ARM和DSP協(xié)同開發(fā)方法,并對其進(jìn)行了比較。一種方法是在CCS下直接開發(fā)DSP端的算法程序,其優(yōu)點(diǎn)是能夠通過優(yōu)化算法程序最大限度地提高DSP端數(shù)字信號處理的效率,缺點(diǎn)是算法程序的可移植性差。另一種方法是利用DVSDK開發(fā)套件開發(fā)算法程序,其優(yōu)點(diǎn)是算法的可移植性好,能夠有效縮短開發(fā)周期,但是無法對DSP端運(yùn)行的算法程序進(jìn)行實(shí)時在線調(diào)試,而且DSP多流水線處理方式的優(yōu)勢難以得到充分發(fā)揮,所以算法程序也并不是最優(yōu)化的。在實(shí)際開發(fā)中,可以根據(jù)具體的情況選擇一種開發(fā)方法。
參考文獻(xiàn)
[1] 冼進(jìn),畢盛.基于OMAP3530雙核的嵌入式系統(tǒng)實(shí)驗(yàn)平臺設(shè)計(jì)[J].信息系統(tǒng)工程,2010(7):72-73.
[2] 王偉,劉培德.OMAP3530平臺移動多媒體的視頻解碼方案[J].單片機(jī)與嵌入式系統(tǒng),2010(6):31-34.
[3] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2010.
[4] 張起貴,張勝,張剛.最新DSP技術(shù)[M].北京:國防工業(yè)出版社,2009.
[5] 紀(jì)震,曾啟明.OMAP3原理及系統(tǒng)設(shè)計(jì)[M].北京:科學(xué)出版社,2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。