許敏
摘要:針對工業(yè)生產(chǎn)、交通、智能辦公、銀行等場所對以視頻監(jiān)控的廣泛使用,設計一種基于S3C2410為核心芯片搭建硬件平臺,采用嵌入式Linux軟件操作開發(fā)系統(tǒng),通過 Liunx軟件操作平臺,實現(xiàn)視頻數(shù)據(jù)的采集、圖像編碼、傳輸和保存。使用USB攝像頭視頻圖像采集處理模塊、GPRS無線數(shù)據(jù)傳輸?shù)扔布K模塊。通過Interne網(wǎng)絡傳輸,通過網(wǎng)絡與遠程終端設備的通信,對視頻進行遠程監(jiān)控,實時性強、成本底、性能穩(wěn)定。
關(guān)鍵詞:視頻監(jiān)控;嵌入式;S3C2410
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)08-1802-02
隨著計算機和網(wǎng)絡技術(shù)的迅速發(fā)展,采用嵌入式網(wǎng)絡攝像機,具有數(shù)字化、智能化,必然是視頻監(jiān)控系統(tǒng)發(fā)展的必然趨勢[1]。設計基于以S3C2410為核心的ARM嵌入式平臺,結(jié)合圖形采集模塊,實現(xiàn)視頻數(shù)據(jù)的采集、壓縮以及傳輸。視頻監(jiān)控設備體積小、通訊便利,可以實現(xiàn)對各種移動終端設備或者以太網(wǎng)的直接接入。傳統(tǒng)的視頻監(jiān)控系統(tǒng)采用數(shù)字芯片集成技術(shù),信號處理速度低,導致系統(tǒng)的穩(wěn)定性不過穩(wěn)定,而嵌入式視頻監(jiān)控系統(tǒng)更具有網(wǎng)絡化程度高、性能穩(wěn)定的特點[2]。
1 硬件系統(tǒng)設計
系統(tǒng)的結(jié)構(gòu)組成采用模塊化設計,設備分為主控模塊和各個功能模塊,各個模塊的組成通過特定的接口方式連接起來。遠程實時監(jiān)控系統(tǒng)采用Samsung公司的處理器S3C2410作為主控器件,S3C2410芯片支持Linux,有多個功能寄存器和常用接口,控制系統(tǒng)協(xié)議的轉(zhuǎn)化,可以通過以太網(wǎng)控制器控制物理層的芯片[3]。實現(xiàn)對視頻的采集,外圍電路的配置擴展了64 Mbyte的16 bit FLASH和64 Mbyte的32 bit SDRAM,通過GPIO與以太網(wǎng)控制芯片CS8900A的連接擴展為網(wǎng)絡接口。視頻的獲取使用與Linux兼容性好、圖像流暢、清晰圖高的,有視頻壓縮編碼芯片的ZC0301P攝像頭,實現(xiàn)JPEG壓縮,通過USB口將攝像頭連接到處理器上,來進行對視頻數(shù)據(jù)的采集和處理,然后通過GPRS無線數(shù)據(jù)網(wǎng)絡將視頻傳輸?shù)竭h程移動終端上顯示。系統(tǒng)的硬件結(jié)構(gòu)如圖1。
2 系統(tǒng)的總體架構(gòu)
該嵌入式視頻監(jiān)控系統(tǒng)主要由服務器端和客戶端組成。服務器端有圖像采集模塊、視頻圖像網(wǎng)絡傳輸GPRS模塊組成,將圖像數(shù)據(jù)進行壓縮、編碼后輸出JPEG格式的二進制位流,然后將采集的一幀JPEG圖像的耳機去位流通過接口發(fā)送到遠程終端設備上[4]??蛻舳说墓δ苁菍崿F(xiàn)遠程終端設備的視頻顯示。①視頻采集:在硬件系統(tǒng)中,攝像頭ZC0301與S3C2410通過USB接口相接,進行接口通信需要在Linux內(nèi)核中安裝支持和加載ZC0301的USB硬件驅(qū)動模塊。攝像頭捕獲的圖像數(shù)據(jù)通過USB接口傳輸?shù)絊3C2410處理器中,S3C2410對采集到的圖像進行實時的編碼和壓縮,編碼后傳輸?shù)骄彌_區(qū),等待發(fā)送。②網(wǎng)絡無線數(shù)據(jù)傳輸:采用CS8900A作為網(wǎng)絡接口,S3C2410通過地址、數(shù)據(jù)、控制線和內(nèi)部寄存器的設置對CS8900A網(wǎng)絡芯片進行控制和通信[5]。CS8900A以太網(wǎng)控制芯片通過DMA通道進行數(shù)據(jù)的傳輸。GPRS模塊是具有網(wǎng)絡功能的芯片,通過串行協(xié)議的通信方式,將采集得到的JPEG數(shù)據(jù)打包成資料包,通過Internet接入服務器連接。③遠程移動終端設備通過以太網(wǎng)連接到網(wǎng)絡服務器,將視頻實時顯示出來,實現(xiàn)遠程監(jiān)控。系統(tǒng)總體架構(gòu)如圖2。
3 軟件設計與實現(xiàn)
嵌入式視頻監(jiān)控系統(tǒng)的主要部分是有軟件程序設計來實現(xiàn),軟件部分的設計主要包括視頻采集程序、視頻傳輸程序以及客戶端網(wǎng)絡連接程序。
使用常用的Video4Linux接口函數(shù)訪問USB攝像頭設備,捕獲生成實時的視頻流[6]。Video4Linux是Linux對視頻設備的內(nèi)核級驅(qū)動,是Linux下的一個統(tǒng)一的用于獲取視頻和音頻數(shù)據(jù)的API接口,因此在編譯內(nèi)核的時候,在內(nèi)核的/kernel目錄下輸入make menuconfig命令進行相應的選擇,在Multimedia devices選項下選擇【*】Video For Linux。使用ZC0301P芯片攝像頭,Linux內(nèi)核對此不支持,要對其驅(qū)動進行加載。采用Linux下通用的攝像頭驅(qū)動spca5xx。下載對應的內(nèi)核的驅(qū)動補丁,然后將其放倒內(nèi)核源碼的/driver/usb目錄下解壓、打補丁。內(nèi)核編譯后將生產(chǎn)攝像頭驅(qū)動模塊:spca5xx.o文件,使用insmod命令加載spca5xx.o文件,最后系統(tǒng)便會在/dev/下生成video 文件。使用Video4Linux支持的structv4_struct數(shù)據(jù)結(jié)構(gòu)[7],成員結(jié)構(gòu)的定義如下
Struct vdIn{
int fd; /*設備描述符*/
struct video_channel ; /*各個信號源的屬性*/
struct video_picture; /*設備采集圖像各種屬性*/
struct video_mbuf ; /*攝像頭存儲器緩沖的幀信息*/
struct video_mmap; /*用于內(nèi)存映射*/
int hdrheight;
……
視頻圖像采集程序分為頻采集設備的初始化、打開視頻設備、獲取設備信息3個部分。
初始化采集設備函數(shù): if (init_videoIn(videoIn, dev, width, height, fps, format, 1) < 0) { IPRINT("init_VideoIn failed\n");
closelog();
exit(EXIT_FAILURE); }
②打開視頻設備函數(shù):if ((vd→fd = open(vd→videodevice, O_RDWR)) == -1) { perror("ERROR opening V4L interface"); return -1; }
③獲取圖像信息函數(shù):int input_run(void) { pglobal→buf = malloc(videoIn→framesizeIn);
if (pglobal→buf == NULL) { fprintf(stderr, "could not allocate memory\n");
exit(EXIT_FAILURE); }
4 結(jié)束語
基于嵌入式的視頻監(jiān)控系統(tǒng),使用S3C2410芯片和ZC0301視頻處理芯片,應用Linux操作系統(tǒng),設計基于ARM平臺的嵌入式視頻監(jiān)控系統(tǒng),使視頻傳輸流暢、穩(wěn)定性高,功耗低,構(gòu)建成本低廉,能夠被多種移動終端設備應用,實現(xiàn)實時的視頻監(jiān)控,實現(xiàn)對現(xiàn)場監(jiān)測的智能化。
參考文獻:
[1] 鄭鷺斌,紀景清,陳華云.嵌入式網(wǎng)絡攝像機的設計與實現(xiàn)[J].計算機技術(shù)與發(fā),2012,22(1):168-169.
[2] 許剛.基于ARM11的嵌入式視頻采集系統(tǒng)設計[J].測控技術(shù),2013,32(4):37-38.
[3] 照敏,楊恢先,湯安平.基于S3C2410的嵌入式Linux系統(tǒng)移植的研究[J].電子器件,2008,31(6):1947-1948.
[4] 張敏海,吳新開,張婷婷.基于JPEG壓縮編碼算法的數(shù)字圖像處理系統(tǒng)[J].計算機系統(tǒng)應用,2012,10(22):135-136.
[5] 常鋒,孟傳良.基于ARM-Linux的網(wǎng)絡驅(qū)動程序設計[J].通信技術(shù),2012,45(6):32-33.
[6] 錢鷹,陳勝利.基于嵌入式平臺的USB攝像頭圖像采集及顯示[J].電子設計工程,2013,21(3):140-141.
[7] 趙春媛,李萌,韓會山.基于ARM9的無線視頻監(jiān)控系統(tǒng)設計與實現(xiàn)[J].計算機工程與設計,2012,33(2):531-532.