基于三星S3C2440A的Micro2440視覺(jué)處理平臺的構建
1 系統整體流程
該平臺設計首先完成了基本的硬件初始化,而CMOS攝像頭驅動(dòng)以及相應的圖像處理作為一個(gè)單獨的模塊進(jìn)行加載運行。該嵌入式系統的加載啟動(dòng)任務(wù)是由BootLoader(BootLoader是嵌入式系統加電后運行的第一段程序)來(lái)完成的。BootLoader分為兩個(gè)階段:第一階段通常由匯編語(yǔ)言實(shí)現完成部分硬件的初始化,創(chuàng )建C語(yǔ)言運行環(huán)境;第二階段繼續進(jìn)行初始化完成MMU、LCD顯示等設置。在系統完成基本硬件的初始化工作后,便可以啟動(dòng)攝像頭進(jìn)行圖像、視頻的采集處理,系統結構如圖1所示。
BootLoader的第一階段啟動(dòng)的流程依次為:ARM啟動(dòng)或重啟→設置中斷向量→禁止看門(mén)狗、中斷→設置時(shí)鐘→Sdram初始化→復制RO/RW段到Sdram→ZI段清零→堆棧初始化→跳轉到main函數。第二階段則完成了以下操作:main函數→端口初始化→設置中斷請求→設置主頻→串口初始化→設置MMU→打開(kāi)Cache→LCD初始化。ARM系統MMU的設計為了便于實(shí)現,采用了2段式的虛擬地址分配方式,每個(gè)頁(yè)(Section)的大小設置為1MB;同時(shí)為了減少對S3C2440地址的修改,采用了虛擬地址與物理地址相同的地址分配方式。
2 LCD設計
Micro2440開(kāi)發(fā)板配有240×320/NEC3.5英寸T- FT真彩液晶屏,正確設置后能夠顯示清晰的圖像、視頻。S3C2440A的LCD控制器支持的屏幕大小包括480×640、240×320以及160×160等尺寸,能夠產(chǎn)生VFRAME、VLINE、VCLK、VM等控制信號。這些控制信號的使用需要配置S3C2440A的C端口為L(cháng)CD控制。同時(shí)LCD的數據線(xiàn)VD[0]~ VD[7]也由C端口控制,VD[8]~VD[23]則由D端口控制,需要設置做為L(cháng)CD數據線(xiàn)。由于使用的是TFT真彩液晶屏,需要把LCD控制寄存器設置為T(mén)FT模式,這里設置為T(mén)FT的16BPP(Bits Per Pixel)模式;同時(shí)還需要對LCDCON5進(jìn)一步設置為5:6:5或5:5:5:1格式,這里設置RGB格式為5:6:5格式,此信號在OV9650傳輸如圖2所示[2]。以便和攝像頭的視頻輸出格式相一致,否則需要進(jìn)行格式的轉化。在設置完幀緩存地址后,寫(xiě)入數據,便可以實(shí)現圖像的顯示,格式轉換過(guò)程如圖3所示。
3 攝像頭驅動(dòng)設計
Micro2440開(kāi)發(fā)板的配套攝像頭型號為OV9650,該攝像頭具有130萬(wàn)像素,輸出視頻格式為YCbCr格式,同時(shí)S3C2440A的CAMIF(Camera Interface) 提供了ITU-R BT.601/656 8位標準輸入的支持[3],最大可采樣4 096×4 096像素的圖像[4],在Preview模式下支持輸出RGB 16/24 bit格式,這對于數字圖像的處理帶來(lái)了便利條件。S3C2440A的CAMIF與OV9650的連接如圖4所示。
OV9650驅動(dòng)流程如下:設置Camera全局控制寄存器,并復位→配置S3C2440A的J端口→使能OV9650的Normal模式→設置接口時(shí)鐘→通過(guò)I2CSCL,I2C-SDA與SID_C, SID_D信號建立S3C2440A與OV9650的通信→設置OV9650的寄存器組→初始化3C2440A攝像頭接口,包括捕獲圖像的寬、高、偏移、輸入格式、輸出格式、緩沖區地址等→將OV9650將LCD緩沖區地址更改到Camera的緩沖區地址,以顯示Camera圖像→清除中斷→設置中斷處理函數→開(kāi)始捕獲圖像。
其中,OV9650與S3C2440A的通信采用了兩線(xiàn)制的SCCB (Serial Camera Control Bus) [5],通過(guò)該接口可實(shí)現各種圖像增強和控制功能,如自動(dòng)曝光、自動(dòng)增益、自動(dòng)白平衡控制等,以及控制圖像色彩、飽和度、銳化、鏡頭校準等[6]。S3C2440A控制端口產(chǎn)生SCCB的啟動(dòng)、停止等控制信號,SCCB 協(xié)議中開(kāi)始條件定義為:在SID_C 為高電平時(shí), SID_D出現一個(gè)下降沿,則SCCB開(kāi)始傳輸;停止條件定義為:在SID_C為高電平時(shí), SID_D出現一個(gè)上升沿,則SCCB停止傳輸;在數據傳輸時(shí),SID_C為高電平時(shí),需要SID_D上的數據的穩定,以便傳輸,如圖5所示。
以寫(xiě)一位數據傳輸為例,基本流程為:將數據放在SID_D上→啟動(dòng)SID_C進(jìn)行傳輸→延時(shí)傳輸后停止SID_C;同理,傳輸8位數據則需循環(huán)8次。類(lèi)似地,讀取時(shí)基本流程為:?jiǎn)?dòng)SID_C→讀取SID_D→停止SID_C。一個(gè)完整的數據傳輸的寫(xiě)周期順序為:寫(xiě)從設備的ID→寫(xiě)設備寄存器的地址→將此寄存器中寫(xiě)入數據。
評論