《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于OMAP3530硬件平臺的ARM和DSP協同開發方法
基于OMAP3530硬件平臺的ARM和DSP協同開發方法
來源:電子技術應用2013年第2期
林上升,韓潤萍
北京服裝學院 信息工程學院,北京100029
摘要: 以OMAP3530為硬件平臺,以DVSDK為軟件工具,介紹了協同開發環境的搭建方法。說明了OMAP3530中ARM和DSP協同開發的兩種方法,并對兩種方法的優缺點進行了比較。
中圖分類號: TP319
文獻標志碼: 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

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

    要使OMAP3530發揮ARM+DSP雙核架構的優勢,必須要使ARM和DSP協同工作。目前關于如何使ARM和DSP協同工作的參考資料不多,因此本文在研究實踐的基礎上,就如何搭建協同開發環境以及ARM和DSP協同開發方法進行了說明。
1 開發環境的搭建
1.1 PC端系統的搭建

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

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

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

    DSP端的算法程序開發一般有兩種:
    (1)在Windows的CCS下直接開發DSP端運行的程序,然后打包成固定的格式,使其能夠被Codec Engine調用。這種方法的優點是能夠通過優化程序最大限度地提高DSP的運行效率。目前大多數DSP雖然都支持C語言編程,但是在實際工程應用中,具體的算法模塊以及比較耗時的功能模塊還是采用匯編語言來編寫。這是因為C語言雖然具有易讀性、可移植性等優點,但是它不便于對系統硬件資源的直接控制,無法發揮DSP自身的特點,無法充分利用DSP系統結構中有限的資源。特別是在硬實時性系統中,用匯編語言進行編程可利用DSP自身硬件結構的特點對匯編程序進行優化和精簡,往往能夠使一些復雜的算法及功能模塊在實時性方面取得非常好的效果。但是這種方法也有其缺點,那就是算法程序的可移植性非常差,基本上針對每一個應用都要開發不同的DSP程序,這是比較致命的問題。
    (2)通過DVSDK開發套件在宿主機上直接開發算法程序,其開發方法遵照TI公司制訂的基于eXpressDSP算法互用性標準。這種方法雖然會使DSP的運行效率受到一定影響,但為系統的整體性能和二次開發提供了可靠的保證。下面以示例程序來說明其開發方法。
    ①進入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端的程序,該程序實現了將ARM端讀進的in.bmp圖像拷貝成當前目錄下的out.bmp圖像的功能。
 

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

 

 

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美在线伊人 | 国产免费麻豆 | 日韩中文字幕在线播放 | 色综合天天操 | 高h喷水荡肉爽文各种场合 高h喷水荡肉爽文np欲 | 久草色视频| 最近2019的中文字幕免费 | 久久伊人中文字幕有码 | 各类毛片| 在线观看的黄网 | 亚洲色图制服诱惑 | 综合玖玖 | 福利片 在线 | 日本三级特黄在线观看 | 在线观看91精品国产性色 | 成在线视频 | 波多野衣结在线精品二区 | 成人a级高清视频在线观看 成人a大片在线观看 | 中国xxxx视频播放50 | 成人在色线视频在线观看免费大全 | 一区二区三区日韩 | 国产人成午夜免费噼啪视频 | 国产欧美日韩高清专区手机版 | 国产一区二区三区四卡 | 日韩中文精品亚洲第三区 | a级精品九九九大片免费看 a级精品国产片在线观看 | 国产日产欧产美一二三区 | 亚洲国产日韩综合久久精品 | 一个人看www在线观看免费视频 | 久久99免费视频 | 中文字幕精品在线视频 | 久久影视一区 | 欧美成人久久一级c片免费 欧美成人看片 | 亚洲日韩视频 | 亚洲欧美高清在线 | 亚洲视频在线一区二区 | 天天天天天天操 | 日韩免费高清视频 | 久久天天躁狠狠躁狠狠躁 | 性欧美人与zozoxxxx视频 | 国产一区精品在线 |