新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于S3C2440處理器的遠程圖像無線監控系統設計方案

        基于S3C2440處理器的遠程圖像無線監控系統設計方案

        作者: 時間:2011-12-06 來源:網絡 收藏

        SAA7113 的CE 引腳與 的一個GPIO 引腳相連,這樣可以控制SAA7113的工作狀態。當無須采集圖像時,將該GPIO口輸出低電平,使SAA7113芯片處于低功耗狀態,節省電能的消耗。對照圖2和圖3可以看出,SAA7113芯片就是圖2的“外部圖像傳感器”。它向嵌入式系統的攝像機接口提供了采樣到的標準ITU視頻數據。這些數據經過DMA的P端口或C端口控制傳輸到了內存,這樣就可以在內存中對圖像數據作進一步的加工處理。

        1.2 采樣接口驅動

        圖像采樣接口的驅動按照Linux視頻設備驅動的模型V4L(video for Linux)編寫了SAA7113與攝像機接口的驅動。驅動使用C端口模式與DMA進行通信。采樣1幀圖像之前,首先設置采樣圖像的分辨率和剪輯窗口大小等參數,然后設置DMA控制器訪問的視頻采樣輸出緩沖的內存地址,接著就可以通過設置的CAMIF接口控制寄存器啟動1幀圖像的采集。當采集完1幀圖像時,CAMIF接口會自動啟動1次C端口的DMA通信,把采集的圖像數據傳到內存。傳輸結束后,會產生一個C端口的中斷,通知驅動1幀數據采樣和傳輸結束。具體來說,這個驅動需要實現以下功能:

        初始化S3C2440的CAMIF接口的時鐘寄存器。主要是根據SAA7113的外接晶振頻率設置攝像機時鐘分頻寄存器(CAMDIVN)。該寄存器的0~3位是分頻系數,其計算方法是:

        CAMCLK_DIV=UPLL/(CAMCLK * 2)-1

        (初始化代碼略— — 編者注)

        配置CAMIF接口的采樣參數。主要是輸入源圖像數據的格式、輸出的圖像格式、采樣的窗口大小、DMA的訪問地址等參數。這里定義了一個結構,用于存儲與CAMIF接口相關的配置信息:

        基于S3C2440處理器的遠程圖像無線監控系統設計方案

        上述這些配置信息最終是與一系列的寄存器相關聯的。這個結構為讀/寫寄存器提供了一個清晰的、集中的存儲緩沖。

        打開、關閉和控制攝像機的接口函數。這3個接口函數是按V4L規范編寫的,其原型如下:

        ① 打開攝像機接口函數:

        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);

        ③ 關閉攝像機接口函數:

        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);

        讀取圖像數據的實現函數。該函數通過dev→rdy的值判斷1幀圖像有無采集轉換結束。如果該值置1,則表示采樣結束,這時就可以從圖像數據的緩沖中拷貝數據到用戶的存儲空間;如果為0,則函數進入阻塞或返回EAGAIN標志。順便提一下,dev→rdy的值是在中斷處理函數中設置的。(實現代碼略——編者注)

        1.3 圖像數據的壓縮

        S3C2440的CAMIF接口處理得到的1幀圖像數據比較大,還要經過進一步的壓縮才能適合進行網絡數據傳輸。S3C2440處理器內部沒有提供硬件的圖像壓縮編碼器,但因為它的主頻較高,可以使用軟件來進行圖像壓縮。考慮到CPU的處理能力和對單幀采樣圖像的清晰度有較高的要求,采用基于離散余弦變換算法(DCT)的JPEG/MJPEG方式對圖像數據進行壓縮編碼。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 张家界市| 柞水县| 红安县| 察雅县| 江达县| 静安区| 怀柔区| 江阴市| 遂川县| 怀化市| 剑阁县| 宁强县| 朔州市| 肃宁县| 台北县| 印江| 科技| 白河县| 石阡县| 达州市| 通城县| 克东县| 建水县| 潢川县| 行唐县| 兴安县| 嘉定区| 清涧县| 金湖县| 水富县| 河北省| 烟台市| 田东县| 宽城| 根河市| 蓬莱市| 林州市| 丰都县| 阿坝县| 绥德县| 石屏县|