l系統硬件設計
系統由MXl板、CMOS Sensor攝像頭、FLASH,Sdram,LcD組成,結構如圖1所示。
在系統中,CMOS Sensor攝像頭采集圖像信息,其控制由I2c總線來實現,圖像傳感器采集的數據以DMA方式傳送給MXl板,每幀為640×480 B。M xl板對接收到的數據進行處理之后,將其顯示在LCD上。
硬件平臺的設計遵循穩定性高、可擴展性好,具備一定的抗干擾能力和模塊化標準。系統選用MC9328MXl作為硬件平臺的主控芯片,該芯片為Motorola公司生產的基于ARM920T內核的RISC處理器。SDRAM選用Hynix HY57V281620A,他的存儲容量為4組×2 M×16 b,工作電壓3.3 V±O.3 V,16 b數據寬度,系統SDRAM總容量為32 M。FILASH選用Intel公司
E28f128,該芯片的單片存儲容量為16 M×16 b,工作電壓為2.7~3.6 V。液晶選用SHARP公司的HR-TFT,型號是LQO35Q7DB02,該液晶模塊是TFT型液晶,262 k色顯示。CMOS圖像傳感器采用0V7620,是由美國Omini-vision公司生產的一款高集成高分辨率圖像傳感器,他將所有攝像功能和矩陣處理功能都集成在片上,OV7620是完全可編程的數字單片攝像器件,其分辨率為640×480;支持8位或16位并行數字輸出;支持RGB原始數據輸出,數據格式為RGB 4:2:2[1]。
2系統軟件設計
整個系統軟件構建在嵌入式Linux的基礎之上。軟件平臺使用的ARM-Linux操作系統是由Linux一2.4.18內核打上patch-arm一2.4.18一rmk7.gz和patch-arm一2.4.18一rmk7一pre2.gz補丁后編譯而成。系統采用cramfs文件系統,該文件系統包括應用程序、模塊、配置文件和庫等。圖像的采集和顯示都建立在ARM-Linux內核之上。
2.1 系統軟件的實現原理
系統中圖像傳感器與MXl板的數據傳送采用I2C總線完成[2]。因此,需要編寫I2C總線驅動程序,實現讀/寫圖像傳感器內部寄存器功能,從而控制圖像傳感器的工作模式。然后,編寫圖像傳感器的驅動程序,設置DMA通道及中斷參數,使MXl以DMA方式獲取圖像傳感器采集的數據[2]。再編寫LCD驅動程序,并對LCD進行初始化,編寫基于MXl的應用程序,對獲得的原始數據進行處理,將處理后的數據在LCD上顯示,其軟件結構如圖2所示:
2.2設備驅動程序的設計
設備驅動程序是內核的一部分,是操作系統內核和機器硬件之間的接口,他由一組函數和一些私有數據組成,是連接應用程序與具體硬件的橋梁[3]。Linux的一個基本特點是他對硬件設備的管理抽象化,系統中的每一個設備都用一個特殊的文件來表示。所有的硬件設備都像普通的文件一樣看待,使用與操作系統相同的標準系統進行打開、讀寫和關閉。下面以I2C總線為例,說明如何來編寫驅動程序,其他設備驅動類似。MXl板上I2C總線驅動由I2C core與I2C總線適配器驅動完成。首先初始化I2C的工作模式,然后裝載I2C總線驅動,這需要2個結構模塊描述,struct i2c-adapter和struct i2c-algorithm。初始化i2c-adapter結構成員如下:
其中,name和id成員用來標識I2C適配器。結構體algo提供了I2C訪問總線的方法。algo-data提供了一個供algo使用的私有結構體指針,通常可用他保存操作I2C寄存器等的指針函數。inc-use和dec一use負責增減模塊加載的計數器。函數指針client-regester和client-unreg-ister的調用發生在當有新的I2C從設備驅動程序注冊或者注銷時,可用這個回調來檢測新的I2C從設備是否在總線上[4]。這個模塊并未提供讀寫函數,具體的讀寫方法由結構模塊struct i2c_algorithm提供。
Name和id成員用來標識此結構體。master-xfer是比較關鍵的結構,他定義了I2C上傳輸和接收數據的方法。smbus-xfer是使用SMBus標準傳輸數據的函數,可以設置為空(NULL)。slave-send和slave-reev是I2C適配器作為從設備時的發送和接收函數,algo-control負責定義設備私有的ioctl[4]。通過調用I2C core中的接口函數i2c_add-adapter將這2個模塊注冊到操作系統里,完成總線驅動的裝載。
3圖像數據的壓縮
MC9328MXl的CSI(CMOS SensorInterface)接口處理得到的一幀圖像數據較大,為了提高傳輸速率和適合應用中的遠程傳輸,在MXl端傳送數據前,需要將RGB數據通過適當的圖像壓縮處理。MC9328MXl芯片沒有集成硬件的圖像壓縮編碼器,但其主頻可達200 MHz,可以采用軟件的圖像壓縮方法。基于CPU的處理能力和提高
單幀采樣圖像的清晰度,采用基于離散余弦變換法(DCT) 的JPEG/MJPEG方式對圖像數據進行壓縮編碼[5],減少了數據傳輸量,提高LCD每秒顯示圖像的幀數,使顯示的畫面更加流暢。
4 結 語
系統中在一次DMA請求時間內,主控制器能否確保請求得到響應并傳輸完成決定了整個系統的速率。該系統可進行單幅或連續圖像采集,每秒可采集圖像10幀。實驗表明系統適用于高質量實時圖像采集場所,具有很好的應用前景。