《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于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網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品日韩专区| 亚洲欧洲一区二区在线观看| 噜噜噜在线观看免费视频日韩| 亚洲欧美中文在线视频| 日韩一级在线| 亚洲老板91色精品久久| 亚洲黄页一区| 亚洲国产精品久久久久婷婷老年| 欧美在线免费观看视频| 香蕉成人伊视频在线观看 | 亚洲黄色小视频| 在线不卡视频| …久久精品99久久香蕉国产| 一区二区三区自拍| 伊人激情综合| 亚洲高清三级视频| 91久久精品国产91久久性色| 亚洲日本va在线观看| 亚洲精品欧美极品| 日韩午夜在线播放| 一区二区日韩欧美| 亚洲少妇一区| 亚洲在线免费视频| 欧美亚洲三区| 久久精品人人做人人综合| 亚洲第一视频| 99国产成+人+综合+亚洲欧美| 日韩午夜激情| 亚洲在线电影| 久久精品三级| 免费精品视频| 欧美日韩91| 国产精品免费在线| 国产日韩欧美二区| 精品成人一区二区三区四区| 亚洲国产91| 一本高清dvd不卡在线观看| 亚洲一区三区在线观看| 欧美在线关看| 亚洲精品久久久久久下一站| 一区二区三区www| 性欧美长视频| 免费成人高清视频| 欧美三级视频| 国产一区亚洲一区| 亚洲第一久久影院| 999亚洲国产精| 性久久久久久久| 亚洲精品一区在线| 亚洲欧美文学| 乱人伦精品视频在线观看| 欧美日韩99| 国产欧美一区二区三区在线老狼 | 亚洲国产精品v| 夜夜嗨av一区二区三区四季av| 亚洲一区二区视频| 亚洲国产经典视频| 亚洲自拍偷拍福利| 蜜臀久久久99精品久久久久久| 欧美色区777第一页| 国产视频久久网| 亚洲人成高清| 午夜日韩在线观看| 99香蕉国产精品偷在线观看| 欧美在线日韩精品| 欧美精品入口| 国产亚洲一区二区三区在线播放| 亚洲国产欧美一区二区三区同亚洲| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲国产精品精华液网站| 亚洲免费视频一区二区| 久久综合一区二区三区| 国产精品qvod| 亚洲国产精品久久久久秋霞影院| 亚洲视频在线观看网站| 最新国产乱人伦偷精品免费网站 | 亚洲欧洲日本mm| 欧美一级视频一区二区| 欧美激情中文字幕在线| 国产一区91| 一区二区免费在线视频| 亚洲国产日韩在线一区模特| 午夜欧美大片免费观看| 欧美日本精品| 一区二区三区在线视频免费观看| 亚洲尤物在线| 亚洲视频在线观看| 欧美福利小视频| 韩国三级电影一区二区| 亚洲一区在线免费观看| 99精品久久久| 毛片一区二区三区| 国产午夜精品福利| 中文在线不卡视频| 亚洲狼人综合| 欧美r片在线| 狠狠色2019综合网| 亚洲欧美日韩国产| 亚洲一区二区三区影院| 欧美精品久久久久久久免费观看| 国内精品久久国产| 亚洲欧美高清| 亚洲欧美激情一区二区| 欧美日韩二区三区| 亚洲国产精品一区二区第四页av| 欧美在线|欧美| 欧美一区三区二区在线观看| 国产精品久久久久久久久久久久| 日韩视频在线一区二区三区| 亚洲国产一区二区三区高清| 久久久福利视频| 国产日韩在线一区二区三区| 亚洲欧美激情精品一区二区| 亚洲性人人天天夜夜摸| 欧美日韩国产精品一区二区亚洲| 在线成人av.com| 亚洲国产欧美一区| 另类图片综合电影| 精品999成人| 亚洲国产成人不卡| 蜜臀99久久精品久久久久久软件| 一区二区亚洲精品国产| 久久精品国产999大香线蕉| 久久精品综合| 国内精品久久久久影院优| 欧美一区2区三区4区公司二百| 性欧美18~19sex高清播放| 国产精品捆绑调教| 亚洲欧美在线看| 久久久噜噜噜久久| 在线观看欧美日韩| 亚洲人成网站777色婷婷| 欧美激情小视频| 日韩亚洲成人av在线| 亚洲视频欧美视频| 国产精品成人av性教育| 亚洲影视九九影院在线观看| 欧美伊人久久久久久午夜久久久久| 国产欧美日韩亚洲一区二区三区| 亚欧成人精品| 美女尤物久久精品| 亚洲九九精品| 亚洲欧美怡红院| 国产一区三区三区| 亚洲人精品午夜| 欧美日韩精品免费观看视频完整| 一个色综合av| 久久精品国产精品亚洲综合| 国内精品亚洲| 亚洲精品一区在线观看| 欧美体内谢she精2性欧美| 亚洲一区精彩视频| 久久精品夜色噜噜亚洲a∨| 一区二区三区在线高清| 亚洲精品久久久久| 国产精品v欧美精品v日韩| 欧美亚洲在线播放| 欧美成人精品激情在线观看| 一本一本久久a久久精品综合麻豆| 欧美一区二区成人6969| 狠狠色狠色综合曰曰| 亚洲免费av观看| 国产精品一二三| 亚洲激情电影在线| 国产精品s色| 亚洲黄页一区| 国产精品裸体一区二区三区| 欧美一区亚洲| 欧美日韩国产在线播放| 亚洲视频二区| 久久人人97超碰精品888| 亚洲精选91| 久久视频在线视频| 亚洲精品少妇| 久久精品麻豆| 亚洲精品乱码久久久久久| 欧美一区1区三区3区公司| 亚洲成人在线网站| 午夜精品久久久久久久男人的天堂| 合欧美一区二区三区| 一区二区三区精品| 国产在线视频欧美一区二区三区| 亚洲美女毛片| 国产手机视频一区二区| 一本到12不卡视频在线dvd | 韩国三级电影久久久久久| 一区二区国产日产| 国产亚洲精品福利| 在线中文字幕不卡| 精品91视频| 欧美影院在线| 亚洲毛片网站| 免费视频最近日韩| 亚洲女人av| 欧美日韩国产精品成人| 亚洲国产免费看| 国产视频一区二区三区在线观看| 一区二区电影免费观看| 在线观看欧美| 久久久午夜精品|