基于A(yíng)RM9微處理器的遠程圖像無(wú)線(xiàn)監控系統設計
對圖像監控系統,用戶(hù)常常提出這樣的功能需求:希望能夠監控距離較遠的對象
本文引用地址:http://dyxdggzs.com/article/150007.htm這些對象有可能分布在郊區、深山,荒原或者其他無(wú)人值守的場(chǎng)合;另外,希望能夠獲取比較清晰的監控圖像,但對圖像傳輸的實(shí)時(shí)性要求并不高,很明顯,用傳統的PC機加圖像采集卡的方式很難滿(mǎn)足這樣的需求。
在嵌入式領(lǐng)域,ARM9系列微處理器在高性能和低功耗方面提供了最佳的性能,因此選用ARM9嵌入式處理器S3C2440設計實(shí)現了一個(gè)遠程圖像光線(xiàn)監控系統通過(guò)這個(gè)系統,可以遠在千里之外控制一個(gè)攝像機進(jìn)行圖像采集并回傳。如果這個(gè)攝像機有一個(gè)485接口的云臺,還可以通過(guò)互聯(lián)網(wǎng)遠程控制攝像機的取景角度、鏡頭拉伸、聚焦等功能.
除了獲取圖像數據.系統還提供了多路開(kāi)關(guān)控制和數據采集功能,可以連接溫度、濕度等各類(lèi)傳感器和控制紅外夜視燈等其他外部設備的開(kāi)關(guān)狀態(tài)。最后,通過(guò)GPRS或CDMA無(wú)線(xiàn)通信模塊及Internel互聯(lián)網(wǎng)將數據傳至任何地方
1 系統設計
本系統采用三星公司的S3C2440嵌入式處理器和arm-linux2.4.26操作系統;S3C2440使用ARM920T內核,主頻是400MHz;除了集成通用的串口控制器、USB控制器、A/D轉換器和GPIO等功能之外,還集成了一個(gè)攝像頭接門(mén)(CAMIF)(這個(gè)接口是遠程圖像采集的核心部分)。系統在S3C2440處理器的控制下,從CCD攝像機采集模擬視頻信號,然后經(jīng)過(guò)編碼、DMA傳輸到內存緩沖,接著(zhù)由軟件對內存中的數字視頻數據進(jìn)行壓縮和打包.最后通過(guò)通信單元將圖像以IP包的方式發(fā)送到監控中心的服務(wù)器。整個(gè)系統的硬件結構原理如圖1所示
1.1 圖像采樣接口
S3C2440的攝像頭接口(CAMIF)支持ITU-R BT.601/656
YCbCr8比特標準的圖像數據輸入,最大可采樣4096×4096像素的圖像。攝像頭接口可以有兩種模式與DMA控制器進(jìn)行數據傳輸:一種是P端口模式,把從攝像頭接口采樣到的圖像數據轉為RGB數據,并在DMA控制下傳輸到SDRAM(一般這種模式用來(lái)提供圖像預覽功能);另一種是C端口模式,把圖像數據按照YCbCr4:2:0或4:2:2的格式傳輸到SDRAM(這種模式主要為MPEG-4、H.263等編碼器提供圖像數據的輸入)。上述兩種工作模式都允許設置一個(gè)剪輯窗口,只有進(jìn)入這個(gè)窗口的圖像數據才能夠傳輸到SDRAM。上述過(guò)程可用圖2說(shuō)明。
S3C2440的攝像機接口接收ITU標準的圖像數據,不能直接接收CCD攝像機輸出的模擬視頻信號,因此還需要1片SAA7113視頻解碼芯片。SAA7113可以輸入4路模擬視頻信號,通過(guò)內部寄存器的不同配置可以對4路輸入進(jìn)行轉換,輸入可以為4路CVBS或2路S視頻(Y/C)信號,輸出8位“VPO”總線(xiàn),為標準的ITU656、YUV 4:2:2格式。對SAA7113初始化需要通過(guò)I2C 總線(xiàn)進(jìn)行,而S3C2440內部集成的I2C控制器正好可以實(shí)現這個(gè)過(guò)程。S3C2440的攝像機接口與SAA7113的連接原理如圖3所示。
SAA7113 的CE 引腳與S3C2440 的一個(gè)GPIO 引腳相連,這樣可以控制SAA7113的工作狀態(tài)。當無(wú)須采集圖像時(shí),將該GPIO口輸出低電平,使SAA7113芯片處于低功耗狀態(tài),節省電能的消耗。對照圖2和圖3可以看出,SAA7113芯片就是圖2的“外部圖像傳感器”。它向嵌入式系統的攝像機接口提供了采樣到的標準ITU視頻數據。這些數據經(jīng)過(guò)DMA的P端口或C端口控制傳輸到了內存,這樣就可以在內存中對圖像數據作進(jìn)一步的加工處理。
1.2
圖像采樣接口的驅動(dòng)按照Linux視頻設備驅動(dòng)的模型V4L(video for Linux)編寫(xiě)了SAA7113與S3C2440攝像機接口的驅動(dòng)。驅動(dòng)使用C端口模式與DMA進(jìn)行通信。采樣1幀圖像之前,首先設置采樣圖像的分辨率和剪輯窗口大小等參數,然后設置DMA控制器訪(fǎng)問(wèn)的視頻采樣輸出緩沖的內存地址,接著(zhù)就可以通過(guò)設置S3C2440的CAMIF接口控制寄存器啟動(dòng)1幀圖像的采集。當采集完1幀圖像時(shí),CAMIF接口會(huì )自動(dòng)啟動(dòng)1次C端口的DMA通信,把采集的圖像數據傳到內存。傳輸結束后,會(huì )產(chǎn)生一個(gè)C端口的中斷,通知驅動(dòng)1幀數據采樣和傳輸結束。具體來(lái)說(shuō),這個(gè)驅動(dòng)需要實(shí)現以下功能:
初始化S3C2440的CAMIF接口的時(shí)鐘寄存器。主要是根據SAA7113的外接晶振頻率設置攝像機時(shí)鐘分頻寄存器(CAMDIVN)。該寄存器的0~3位是分頻系數,其計算方法是:
CAMCLK_DIV=UPLL/(CAMCLK * 2)-1
(初始化代碼略— — 編者注)
配置CAMIF接口的采樣參數。主要是輸入源圖像數據的格式、輸出的圖像格式、采樣的窗口大小、DMA的訪(fǎng)問(wèn)地址等參數。這里定義了一個(gè)結構,用于存儲與CAMIF接口相關(guān)的配置信息:
struct s3c2440_camif_cfg_t {
int src_x; //輸入的源圖像寬度
int src_y; //輸入的源圖像高度
int
dst_x; //輸出的目標圖像寬度
int dst_y; //輸出的目標圖像高度
int dst_fmt;
//輸出的目標圖像數據格式
int pre_x; //預覽通道(P端口模式)輸出的圖像寬
int pre_y;
//預覽通道(P端口模式)輸出的圖像高
int pre_fmt; //使用通道(P端口模式)時(shí)設為1
__u16 bypass;
//為1時(shí)表示不啟用按比例的圖像放大/縮小
__u16 ycbcr; //輸入圖像的YcbCr順序
struct s3c2440_camif
*dev; //設備的系統信息
};
上述這些配置信息最終是與一系列的寄存器相關(guān)聯(lián)的。這個(gè)結構為讀/寫(xiě)寄存器提供了一個(gè)清晰的、集中的存儲緩沖。
打開(kāi)、關(guān)閉和控制攝像機的接口函數。這3個(gè)接口函數是按V4L規范編寫(xiě)的,其原型如下:
① 打開(kāi)攝像機接口函數:
static int
v4l_cam_open(struct video_device *v,int mode);
② 控制攝像機接口函數:
static int
v4l_cam_ioctl(struct video_device *v,unsigned int cmd,void *arg);
③
關(guān)閉攝像機接口函數:
static void v4l_cam_close(struct video_device *v);
中斷處理接口函數。該中斷處理函數在使用C端口模式完成1幀圖像采集后被調用。函數原型定義如下:
static void
s3c2440_camif_isr_c(int irq,void *dev_id,struct pt_regs *regs);
讀取圖像數據的實(shí)現函數。該函數通過(guò)dev→rdy的值判斷1幀圖像有無(wú)采集轉換結束。如果該值置1,則表示采樣結束,這時(shí)就可以從圖像數據的緩沖中拷貝數據到用戶(hù)的存儲空間;如果為0,則函數進(jìn)入阻塞或返回EAGAIN標志。順便提一下,dev→rdy的值是在中斷處理函數中設置的。(實(shí)現代碼略——編者注)
1.3 圖像數據的壓縮
S3C2440的CAMIF接口處理得到的1幀圖像數據比較大,還要經(jīng)過(guò)進(jìn)一步的壓縮才能適合進(jìn)行網(wǎng)絡(luò )數據傳輸。S3C2440處理器內部沒(méi)有提供硬件的圖像壓縮編碼器,但因為它的主頻較高,可以使用軟件來(lái)進(jìn)行圖像壓縮??紤]到CPU的處理能力和對單幀采樣圖像的清晰度有較高的要求,采用基于離散余弦變換算法(DCT)的JPEG/MJPEG方式對圖像數據進(jìn)行壓縮編碼。
1.4
圖像數據的傳輸
通信單元承擔了圖像的數據傳輸任務(wù)。在本系統中,有兩種通信單元可供使用。一種是GPRS/CDMA無(wú)線(xiàn)傳輸模塊。它們通過(guò)串口與S3C2440處理器相連接,在以太網(wǎng)絡(luò )傳輸線(xiàn)纜難以鋪設的環(huán)境中可以使用這種通信方式。它的缺點(diǎn)是通信帶寬小,傳輸速度慢,但是如果對實(shí)時(shí)性要求不高,也能夠傳輸高清晰的靜態(tài)圖片。另一種通信單元是10MHz的CS8900a以太網(wǎng)絡(luò )傳輸模塊。它可與局域網(wǎng)相連接,然后將監控圖像發(fā)送到局域網(wǎng)的監控服務(wù)器或者通過(guò)網(wǎng)關(guān)發(fā)送到互聯(lián)網(wǎng)上。這種通信方式速度高,實(shí)時(shí)性好,但監控現場(chǎng)要安裝有線(xiàn)的以太網(wǎng)絡(luò )。
評論