基于S3C2410嵌入式視頻監(jiān)控系統(tǒng)的研究
1 系統(tǒng)硬件結(jié)構(gòu)
本系統(tǒng)采用模塊化的結(jié)構(gòu)設(shè)計(jì)思想,將設(shè)備分為主控模塊和各個(gè)功能模塊。主控模塊和各功能模塊之間有統(tǒng)一的或者特定的接口形式,用戶可根據(jù)不同的需要選用不同的功能模塊,各種類型的數(shù)據(jù)可以同時(shí)傳輸而不相互干擾,同時(shí)也可根據(jù)市場(chǎng)的需求繼續(xù)擴(kuò)展其它功能模塊。遠(yuǎn)程無(wú)線視頻監(jiān)控系統(tǒng)是由以下幾個(gè)模塊組成:嵌入式 ARM2410 核心控制模塊、自動(dòng)報(bào)警模塊一面使嵌入式模塊上的蜂鳴器發(fā)出警報(bào)聲,同時(shí)發(fā)送報(bào)警信號(hào)通過(guò)GPRS 網(wǎng)絡(luò)及時(shí)的傳回遠(yuǎn)端的監(jiān)控管理中心,以便管理人員及時(shí)發(fā)現(xiàn)并處理火情、傳感器數(shù)據(jù)處理模塊、USB 攝像頭視頻圖像采集處理模塊、GPRS 無(wú)線數(shù)據(jù)傳輸模塊、遠(yuǎn)程監(jiān)控軟件模塊。
圖1 系統(tǒng)結(jié)構(gòu)圖
1.1 USB攝像頭驅(qū)動(dòng)
USB核心在系統(tǒng)中起著重要的作用,它提供了一些專用的API供設(shè)備驅(qū)動(dòng)層操作,而對(duì)主控制器的操作則由系統(tǒng)完成了,USB核心層對(duì)主控制器層的數(shù)據(jù)結(jié)構(gòu)和操作進(jìn)行了封裝。在編寫USB驅(qū)動(dòng)時(shí),只需要和USB核心層進(jìn)行交互。對(duì)于具體設(shè)備的驅(qū)動(dòng)編寫主要也是設(shè)備層驅(qū)動(dòng)的編寫。Linux系統(tǒng)中USB結(jié)構(gòu)如圖2所示:
在Linux內(nèi)核中,設(shè)備驅(qū)動(dòng)程序是一個(gè)個(gè)獨(dú)立的“黑盒子”,使某個(gè)特定硬件響應(yīng)一個(gè)定義良好的內(nèi)部編程接口,這些接口完全隱藏了設(shè)備的工作細(xì)節(jié)。用戶的操作通過(guò)一組標(biāo)準(zhǔn)化的調(diào)用執(zhí)行,設(shè)備驅(qū)動(dòng)負(fù)責(zé)將這些調(diào)用映射到作用于實(shí)際硬件設(shè)備特有的操作上。
在Linux系統(tǒng)中,設(shè)備驅(qū)動(dòng)程序編譯好后,有兩種實(shí)現(xiàn)方法:一種是修改系統(tǒng)內(nèi)核源碼,把驅(qū)動(dòng)靜態(tài)編譯進(jìn)內(nèi)核,使其成為內(nèi)核的一部分;另一種則是編譯成可以動(dòng)態(tài)加載的模塊,由管理員動(dòng)態(tài)的加載。如果把驅(qū)動(dòng)程序譯進(jìn)內(nèi)核,那么內(nèi)核的大小會(huì)增加,內(nèi)核的源文件也需要改變,并不能動(dòng)態(tài)地釋放,不利于系統(tǒng)的調(diào)試,所以在本系統(tǒng)中,為方便調(diào)試,把攝像頭驅(qū)動(dòng)程序編譯成動(dòng)態(tài)加載的模塊。
1.2 視頻采集
視頻采集程序的流程如圖3所示:
圖3 視頻采集流程圖
評(píng)論