新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式Linux的PMP系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

基于嵌入式Linux的PMP系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

——
作者:上海師范大學(xué) 陳寧 張?jiān)? 時(shí)間:2007-01-26 來源:《電子設(shè)計(jì)應(yīng)用》 收藏


pmp系統(tǒng)簡(jiǎn)介

本文引用地址:http://butianyuan.cn/article/21515.htm

便攜式多媒體播放器(pmp),也就是通常人們所說的mp4,已成為繼mp3以后消費(fèi)類產(chǎn)品的一個(gè)新熱點(diǎn)。pmp的主要優(yōu)點(diǎn)是:攜帶方便,能夠直接播放高品質(zhì)音/視頻文件;也可以瀏覽圖片,以及作為移動(dòng)硬盤、數(shù)字銀行使用;此外,還有fm、游戲等功能。pmp播放器不僅需要對(duì)機(jī)體大小有所限制,更重要的是需要一種壓縮效率更高、畫面質(zhì)量更高的視頻壓縮技術(shù),以及相關(guān)編解碼芯片。本文介紹了此pmp系統(tǒng)的軟、硬件設(shè)計(jì),重點(diǎn)在軟件設(shè)計(jì),此pmp系統(tǒng)方案現(xiàn)在已經(jīng)進(jìn)入量產(chǎn)階段。

pmp系統(tǒng)的硬件設(shè)計(jì)

現(xiàn)階段pmp內(nèi)部核心架構(gòu),大多都是采用cpu搭配dsp的方式。其中,dsp負(fù)責(zé)編/解碼工作;cpu則是針對(duì)文件管理、存取、以及使用接口、周邊組件的控制等進(jìn)行處理。另外,還需考慮整合硬盤、存儲(chǔ)卡及l(fā)cd顯示屏等組件,以及與外部usb接口、操控按鈕間的搭配等問題。

為符合上述要求,pmp的設(shè)計(jì)需要內(nèi)建視頻編/解碼芯片,作為模擬與數(shù)字兩種信號(hào)間轉(zhuǎn)換之用。另外,設(shè)計(jì)還需要考慮:用來連接視頻譯碼器與dsp的總線;lcd顯示屏的驅(qū)動(dòng)電路;ide接口與硬盤控制芯片間的溝通等。

本系統(tǒng)整體方案是建立在tidm320基礎(chǔ)之上的。dm320是一款支持視頻編/解碼的帶有雙cpu核的處理器。針對(duì)多媒體器件做專門的處理,它可以直接支持視頻輸入/輸出,可以方便的擴(kuò)展音頻的輸入/輸出,支持usb,sdram,flash,cf/sd/mmc/ms/ms pro接口。dm320的結(jié)構(gòu)圖,如圖1所示。

ti dm320將c5409與arm926整合,即將cpu與dsp同時(shí)集成在dm320核心內(nèi)。芯片采用32mb或64mb容量的sdram,以及4mb的閃存,用作加載與存放操作系統(tǒng)。dm320本身已內(nèi)建lcd控制器、usb2.0 otg接口控制器,同時(shí)讓ccir-656格式信號(hào)經(jīng)由總線在視頻譯碼芯片與dm320間傳送。由于ntsc/pal編碼器也被整合在其中,因此也可直接進(jìn)行復(fù)合視頻輸出。

另一方面,dm320還可支持ccd/cmos感光組件的連接,使得未來pmp要導(dǎo)入dsc、dv等更為容易。對(duì)于存儲(chǔ)卡的兼容性部分,除現(xiàn)階段主流的cf、sd及mmc外,還包括memory stick。此外,此芯片還提供2組rs232串行端口、1組jtag接口,能支持更多的外圍設(shè)備。dm320硬件系統(tǒng)的整體框架圖,如圖2所示。

pmp系統(tǒng)的軟件設(shè)計(jì)

因?yàn)橐骖櫟礁哔|(zhì)量的音視頻效果、多種外設(shè)和有限的系統(tǒng)資源,pmp軟件系統(tǒng)的設(shè)計(jì)變得相對(duì)復(fù)雜。系統(tǒng)設(shè)計(jì)將軟件分為三層結(jié)構(gòu),如圖3所示。

該系統(tǒng)的最底層是操作系統(tǒng)層,其中包括bootloader引導(dǎo)程序,主要完成系統(tǒng)從flash的啟動(dòng),logo的顯示,以及os的引導(dǎo)。嵌入式linux主要包括適合在tidm320上運(yùn)行的linux操作系統(tǒng),以及各種外圍設(shè)備的驅(qū)動(dòng)程序。第2層為codec和mmi核層,mmi核包括第3層主gui和各種應(yīng)用程序所依賴的各種框架結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),如窗口管理,定時(shí)器管理等。codec部分包括音頻的編解碼程序(主要由arm實(shí)現(xiàn))和圖像的編解碼程序(主要由dsp實(shí)現(xiàn))。最上層為主gui和各種應(yīng)用程序。應(yīng)用程序包括:filemanager(用來瀏覽存儲(chǔ)器中的文件),videoplayer(播放視頻文件),audioplayer(播放音頻文件),imageviewer(瀏覽圖片),fm(收音機(jī)),games(游戲),resumes(重新播放音/視頻文件)。

嵌入式linux操作系統(tǒng)

本系統(tǒng)采用的linux內(nèi)核是對(duì)從internet上下載比較穩(wěn)定的arm-linux內(nèi)核進(jìn)行相應(yīng)的修改,并縮寫相關(guān)外圍設(shè)備的驅(qū)動(dòng)程序,使之成為一個(gè)適合ti dm320開發(fā)的操作系統(tǒng)環(huán)境。之所以稱為嵌入式,是因?yàn)槠洳僮飨到y(tǒng)運(yùn)行的環(huán)境并不是普遍的pc,而且嵌入在非pc構(gòu)架的電子設(shè)備中。

關(guān)于內(nèi)核修改

kconfig文件

kconfig文件是用來對(duì)你所要加載內(nèi)核內(nèi)容進(jìn)行配置的文件。比如,當(dāng)在控制臺(tái)上敲入make menuconfig,就會(huì)看到內(nèi)核配置的窗口,可對(duì)其中的內(nèi)容進(jìn)行選擇。選擇[*]表示把此內(nèi)容編入內(nèi)核,選擇[m]表示把此內(nèi)容當(dāng)成模塊編譯。linux支持動(dòng)態(tài)加載內(nèi)核模塊的功能,甚至可以在運(yùn)行操作系統(tǒng)一段時(shí)間后再加載內(nèi)核模塊。由于dm320框架并未列入內(nèi)核中,所以我們需要把dm320框架加入內(nèi)核。首先,就要在內(nèi)核目錄下./arch/arm/kconfig加入dm320的配置選項(xiàng),這樣才能在執(zhí)行make menuconfig配置內(nèi)核時(shí)看到dm320框架。修改的部分內(nèi)容如下所示:

choice

prompt"arm system type"

default arch_dm320_20//在配置arm系統(tǒng)時(shí),默認(rèn)的就是dm320框架。

source"arch/arm/mach-dm32020/kconfig"把dm320框架下的配置選項(xiàng)也引入。

同時(shí),去掉其他cpu框架。如:

#source "arch/arm/machclps711x/kconfig"

#source "arch/arm/machintegrator/kconfig"

其中,“#”表示此行內(nèi)容為注釋內(nèi)容。

最后,就是要把內(nèi)核配置選項(xiàng)中對(duì)dm320開發(fā)有用的項(xiàng)選進(jìn)來。比如:

source"drivers/char/kconfig"

if(!arch_dm320_20)

source "sound/kconfig"

endif//選擇開發(fā)字符設(shè)備的驅(qū)動(dòng),而不需要聲音的支持。

因?yàn)橐裞odec編入內(nèi)核,所以我們還要加入支持codec的配置選項(xiàng):

source "codecs/modules/kconfig"

同時(shí),如果我們要加入一個(gè)新外圍設(shè)備,需要在kconfig文件中加入對(duì)應(yīng)的內(nèi)容。比如說,要加入一個(gè)三星的4英寸tft lcd的驅(qū)動(dòng),我們可以修改./drivers/char/kconfig文件,并加入以下內(nèi)容:

config dm320_samsung_4_lcd

tristate "dm320 samsung4.0 inch 16:9 tft tcd"

depends on arch_dm320_20 &&board_400h

defaulty

help

this driver provides support for samsung 4.0"16:9 tft lcd for dm320.

其中,config dm320_samsung_4_lcd表示增加一個(gè)新的配置入口。一旦這個(gè)配置選項(xiàng)被選中就會(huì)在./include/linux/autoconf.h:有#define config_dm320_samsung_4_lcd1的定義。這樣的話,我們?cè)谡麄€(gè)內(nèi)核源碼樹中都可以使用config_dm320_samsung_4_lcd來進(jìn)行特定的選擇。

在tristate"dm320 samsung 4.0 inch 16:9 tft lcd"中,引號(hào)里的內(nèi)容未出現(xiàn)在配置選項(xiàng)中的提示文字。tristate表示三態(tài),意思是除了可以選擇[*]、[]外,還可以選擇[m],表示把當(dāng)前內(nèi)容當(dāng)成模塊編譯。

depends on arch_dm320_20&&board_400h表示如果前面配置平臺(tái)框架時(shí)選擇了arch_dm320_2o,并在選擇型號(hào)時(shí)選擇了board_400h,我們就可以看到這個(gè)對(duì)于三星4英寸tft lcd的配置選項(xiàng)。

defaulty表示默認(rèn)把此驅(qū)動(dòng)編入內(nèi)核。help的內(nèi)容為當(dāng)我們對(duì)內(nèi)核進(jìn)行配置時(shí),選幫助所看到的內(nèi)容。

makefile文件

簡(jiǎn)單地說,makefile是用來進(jìn)行項(xiàng)目配置和管理的。我們要把linux編譯,鏈接最后生成可執(zhí)行的內(nèi)核映像,makefile文件是必不可少的。

在該pmp設(shè)計(jì)開發(fā)中,只需要把外設(shè)驅(qū)動(dòng)模塊加入相應(yīng)的內(nèi)核源碼樹就可以完成對(duì)makefile文件的修改。以加入三星4英寸tft lcd驅(qū)動(dòng)為例,只需要在./drivers/char/makefile加入如下內(nèi)容即可:

obj-$(config_dm320_samsung_4_lcd)+=dm320_lcd_samsung4.0

pmp系統(tǒng)設(shè)計(jì)中兩個(gè)必須的驅(qū)動(dòng)以及要注意的問題

lcd驅(qū)動(dòng)程序

在一個(gè)pmp設(shè)備中,lcd顯示屏是必備的。在lcd驅(qū)動(dòng)程序的設(shè)計(jì)過程中,主要是要選好時(shí)鐘源、分頻系數(shù)以及時(shí)鐘極性。比如在dm320中,時(shí)鐘控制器有以下幾個(gè)外部輸入:pclk、sysclk、mxi、m48xi,其中除了m48xi外其余均27m外部晶振。lcd的時(shí)鐘頻率dclk在本系統(tǒng)中是由venc(video encoder clock)確定,而venc又可以通過系統(tǒng)的pll分頻而確定,所以說首先要選好時(shí)鐘源和恰當(dāng)?shù)姆诸l系數(shù),然后通過設(shè)置venc的寄存器就可以設(shè)置時(shí)鐘的極性。

framebuffer驅(qū)動(dòng)

framebuffer是把顯存抽象成一個(gè)設(shè)備,通過對(duì)這個(gè)設(shè)備的讀寫就等同于直接對(duì)顯存進(jìn)行操作。這種操作是抽象的、統(tǒng)一的。用戶不必關(guān)心顯存的物理位置、換頁(yè)機(jī)制等具體細(xì)節(jié),這些都是由framebuffer設(shè)備驅(qū)動(dòng)程序來完成的。framebuffer對(duì)應(yīng)的源文件在linux/drivers/video/目錄下。全部的抽象設(shè)備文件作為fbcon.c與各種顯卡驅(qū)動(dòng)程序相關(guān)的源文件放在該目錄下,如筆者所進(jìn)行的針對(duì)dm320的framebuffer源文件dm320fb.c。在源文件我們要設(shè)置相應(yīng)屏幕的長(zhǎng)、寬以及每一個(gè)像素點(diǎn)的位數(shù)等等,還有一些與dm320 osd(on-screen display)相關(guān)的寄存器的設(shè)置。因?yàn)樯婕皟?nèi)容較多,再次不再贅述。

結(jié)語

本pmp方案設(shè)計(jì)的產(chǎn)品已經(jīng)進(jìn)入量產(chǎn)階段,經(jīng)過大量的用戶測(cè)試,證實(shí)了整個(gè)設(shè)計(jì)是切實(shí)可行的。同時(shí),其設(shè)計(jì)思路對(duì)于其他類似產(chǎn)品如車載gps,都有一定的參考價(jià)值。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉