摘 要:介紹了一種利用嵌入式技術(shù)設(shè)計(jì)的視頻監(jiān)控系統(tǒng)。該系統(tǒng)終端以ARM 9處理器為核心,USB攝像頭作為視頻采集模塊,網(wǎng)卡芯片DM9000為以太網(wǎng)通信模塊。視頻監(jiān)控系統(tǒng)終端移植Linux操作系統(tǒng),配置相應(yīng)的驅(qū)動(dòng),編寫視頻采集和發(fā)送程序,最后與客戶端組成完整系統(tǒng)。
關(guān)鍵詞:ARM9;Linux;嵌入式系統(tǒng);視頻監(jiān)控
ARM處理器具有性能高,成本低的特點(diǎn),在嵌入式中被廣泛使用。 Linux作為源代碼開放的操作系統(tǒng),其特有的優(yōu)勢(shì)和開發(fā)模式正日益影響人們。本文將二者結(jié)合,構(gòu)建一個(gè)視頻監(jiān)控嵌入式系統(tǒng)。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 硬件結(jié)構(gòu)
該系統(tǒng)終端采用基于ARM920T內(nèi)核的Samsung S3C2440A作為中央處理器,并且配備64M的SDRAM,256M的NAND FLASH和2M的NOR FLASH,以應(yīng)對(duì)移植Linux操作系統(tǒng)和系統(tǒng)保存的數(shù)據(jù)所需要的內(nèi)存空間。 該系統(tǒng)的主要硬件還有視頻采集模塊,以太網(wǎng)通信模塊,UART串口和電源接口。系統(tǒng)硬件整體框圖如圖1所示
1.2 視頻采集模塊
視頻采集模塊采用了中星微電子公司ZC301芯片的 USB攝像頭,該攝像頭芯片具有圖像信號(hào)處理,數(shù)據(jù)壓縮,JPEG譯碼等圖像處理功能,攝像頭傳感器采用CMOS感光元件,元件像素130萬,采集的圖像清晰,畫面穩(wěn)定,色彩真實(shí)鮮艷。視頻采集模塊的USB接口電路原理圖如圖2所示。
圖2中,使用5v的電源為USB供電,22Ω電阻的R23,R24在串行數(shù)據(jù)通信時(shí)可以起到緩沖抗干擾的作用,R27,R28為15K的大電阻,確保了USB高速串口數(shù)據(jù)通信的可靠性。
1.3 以太網(wǎng)通信模塊
通信模塊采用DAVICOM公司的10/100 Mb/s自適應(yīng)以太網(wǎng)芯片DM9000,該芯片是完全綜合的,成本較低的單一快速以太網(wǎng)控制器芯片,具有通用處理器接口,既可以接8位,16位的處理器,也可以接32位的處理器。在本系統(tǒng)中該芯片與一個(gè)集成RJ45的網(wǎng)絡(luò)接口相連,其電路原理圖如圖3所示。
圖3中的HR911103A是一個(gè)集成RJ45的網(wǎng)絡(luò)變壓器,確保通信雙方可以正常接收和發(fā)送信息,50Ω的電阻RD1,RD5和RD3,RD6使信號(hào)在接受和發(fā)送時(shí)起到抗干擾的作用,電源VDD33v接著大電阻R16,R39,流出的電流較小,可以驅(qū)動(dòng)綠,黃LED燈。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 操作系統(tǒng)的移植
PC通過arm-linux-gcc交叉編譯工具構(gòu)造交叉編譯環(huán)境,編譯Uboot生成燒入FLASH的引導(dǎo)程序,編譯Linux內(nèi)核生成Linux鏡像文件zImage,并使用yaffs根文件制作工具mkyaffs2image生成Linux系統(tǒng)根文件鏡像rootfs.img,最后通過USB下載工具將上述文件下載到終端。
2.2 服務(wù)端視頻采集和發(fā)送程序設(shè)計(jì)
視頻采集和發(fā)送由一個(gè)應(yīng)用進(jìn)程完成,但將該進(jìn)程生成了兩個(gè)線程,每個(gè)線程完成相應(yīng)功能。因?yàn)長(zhǎng)inux內(nèi)核的攝像頭驅(qū)動(dòng)為攝像頭捕獲圖像提供了一套API接口:V4L2,并且攝像頭支持JPEG視頻流直接獲取,所以視頻采集線程直接利用V4L2就能采集和存儲(chǔ)攝像頭捕獲的數(shù)據(jù)。在驅(qū)動(dòng)的配置中,網(wǎng)卡驅(qū)動(dòng)和TCP/IP協(xié)議被同時(shí)加載到內(nèi)核,這使得應(yīng)用進(jìn)程可以建立一個(gè)TCP套接字服務(wù)端,并指定一個(gè)專用端口7070,等待客服端的連接。一旦連接出現(xiàn),發(fā)送線程就會(huì)向客戶端發(fā)送視頻數(shù)據(jù)。為了得到一張完整的圖片數(shù)據(jù),應(yīng)用進(jìn)程運(yùn)用條件變量使得兩個(gè)線程保持同步。視頻采集和視頻發(fā)送的流程圖如圖4所示
2.3 視頻監(jiān)控客戶端設(shè)計(jì)
視頻監(jiān)控客戶端是基于Linux平臺(tái)的應(yīng)用程序,其主要的功能是接收由視頻監(jiān)控終端采集,發(fā)送的視頻數(shù)據(jù),并播放視頻數(shù)據(jù)。Spcaview是一款開放源碼的視頻軟件,既可以接收和發(fā)送視頻數(shù)據(jù),又可以播放視頻數(shù)據(jù),非常適合做視頻監(jiān)控客戶端。該軟件采用Linux C語言和Java腳本語言共同編寫,代碼簡(jiǎn)潔,組件功能明確,遵循GPLv2條款,任何組織和個(gè)人可以在此條款下修改和發(fā)布它的源碼。在Linux平臺(tái)fedora9下構(gòu)造視頻監(jiān)控客戶端的簡(jiǎn)單步驟如下:
下載最新源碼:Spcaview-20061208.tar,解壓該源碼:tar xvzj Spcaview-20061208.tar,進(jìn)入該源碼目錄并編譯:cd Spcaview-20061208,make,最后在此目錄下啟動(dòng)該軟件。
3 結(jié)語
本文介紹了基于ARM9處理器的嵌入式系統(tǒng)的硬件和軟件設(shè)計(jì),完成了視頻監(jiān)控的功能。該系統(tǒng)采用可裁剪的Linux操作系統(tǒng)和流行的ARM芯片,既降低成本,又有完善的功能,對(duì)于視頻監(jiān)控方面有一定參考價(jià)值。
參考文獻(xiàn)
[1]Yaghmour,K. 構(gòu)建嵌入式Linux系統(tǒng)[M]. 韓存兵,龔波,改編. 北京:中國(guó)電力出版社,2004.
[2]宋寶華. Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解[M]. 北京:人民郵電出版社,2010,11.
[3]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008,8.
[4]賀丹丹,張帆,劉峰.嵌入式Linux系統(tǒng)開發(fā)教材[M].北京:清華大學(xué)出版社,2010,5.
作者簡(jiǎn)介
李濤,男,湖北省荊州市人,正在讀碩士研究生,主要研究方向嵌入式系統(tǒng)與應(yīng)用。