尹 朦
(首都經(jīng)濟(jì)貿(mào)易大學(xué)外語(yǔ)系,北京 100070)
基于Blackfin 531 DSP的數(shù)碼伴侶系統(tǒng)設(shè)計(jì)
尹 朦
(首都經(jīng)濟(jì)貿(mào)易大學(xué)外語(yǔ)系,北京 100070)
文章基于Black fin 531 DSP設(shè)計(jì)了一個(gè)嵌入式系統(tǒng),該系統(tǒng)為方便數(shù)碼相機(jī)用戶而設(shè)計(jì),能夠讀取SD卡中的圖片,并能夠在電視機(jī)上邊播放音樂(lè)邊顯示圖片;介紹了數(shù)碼伴侶系統(tǒng)的硬件和軟件設(shè)計(jì),并重點(diǎn)討論了系統(tǒng)的性能優(yōu)化,該文中提出的優(yōu)化方法可使數(shù)碼伴侶系統(tǒng)在嵌入式系統(tǒng)硬件資源有限的情況下,提高系統(tǒng)的性能并使之能夠高效地運(yùn)行。
嵌入式系統(tǒng);數(shù)字信號(hào)處理器;系統(tǒng)優(yōu)化
隨著社會(huì)的發(fā)展,數(shù)碼相機(jī)已經(jīng)越來(lái)越普及。數(shù)碼相機(jī)拍攝的照片是JPEG格式的數(shù)字圖片,具有保存方便、便于復(fù)制等優(yōu)點(diǎn),但數(shù)碼照片的欣賞卻不是很方便。如果能夠在電視上顯示數(shù)碼照片,則可以讓一家人在客廳內(nèi)觀看欣賞。基于這個(gè)想法,本文設(shè)計(jì)開發(fā)了數(shù)碼伴侶系統(tǒng),它可以讀取SD卡中的數(shù)碼照片,解碼成原始的UYVY格式,然后通過(guò)專門的視頻編碼芯片轉(zhuǎn)化為PAL制模擬信號(hào),傳輸給電視將圖像直接顯示在屏幕上。在欣賞相片的同時(shí),還可以播放音樂(lè)。它還提供了一個(gè)友好的GUI,讓用戶可以通過(guò)遙控器操縱菜單,控制數(shù)碼伴侶的運(yùn)行。
本系統(tǒng)基于 ADI公司的 Blackfin 531 DSP開發(fā),采用基于操作系統(tǒng)的設(shè)計(jì)方法,并做了大量?jī)?yōu)化,提高了性能。
數(shù)碼伴侶硬件系統(tǒng)采用模塊化設(shè)計(jì),分為6個(gè)模塊,其硬件模塊如圖1所示。
(1)核心模塊。采用ADI公司的Black fin 531處理器,該Black fin處理器基于MSA,將一個(gè)32位RISC型指令集和雙16位乘法累加(MAC)信號(hào)處理功能與通用型微控制器所具有的易用性組合在一起,極大地簡(jiǎn)化了硬件和軟件的設(shè)計(jì)[1]。該處理器的內(nèi)核工作頻率最高可達(dá)400 MHz,內(nèi)核中包含2個(gè) 16位 MAC、2個(gè) 40位ALU及4個(gè)8位ALU,專門用于視頻信號(hào)的處理;并且該處理器集成了許多片上外設(shè),包括硬件UART 、SPI接口 、PPI接口 、同步串口、看門狗電路和16個(gè)GPIO接口等[2]。
(2)存儲(chǔ)模塊。包括Flash和SDRAM,Flash存放操作系統(tǒng)內(nèi)核和應(yīng)用程序;用SAMSUNG K 4S561632H-UC75作SDRAM,容量為32 M。
(3)輸入模塊。包括SD卡接口及相關(guān)外圍電路,本系統(tǒng)從SD卡中讀入JPEG格式圖片和MP3音樂(lè)。
(4)輸出編碼模塊。包括圖像編碼電路和音頻編碼電路,圖像編碼電路采用SAA 7121芯片。該芯片采用 I2C總線控制,2根控制線SCL和SDA,分別和Black fin 531的PF1和 PF0引腳相連[3];音頻編碼電路采用WM 8731芯片,該芯片采用I2C總線控制,2根控制線SCLK和SDIN分別和Black fin 531的PF1和 PF0連接[4]。
(5)用戶控制模塊。包括紅外接收電路,本系統(tǒng)紅外信號(hào)解碼由軟件完成,SM 0038的信號(hào)輸出線與Bkackfin 531的PF9引腳連接。
(6)調(diào)試模塊。包括JTAG電路和串口電路,本系統(tǒng)采用M ax3232作為電平轉(zhuǎn)換芯片,把Blackfin 531的UART信號(hào)轉(zhuǎn)化為符合RS232標(biāo)準(zhǔn)的串口信號(hào),連接到PC機(jī)上。
圖1 數(shù)碼伴侶硬件模塊
數(shù)碼伴侶是一個(gè)多任務(wù)的系統(tǒng),本系統(tǒng)采用基于操作系統(tǒng)的設(shè)計(jì)方法。數(shù)碼伴侶軟件分為3個(gè)部分:BootLoader、操作系統(tǒng)和應(yīng)用程序。
(1)BootLoader。它是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序,通過(guò)它可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境[5],本系統(tǒng)的BootLoader采用 uBoot。
(2)操作系統(tǒng)。采用uClinux,它是針對(duì)控制領(lǐng)域的嵌入式Linux操作系統(tǒng),適合不具備內(nèi)存管理單元(MMU)的微處理器/微控制器[6]。
uClinux可以方便地移植到Black fin處理器上,系統(tǒng)對(duì)外圍設(shè)備的控制由驅(qū)動(dòng)程序完成。
(3)上層應(yīng)用程序。主要完成圖片顯示、音頻播放和用戶控制3個(gè)功能。應(yīng)用程序通過(guò)驅(qū)動(dòng)程序訪問(wèn)相應(yīng)的硬件設(shè)備,軟件總體結(jié)構(gòu)如圖2所示。
圖2 軟件總體結(jié)構(gòu)
應(yīng)用程序處于整體軟件結(jié)構(gòu)的頂層,實(shí)現(xiàn)與用戶交互的功能。數(shù)碼伴侶的上層應(yīng)用程序?qū)崿F(xiàn)的主要任務(wù)如下:交互界面顯示、圖像顯示、音頻解碼播放及獲取用戶控制命令等。
針對(duì)該系統(tǒng)的特定功能需求,首先構(gòu)建基于FrameBuffer的簡(jiǎn)單GUI,主要包括用戶接口模塊、GU I基本圖形模塊和輸入抽象模塊。
(1)用戶接口模塊。該模塊為上層應(yīng)用程序開發(fā)人員提供簡(jiǎn)單、易用的API接口函數(shù),主要包括圖形處理函數(shù)、圖片處理函數(shù)、字體處理函數(shù)、遙控器事件處理函數(shù)和聲音處理函數(shù)等[7]。
(2)GUI基本圖形模塊。該模塊建立在底層圖形設(shè)備之上,直接與圖形硬件接觸,為用戶接口模塊提供圖形處理。
(3)輸入抽象模塊。該模塊中的輸入設(shè)備有遙控器、鍵盤、鼠標(biāo)及觸摸屏等。針對(duì)數(shù)碼伴侶系統(tǒng),輸入抽象層主要實(shí)現(xiàn)接收、處理用戶輸入的遙控器事件。
應(yīng)用程序的流程首先為顯示用戶界面,然后等待用戶輸入信息,即遙控器事件,系統(tǒng)根據(jù)輸入事件處理對(duì)應(yīng)的功能。
圖片瀏覽是通過(guò)函數(shù)對(duì)FrameBuffer直接繪圖實(shí)現(xiàn),所以圖片具有快速的顯示速度。音樂(lè)欣賞功能主要基于uClinux代碼包自帶的MP3音樂(lè)播放程序MP3player的源代碼來(lái)實(shí)現(xiàn)。文件操作功能主要是實(shí)現(xiàn)查看多媒體文件信息、修改文件名及刪除文件等操作。系統(tǒng)設(shè)置功能主要實(shí)現(xiàn)修改系統(tǒng)的參數(shù),如設(shè)置連續(xù)播放的時(shí)間間隔等。
由于嵌入式處理器性能有限,本系統(tǒng)需要進(jìn)行一系列性能優(yōu)化,主要優(yōu)化方法包括解碼流程優(yōu)化、多緩沖、多線程優(yōu)化和匯編優(yōu)化。
圖像格式轉(zhuǎn)化過(guò)程,如圖3所示[8]。
圖3 圖像格式轉(zhuǎn)化過(guò)程
多媒體領(lǐng)域中,通常使用 YUV顏色空間來(lái)表示顏色,如果要在屏幕上顯示一副M PEG解壓之后的圖片,則需要進(jìn)行 YUV顏色空間到 RGB顏色空間的轉(zhuǎn)換[9]。RGB格式的圖片被寫入FrameBuffer的寫入緩沖區(qū)。而SAA 7121芯片接收的數(shù)字圖片格式是UYVY,這就需要驅(qū)動(dòng)程序再將 RGB格式的緩沖區(qū)進(jìn)行轉(zhuǎn)化,得到UYVY格式的數(shù)字信號(hào),傳輸給SAA 7121芯片,這個(gè)解碼過(guò)程如圖3a所示。
從圖3a中可以看出,把圖片轉(zhuǎn)化為RGB格式是多余的,本系統(tǒng)對(duì)圖像解碼過(guò)程做了優(yōu)化。JPEG解碼庫(kù)對(duì)JPG圖片的解碼,省去了 YUV到RGB格式的轉(zhuǎn)化。而FrameBuffer則提供了YUV格式的屏幕緩沖區(qū),上層應(yīng)用程序直接把YUV格式的圖片寫入該緩沖區(qū),FrameBuffer驅(qū)動(dòng)只做YUV到UYVY的轉(zhuǎn)換,優(yōu)化后的解碼過(guò)程如圖3b所示。
采用多緩存的技術(shù)縮短了系統(tǒng)的運(yùn)行時(shí)間,顯著提高了系統(tǒng)性能,應(yīng)用程序建立多個(gè)圖片緩存區(qū),緩存解碼后的 YUV格式圖片。Frame-Buffer驅(qū)動(dòng)建立3個(gè)屏幕緩存,緩存UYVY格式的屏幕圖像,多緩沖結(jié)構(gòu)如圖4所示。
圖4 多層次緩沖設(shè)計(jì)
當(dāng)用戶連續(xù)欣賞圖片的時(shí)候,系統(tǒng)大部分時(shí)間處于等待用戶輸入的狀態(tài)。如果在系統(tǒng)等待用戶輸入的時(shí)候,預(yù)測(cè)下一張圖片,并提前解碼,載入內(nèi)存,這樣可大大提高系統(tǒng)響應(yīng)速度,本文采用多線程的程序設(shè)計(jì)方法。
應(yīng)用程序包括主線程和圖片處理線程,應(yīng)用程序多線程工作流程如圖5所示。
圖5 多線程程序流程圖
匯編優(yōu)化是利用Black fin提供的視頻編解碼指令或利用并行指令來(lái)提高程序執(zhí)行效率。
在PC機(jī)環(huán)境下對(duì)JPEG解碼庫(kù)進(jìn)行了性能測(cè)試,發(fā)現(xiàn) JPEG解碼運(yùn)算耗時(shí)較多的函數(shù)有ycc-rgb-convert(36.13%),jpeg-idct-islow(16.77%)。經(jīng)過(guò)分析,jpeg-idct-islow可以利用Blackfin的指令并行化方法進(jìn)行優(yōu)化,具體使用到的并行化方法有:
(1)1個(gè)32位的A LU/MAC指令和2個(gè)16位指令并行化。
(2)1個(gè)32位ALU/MAC指令和1個(gè)16位指令并行化。
(3)空指令和2個(gè)16位指令并行化。
經(jīng)過(guò)測(cè)試,匯編優(yōu)化后的jpeg-idct-islow相比優(yōu)化前性能提高約4.8倍。
本文對(duì)數(shù)碼伴侶系統(tǒng)的性能進(jìn)行了測(cè)試,系統(tǒng)顯示SD卡中的JPEG圖片,用戶通過(guò)遙控器按鍵控制系統(tǒng)運(yùn)行,順序?yàn)g覽圖片。JPEG圖片的大小為720×576,和PAL制電視顯示分辨率相同。
通過(guò)改變遙控器按鍵的頻率,測(cè)試在不同的按鍵間隔時(shí)間下從按鍵到圖片顯示完畢所用的時(shí)間。按鍵間隔時(shí)間為從上一幅圖片顯示完畢到下次按鍵的間隔時(shí)間,結(jié)果見(jiàn)表1所列。
表1 不同按鍵間隔的響應(yīng)時(shí)間s
從表1可以看出,在按鍵間隔大于10 s時(shí),相應(yīng)時(shí)間為0.3 s,非??臁_@是由于后臺(tái)進(jìn)程預(yù)先完成了解碼工作,并將圖片緩存在FrameBffer驅(qū)動(dòng)申請(qǐng)的UYVY緩存空間中。當(dāng)按鍵間隔為1 s時(shí),響應(yīng)時(shí)間為 2.2 s,相對(duì)較慢,這是因?yàn)镴PEG格式的圖片在顯示之前需要解碼和格式轉(zhuǎn)換。一般用戶欣賞圖片時(shí)速度會(huì)較慢,這樣圖片可以提前得到解碼,從而使響應(yīng)速度得到提高。本系統(tǒng)很好地利用了這一點(diǎn),提高了用戶體驗(yàn)。
本文基于Black fin 531 DSP設(shè)計(jì)了一個(gè)數(shù)碼伴侶系統(tǒng),給數(shù)碼相機(jī)使用者帶來(lái)了新的體驗(yàn)。數(shù)碼伴侶是一個(gè)嵌入式系統(tǒng),本文討論了在硬件資源有限的嵌入式平臺(tái)上怎樣優(yōu)化軟件,提高性能。隨著軟硬件技術(shù)的發(fā)展,嵌入式技術(shù)必將得到越來(lái)越廣泛地應(yīng)用。
[1] 陳 峰.基于Blackfin DSP的數(shù)字圖像處理[M].北京:電子工業(yè)出版社,2009:28.
[2] 曹小秋.ADI Blackfin系列DSP處理器實(shí)驗(yàn)指導(dǎo)書[M].北京:電子工業(yè)出版社,2008:46.
[3] 馬 蘭.精通Visual C++視頻/音頻編解碼技術(shù)[M].北京:人民郵電出版社,2008:100-105.
[4] 何立民.嵌入式系統(tǒng)的定義與發(fā)展歷史[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004,(1):126-132.
[5] 詹榮開.嵌入式系統(tǒng)Boot Loader技術(shù)內(nèi)幕 [EB/OL].[2003-12-01].http://www.ibm.com/developerw orks/cn/linux/l-btloader/index.h tm l.
[6] 李 巖,容盤祥.基于S3C44BOX嵌入式uClinux系統(tǒng)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2005:102.
[7] 劉 淼.嵌入式系統(tǒng)接口設(shè)計(jì)與 Linux驅(qū)動(dòng)程序開發(fā)[M].北京:北京航空航天大學(xué)出版社,2006:112-118.
[8] 程 穎,王 銳.SA A7111A芯片在視頻圖像處理FPGA設(shè)計(jì)中的應(yīng)用[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2007,30(11):1399-1403.
[9] 盧 鋒.中文版Prem iere Pro CS3實(shí)用教程[M].北京:清華大學(xué)出版社,2008:153-156.
Design of digital companion system based on Black fin 531 DSP
YIN M eng
(Foreign Language Dept.,Capital University of Econom ics and Business,Beijing 100070,China)
This paper proposesan em bedded system based on Black fin 531 DSP.The system is designed for the convenience of digital camera users.It can read the photos from SD card and playm usic on top side of the TV image show.This paper introduces the hardware and software design of the system,and focuses on the performance optimization of the system.It is shown that the optimization method p roposed in the paper imp roves the performance o f the system and enab les it to efficiently run in embedded systems w ith limited computing resources.
em bedded system;digital signal p rocessor(DSP);system op tim ization
TP399
A
1003-5060(2010)11-1652-04
10.3969/j.issn.1003-5060.2010.11.013
2009-10-29;
2010-04-05
尹 朦(1980-),女,安徽宿州人,首都經(jīng)濟(jì)貿(mào)易大學(xué)助理工程師.
(責(zé)任編輯 張秋娟)