當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于ARM的MPEG-4數(shù)字錄像機(jī)的設(shè)計(jì)實(shí)現(xiàn)

【摘要】 文章介紹了基于嵌入式ARM9微處理器EP9315硬件平臺(tái)和Linux軟件平臺(tái)的MPEG-4視頻錄像機(jī)的設(shè)計(jì)和實(shí)現(xiàn),討論了總體原理和架構(gòu),核心硬件模塊的設(shè)計(jì)和Linux設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序的設(shè)計(jì)。
【關(guān)鍵詞】 ARM  EP9315  IME6400  MPEG-4  Linux  設(shè)備驅(qū)動(dòng)

Abstract In this paper, designing and implementing a digital video recorder which is based on the processor ARM9 hardware series EP9315 and Linux software is achieved; the paper’s content include the general function and structure of the system, the designing of core hardware module and the designing of corresponding devices Linux drivers and application.

Keyword  ARM  EP9315  IME6400  MPEG-4  Linux  Module Driver

隨著科技的飛速發(fā)展,消費(fèi)類電子,通信,電視電影廣播與計(jì)算機(jī)技術(shù)緊密結(jié)合起來(lái)。而數(shù)字化信息,尤其是數(shù)字化視頻信息,具有數(shù)據(jù)量大,存儲(chǔ)傳輸困難的特點(diǎn),是制約人類獲得信息的主要瓶頸。這種形勢(shì)對(duì)數(shù)字視頻記錄設(shè)備的研制提出了新的要求:大批量的應(yīng)用要求降低監(jiān)控記錄設(shè)備成本,多樣的應(yīng)用環(huán)境、分散、孤立的監(jiān)控點(diǎn)要求監(jiān)控記錄設(shè)備盡可能一體化、小型化、獨(dú)立、便攜、低功耗、供電方便、性能可靠。針對(duì)這些新問題和新要求,作者設(shè)計(jì)實(shí)現(xiàn)了一種基于嵌入式系統(tǒng)和MPEG-4編碼標(biāo)準(zhǔn)的數(shù)字錄像機(jī),系統(tǒng)集成度高、體積小、功耗低、獨(dú)立、便攜,適合大量的各類視頻監(jiān)控和記錄應(yīng)用。

1 系統(tǒng)框架及原理說(shuō)明

本系統(tǒng)選用的主要模塊是低功耗ARM9系列微處理器EP9315和專業(yè)視頻壓縮編碼處理芯片IME6400,周圍外部設(shè)備有SAA7118 A/D數(shù)模轉(zhuǎn)換芯片,RAM芯片,ROM芯片,網(wǎng)絡(luò)模塊和電源模塊。系統(tǒng)電路原理圖如圖1所示。整個(gè)電路采用5V電源供電,系統(tǒng)啟動(dòng)后,外部輸入的視頻和音頻信號(hào)分別經(jīng)過(guò)視頻數(shù)模轉(zhuǎn)換模塊和音頻模塊進(jìn)行解碼,隨后通過(guò)IIC總線送入IME6400視頻處理芯片生成MPEG-4視頻音頻復(fù)合數(shù)據(jù)流,系統(tǒng)控制芯片EP9315從IME6400的HOST總線將數(shù)據(jù)流取出存放到硬盤中,并且控制與外部設(shè)備的通信。

圖1:系統(tǒng)總體框圖

2         MPEG-4標(biāo)準(zhǔn)

2.1 MPEG-4壓縮算法的基本原理

MPEG-4視頻壓縮算法采用了基于對(duì)象的處理方案,對(duì)視頻圖像中的每個(gè)目標(biāo)進(jìn)行單獨(dú)處理,能夠在保證圖像質(zhì)量的情況下,極大的降低碼率。在相同的圖像質(zhì)量下,MPEG-4的輸出碼流可以比MPEG-2降低一半。正因?yàn)槿绱?,MPEG-4壓縮算法已得到了廣泛的應(yīng)用。MPEG-4中視頻對(duì)象(VO)可能是場(chǎng)景中的某一物體、某個(gè)區(qū)域、也可能是計(jì)算機(jī)產(chǎn)生的二維、三維圖形等。VO的選定依賴于具體的應(yīng)用和系統(tǒng)所處的環(huán)境:在要求超低比特率的情況下,VO可以是一個(gè)矩形幀,與以前的MPEG-1、H.263標(biāo)準(zhǔn)兼容;對(duì)于基于內(nèi)容的應(yīng)用,每一個(gè)VO有三類信息描述:運(yùn)動(dòng)信息、形狀編碼、紋理編碼。MPEG-4的編碼結(jié)構(gòu)中,首先是從原始視頻流中分割出VO,之后由編碼控制機(jī)制為不同的VO及相應(yīng)的3種類型的信息分配碼率,然后是各個(gè)VO獨(dú)立編碼,最后將各VO的碼流復(fù)合成一個(gè)位流。解碼過(guò)程是編碼的逆過(guò)程。編碼的圖2所示:

 

 

2.2 MPEG-4碼流的形成

如圖3所示,MPEG-4壓縮算法將一幅圖象分為多個(gè)對(duì)象,這些對(duì)象按不同的層,每個(gè)層又分為不同的平面按順序變換為視頻碼流。它的基本視頻流格式如圖3所示。每個(gè)視頻對(duì)象分為多個(gè)視頻對(duì)象層,每個(gè)視頻對(duì)象層形成一個(gè)基本流,這一基本流類似與MPEG-2中的GOP。每個(gè)基本流都有自己的視頻對(duì)象序列頭,不同的視頻對(duì)象序列頭可以分別按不同的順序傳送,這就極大地提高了MPEG-4傳送流的靈活性。

 

圖3  MPEG-4視頻碼流的基本構(gòu)成

3 硬件設(shè)計(jì)

3.1 控制模塊設(shè)計(jì)

系統(tǒng)控制模塊選用CIRRUS LOGIC公司的EP9315A微處理器,此處理器是基于ARM920T內(nèi)核,高性能,低功耗,32位CPU,自帶MMU,16k指令cache和16k數(shù)據(jù)cache和Maverick Crunch數(shù)學(xué)協(xié)處理器;主頻200MHz,系統(tǒng)總線100MHz;所支持的操作系統(tǒng)包括WINCE , Linux【1。為了便于設(shè)計(jì)和調(diào)試,硬件設(shè)計(jì)上采用核心板加底板的模塊化設(shè)計(jì)方法,在核心板上集成了基于EP9315的最小系統(tǒng),通過(guò)底板來(lái)擴(kuò)展外部功能。在核心板上主要配置了64MB的NAND Flash 和64MB的SDRAM及提供RTC時(shí)鐘和工作時(shí)鐘的晶體,并將其豐富的外設(shè)接口資源引出。在底板上擴(kuò)展出USB主機(jī)接口、以太網(wǎng)口、UART接口、IDE接口等,以實(shí)現(xiàn)與外部設(shè)備間的數(shù)據(jù)傳輸和通信。

EP9315支持硬盤的掛載,可以通過(guò)外部IDE接口將視頻數(shù)據(jù)直接存入硬盤,但在開發(fā)初期采用通過(guò)與PC機(jī)服務(wù)器網(wǎng)絡(luò)掛載方式,將記錄數(shù)據(jù)通過(guò)網(wǎng)絡(luò)協(xié)議存入PC機(jī)硬盤中,便于回放和調(diào)試。IME6400的HOST接口映射到處理器的第6個(gè)Memory Bank中,將EP9315的nGCS3片選管腳直接連接IME6400的nCS,地址線ADD[1:5]通過(guò)總線驅(qū)動(dòng)芯片后與HOST接口的HA[0:4]相連【2】,同時(shí)將IME6400異步模式下的中斷管腳GPIO0與EP9315的中斷管腳FPGIO1相連。

3.2 視頻音頻編解碼模塊設(shè)計(jì)

視頻A/D芯片選用Philips公司的高性能可編程解碼芯片SAA7118,該芯片支持多種輸入模式,具有抗混疊濾波、自動(dòng)鉗位、自動(dòng)增益變換、亮度、對(duì)比度、飽和度調(diào)整等功能,其工作時(shí)鐘為24.576MHz。通過(guò)設(shè)定SAA7118的內(nèi)部的配置寄存器93H[6]為1使能其HOST端口,實(shí)現(xiàn)與IME6400的無(wú)縫連接。音頻A/D芯片采用BURR-BROWN公司的PCM1800,它對(duì)模擬音頻進(jìn)行高信噪比20bit數(shù)字采樣,生成PCM數(shù)字音頻流。

壓縮編碼采用INTIME公司的MPEG-4編碼芯片IME6400。該芯片是一款高性能的單片多通道MPEG-4數(shù)字壓縮編碼芯片,它支持多種編碼模式和比特率控制,并提供了豐富的外圍硬件接口。IME6400總線具有四種工作模式,通過(guò)mode管腳定義,在這里mode[1:0]設(shè)定為11,即異步工作模式。在這種模式下,當(dāng)IME6400將GPIO0管腳置低電平時(shí),F(xiàn)IFO緩沖區(qū)中存滿NFIFOSIZE=1k大小的輸出數(shù)據(jù)流,外部接口在得到GPIO0下降沿電平后便可以從IME6400的HOST接口寄存器Encodedstream中讀取數(shù)據(jù)流。GPIO0管腳直接與EP9315的中斷管腳FGPIO相連,在處理器獲取下降沿信號(hào)后便中斷當(dāng)前操作,從IME6400讀取數(shù)據(jù)。在讀取完畢后,EP9315要向IME6400的HOST總線寄存器USER4發(fā)送一個(gè)不同值,通知IME6400數(shù)據(jù)讀取完成。隨后IME6400可以在FIFO中裝載新的壓縮數(shù)據(jù)流以保證EP9315的繼續(xù)讀取3。

4 軟件設(shè)計(jì)

 Linux系統(tǒng)具有穩(wěn)定、高效、易定制、易裁減、開放源碼等優(yōu)點(diǎn),因此本系統(tǒng)選用嵌入式Linux作為操作系統(tǒng),在芯片中植入Linux系統(tǒng)作為視頻記錄的應(yīng)用環(huán)境。編寫Linux環(huán)境下的硬件設(shè)備接口程序主要分兩個(gè)部分:硬件設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序,驅(qū)動(dòng)程序需要在視頻錄像前加載到Linux內(nèi)核中,然后運(yùn)行記錄程序,本系統(tǒng)采用的動(dòng)態(tài)加載驅(qū)動(dòng)的方式。在前面說(shuō)過(guò)用網(wǎng)絡(luò)掛載硬盤來(lái)記錄視頻可以便于測(cè)試視頻錄像質(zhì)量和調(diào)試軟硬件,具體的操作是:在PC服務(wù)器上用nfs協(xié)議共享一個(gè)硬盤空間作為記錄硬盤,然后通過(guò)minicom串口通信定義EP9315啟動(dòng)時(shí)首先通過(guò)網(wǎng)絡(luò)掛載記錄硬盤,

fconfig

fis load zImage

exec -c "root=/dev/nfs nfsroot=主機(jī)地址:共享硬盤空間 ip=嵌入式系統(tǒng)地址console=ttyS0,57600 devfs=mount"

隨后視頻錄像數(shù)據(jù)的處理就相當(dāng)于在PC機(jī)上進(jìn)行操作,可以克服嵌入式操作系統(tǒng)功能不全,可視化程度不高的缺點(diǎn)【4】。

4.1 驅(qū)動(dòng)程序編寫

編寫linux驅(qū)動(dòng)程序的最主要工作就是file_operations結(jié)構(gòu)中各入口點(diǎn)的實(shí)現(xiàn),即對(duì)應(yīng)于open()、release()、read()、write()、ioctrl()等系統(tǒng)調(diào)用子函數(shù)的編寫5。

·Open函數(shù)ime6400_open(struct inode *inode, struct file *filp),IME6400打開后用于模塊加載后的計(jì)數(shù),防止系統(tǒng)非法釋放模塊資源。

·Read函數(shù)ime6400_read(struct file *fp, char *buf, size_t size),在IME6400數(shù)據(jù)緩沖區(qū)讀滿后從內(nèi)核空間傳送到用戶空間。

·Write函數(shù)ime6400_write(struct file * fp, const char * buf, size_t size, loff_t *ppos),將攝像頭獲取數(shù)據(jù)從用戶空間傳送到內(nèi)核空間。

·Ioctrl函數(shù)ime6400_ioctl(struct inode *inode, struct file *filp, unsigned int command, unsigned long arg),用于從用戶空間向內(nèi)核空間傳遞定義參數(shù)。

此外,驅(qū)動(dòng)程序中還包括:

·IME6400片選的聲明

#define BASE_ADDR                  0x28000000   

將IME6400的片選信號(hào)映射到片選4(ncs4管腳)。

·IME6400中斷的申請(qǐng)

set_external_irq(IRQ_EINT8,EXT_FALLING_EDGE,GPIO_PULLUP_DIS); request_irq(IRQ_EINT8, &ime6400_irq, SA_INTERRUPT,"ime6400", NULL)。

根據(jù)硬件手冊(cè),這里將中斷定義為中斷8,用于在IME6400存入內(nèi)核緩沖區(qū)后通知EP9315讀取數(shù)據(jù)流。

4.2 應(yīng)用程序編寫

本系統(tǒng)應(yīng)用程序主要實(shí)現(xiàn)在加載設(shè)備驅(qū)動(dòng)后將視頻流從硬件接口層拷到存儲(chǔ)設(shè)備,具體操作上運(yùn)用了多線程設(shè)計(jì)方法,這種方法的優(yōu)點(diǎn)在于可以共享進(jìn)程資源,線程間的轉(zhuǎn)換和調(diào)用時(shí)間短,效率高,聲明的幾個(gè)線程可以相互獨(dú)立地完成各自任務(wù),并進(jìn)行實(shí)時(shí)通信,傳遞參數(shù)。這里主要?jiǎng)?chuàng)建了三個(gè)線程:讀數(shù)據(jù)線程,寫數(shù)據(jù)線程,串口監(jiān)聽線程。

    pthread_create(&t1,NULL,(void *)read_thread,NULL);

    pthread_create(&t2,NULL,(void *)write_thread,NULL);

    pthread_create(&t1,NULL,(void *)listen_thread,NULL);

系統(tǒng)啟動(dòng)后,系統(tǒng)首先通過(guò)IIC初始化EP9315和IME6400,然后串口監(jiān)聽線程listen_thread()調(diào)用函數(shù)偵測(cè)是否有來(lái)自串口的控制指令輸入,如果沒有輸入指定指令將無(wú)限期等待,如果得到輸入指令則向讀線程read_thread()發(fā)送信號(hào)量sem,通知讀線程準(zhǔn)備調(diào)用讀取數(shù)據(jù)函數(shù)IME6400_read()。在IME6400中FIFO緩沖區(qū)內(nèi)記錄數(shù)據(jù)滿后系統(tǒng)獲得中斷,中斷程序?qū)?shù)據(jù)流拷入內(nèi)核空間,若緩沖區(qū)滿則讀線程調(diào)用ime_read()拷貝數(shù)據(jù)到用戶空間,并向IME6400寄存器USER4發(fā)送新的值通知IME6400可以存入新的記錄數(shù)據(jù)流,從而進(jìn)行下一步編碼。ime_read()拷貝完成后返回,由讀線程向?qū)懢€程發(fā)送信號(hào)量sem1通知寫線程write_thread()調(diào)用fwrite()函數(shù)將數(shù)據(jù)寫到硬盤,完成后發(fā)送信號(hào)量sem2通知讀線程,然后再由讀線程進(jìn)行下一輪類似前面的操作。與此同時(shí),監(jiān)聽線程一直在偵測(cè)是否有串口輸入的用戶指令,如果有則調(diào)用中止函數(shù)或重新初始化函數(shù)來(lái)退出程序或重新啟動(dòng)系統(tǒng)。

5 結(jié)論

該錄像系統(tǒng)已經(jīng)基本完成了測(cè)試工作,可以選擇8種分辨率和兩種幀率,最高標(biāo)準(zhǔn)可以達(dá)到720×576分辨率,25fps。在選擇640×480分辨率,25fps錄制模式時(shí),圖像質(zhì)量最好,圖像顯示穩(wěn)定,對(duì)于快速運(yùn)動(dòng)的物體可以無(wú)碼字丟失;在選擇720×576,全幀率模式時(shí),硬盤可以連續(xù)錄制4~5個(gè)小時(shí)。目前系統(tǒng)需要解決的問題是改進(jìn)錄制高質(zhì)量圖像的碼流的穩(wěn)定性問題,可以考慮在EP9315和硬盤之間加驅(qū)動(dòng)芯片以提高處理器掛載能力。

 

參考文獻(xiàn):

【1】         EP9315 User`s Guide. CIRRUS LOGIC, Inc. 2004

【2】         EP9315 User`s Guide. CIRRUS LOGIC, Inc. 2004

【3】  IME6400 firmware manual. Intime Corporation. 2003

【4】  FS-EP9315 USER GUIDE ISSUE 1.8. Shenzhen uCdragon Technology Co. Ltd. 2005.6

【5】  錢晨 徐榮華 王欽若,基于linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā),微計(jì)算機(jī)信息,2004.09, 131-133

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉