基于S3C2410的嵌入式圖象傳輸系統(tǒng)設(shè)計(jì)
1 引言
如何更好的獲得監(jiān)控現(xiàn)場的圖象數(shù)據(jù)一直是棘手的一個(gè)問題,傳統(tǒng)的方法是采用CCD攝象機(jī)獲取現(xiàn)場的視頻信息,這種方法易于實(shí)現(xiàn),但成本較高。隨著 ARM系列處理器應(yīng)用的越來越廣和基于linux的嵌入式技術(shù)的迅速發(fā)展,利用linux自身帶有的TCP/IP協(xié)議來實(shí)現(xiàn)遠(yuǎn)程監(jiān)控、圖象傳輸已成為可能。本文提出的正是一種這樣的方法,利用市場上很常見的中星微系列的USB攝象頭來得到現(xiàn)場的圖象數(shù)據(jù),利用linux內(nèi)核中的Video4Linux編程接口函數(shù)采集圖象,并把得到的圖象通過Internet傳輸?shù)缴衔粰C(jī)PC上,在PC上實(shí)現(xiàn)圖象的保存和顯示。
2 硬件系統(tǒng)設(shè)計(jì)原理
系統(tǒng)的硬件功能框圖如圖1所示,CPU采用的是三星公司的S3C2410。該處理器內(nèi)部集成了A R M 公司A R M 9 2 0 T 處理器核的3 2 位微控制器,并帶有獨(dú)立的16KB的指令Cache 和16KB的數(shù)據(jù)Cache、L C D 控制器、R A M 控制器、NAND 閃存控制器、3路UART、4路DMA 、4路帶PWM 的Timer、并行I/O口、8路10位ADC、觸摸屏接口、I2C接口、I2S接口、2個(gè)U S B 接口控制器、2路SPI,主頻最高可達(dá)203MHZ。在此基礎(chǔ)上,平臺還進(jìn)行了相應(yīng)的配置和擴(kuò)展,配置了4MB16位的Flash和8MB32位的 SDRAM,通過以太網(wǎng)控制芯片DM9000E擴(kuò)展了一個(gè)網(wǎng)口。引出了一個(gè)UART接口,通過RS232可以和宿主機(jī)做串口通訊。并引出了一個(gè)HOST USB接口,通過在USB接口上外接一個(gè)帶USB的攝象頭將采集到的圖象數(shù)據(jù)放入輸入緩沖區(qū)中。對緩沖區(qū)的數(shù)據(jù)進(jìn)行處理,最后通過網(wǎng)口發(fā)送到 Internet上,在PC上保存和接收。
圖 1 S3C2410系統(tǒng)平臺的硬件功能框圖
3 軟件系統(tǒng)設(shè)計(jì)
本文的軟件系統(tǒng)設(shè)計(jì)采用C/S(客戶機(jī)/服務(wù)器)模式,以S3C2410平臺作為服務(wù)器,以PC作為客戶端。服務(wù)器的主要任務(wù)是把得到的圖象數(shù)據(jù)發(fā)送到Internet上去,客戶端的任務(wù)主要是從Internet上接收得到的數(shù)據(jù),并把數(shù)據(jù)以保存成文件。下面分別討論兩者的具體實(shí)現(xiàn)。
3.1 服務(wù)器端軟件系統(tǒng)設(shè)計(jì)
3.1.1 建立宿主機(jī)開發(fā)環(huán)境
本文以PC為宿主機(jī),并帶有RedHat9.0系統(tǒng),開發(fā)環(huán)境就建立在這個(gè)平臺上,其主要包括:交叉編譯器的的選擇和安裝、NFS和TFTP服務(wù)器的配置等。
對于嵌入式系統(tǒng)的開發(fā),由于沒有足夠的資源在目標(biāo)板上運(yùn)行開發(fā)工具和調(diào)試工具,所以通常采用交叉編譯調(diào)試的方式。開發(fā)時(shí)使用宿主機(jī)上的交叉編譯、匯編及連接工具形成可執(zhí)行的二進(jìn)制代碼。然后把可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行。本文采用的交叉編譯器為arm-linux- gcc,具體安裝不再贅述。為了方便調(diào)試和下載燒寫,可讓宿主機(jī)支持NFS和TFTP服務(wù)器。需要特別說明的是為了支持TFTP服務(wù)器需要在安裝 RedHat9.0時(shí)須選擇完全安裝,如果沒有選擇完全安裝,需要將第三張光盤里面的tftp-server-0.32-4.i386.rpm和 tftp-0.32-4.i386.rpm安裝到宿主機(jī)下。
3.1.2 攝象頭驅(qū)動程序的實(shí)現(xiàn)
系統(tǒng)采用的是最普通的USB攝像頭,主芯片為中星微ZC0301P。這種攝象頭的一個(gè)特點(diǎn)是可以實(shí)現(xiàn)硬件JPEG編碼。其驅(qū)動程序的編寫重點(diǎn)包括下面的內(nèi)容:提供基本的I/O 操作接口函數(shù)open、read、write、close的實(shí)現(xiàn)、對中斷的處理實(shí)現(xiàn)、內(nèi)存映射功能以及對I/O 通道的控制接口函數(shù)ioctl的實(shí)現(xiàn)等,并把它們定義在struct file_operations中。這樣當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行諸如open、close、read、write等系統(tǒng)調(diào)用操作時(shí),Linux內(nèi)核將通過file_operations結(jié)構(gòu)訪問驅(qū)動程序提供的函數(shù)。
評論