天天看點

S3C2440A WiinCE下CMOS驅動程式修改和攝像頭應用程式

    今日在處理Windows CE5.0下的s3c2440a攝像頭相關程式,在網上找了很多資料,但是未免不全,經過這些天的總結,在驅動和應用程式處理的工程當中需要注意一下幾個問題,在此列出,便于讀者參考。

      1、在Windows CE5.0當中,驅動和應用程式是分開的,虛拟記憶體的位址存在着很大的差異,是以不能直接用驅動中的RGB_ADRESS來直接擷取RGB資料,驅動中CAM_IOCTL_SAMSUNG_CAM_PR指令不能用,這塊就需要自己修改驅動程式,第一可以繼續實作CAM_IOCTL_SAMSUNG_CAM_PR指令,第二可以實作CIS_Read函數。

     2、攝像頭的資料是RGB565格式的資料,如果采用RGB565轉化的BMP資料進行顯示,圖檔模糊且不清楚,是以建議将RGB565轉化為RGB888資料進行顯示,轉化的代碼如下;

#define RGB565_MASK_RED 0xF800

#define RGB565_MASK_GREEN 0x07E0

#define RGB565_MASK_BLUE 0x001F 

unsigned short *pRGB16 = (unsigned short *)DDBdata;

        for(int i=0; i            unsigned short RGB16 = *pRGB16;     

            g_rgbbuf[i*3+2] = (RGB16&RGB565_MASK_RED) >> 11;       

            g_rgbbuf[i*3+1] = (RGB16&RGB565_MASK_GREEN) >> 5;     

             g_rgbbuf[i*3+0] = (RGB16&RGB565_MASK_BLUE);     

            g_rgbbuf[i*3+2] <<= 3;     

            g_rgbbuf[i*3+1] <<= 2;     

            g_rgbbuf[i*3+0] <<= 3;     

            pRGB16++;

        }

     3、在應用程式當中需要擷取RGB資料,第一要從驅動中讀取RGB資料,但是在這開始之前需要發送IOCTL_CAM_CONT,開始啟動(Play)CMOS攝像頭,才能擷取資料。

    隻要注意以上三點,編寫Windows CE5.0+S3C2440A下的CMOS驅動和攝像頭應用程式都不存在問題。

繼續閱讀