国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Video4Linux的攝像頭驅動設計

發布時間:2010-8-12 18:08    發布者:lavida
關鍵詞: 攝像頭
0 引言  

隨著多媒體技術、網絡技術的迅猛發展和后PC機時代的到來,利用嵌人式系統實現遠程視頻監控、可視電話和視頻會議等應用已成為可能。為了實現這些應用,實時獲得視頻數據是一個重要環節。針對這一點本文在嵌入式系統平臺上,基于Video4Linux(簡稱V4L)技術,實現了攝像頭驅動開發,詳細敘述了V4L技術和攝像頭在Blackfin536 DSP平臺上的Linux驅動程序設計。  

1 Video4Linux  

V4L是Linux的影像串流系統與嵌入式影像系統的基礎。Linux在TV、多媒體上的應用是目前相當熱門的研究領域,而其中最關鍵的技術則是Linux的V4L。V4L是Linux kernel里支持影像設備的一組APIs,配合適當的攝像頭與攝像頭驅動程序,可以讓我們實現影像采集、AM/FM無線廣播、影像CODEC、頻道切換等功能;而目前最主要的則是應用在影像串流系統與嵌入式影像系統里,其應用范圍相當廣泛,例如:遠距離教學系統、遠距離診斷系統、視頻會議等。  

目前,V4L這套接口已發展為V4L 2,前者比后者簡單,但存在兩個不足之處:驅動程序設計時不能同時打開多個設備;現存的V4L API不能很好地支持帶編碼能力的設備。本文為便于研究攝像頭驅動開發,還是使用V4L。  

V4L主要結構體如下:  



  


camera_open,camera_close是打開和關閉視頻采集設備;camera_read,是讀取視頻圖像;視頻驅動主要的控制接口都是通過 ioctl來實現的,如圖像的格式、亮度、色度等信息都是通過ioctl函數獲取和設置的。ioctl命令部分如下:  



  



V4L支持兩種方式捕獲圖像:mmap(卻嬗成浞絞?和read(直接讀取方式),本系統采用mmap。需預先設置好圖像的大小和深度,接著使用 VIDIOCGMBUF命令,它會返回用于mmap的緩存(buffer)的大小以及每幀緩存的偏移地址(offset)。驅動程序里的映射函數為 static intbf536_v411_mmap(Struct file*filp,structvm_area_struct*vma);抓幀完成后,在應用程序里通過內存映射,讀取圖像數據。  

2 硬件平臺  

本系統采用CMOS模擬傳感器,經TI公司的TVP5150A視頻解碼芯片把模擬信號轉成 ITU-R BT.656視頻信號,再送給ADI公司的Blackfin536 DSP處理器進行圖像處理,如圖1所示。TVP5150向DSP提供采樣時鐘信號CLK(27MHz),8根數據線傳輸內嵌同步控制碼流的ITU-R BT.656格式的數據,DSP通過I2C接口對視頻解碼器進行配置。視頻數據由DMA搬運到SDRAM。  



  


3 驅動程序設計  

3.1 驅動程序核心結構體的介紹  

本系統的軟件平臺是嵌入式uclinux,因此,攝像頭作為一個設備驅動加載到uclinux內核中。一般而言,每個設備驅動都會有它的核心結構體,攝像頭驅動的核心結構體設計如下:struct camera device  



  


該結構體儲存了幾乎全部與攝像頭視頻圖像相關的信息。其中的結構體videoDev和videoV4l1是與V4L相關聯的,ppiDev是與ADSP- BF537處理器硬件配置相關的,而frame[CAMERA_NUMFRAMES]則與采集時當前視頻幀數據相關聯。此外,camera_device 該核心結構體還定義了表示奇偶場的成員變量frame_field,表示當前幀的抓取狀態的成員變量grabbing等。  



  


3.2 硬件配置  

本系統在開發過程中,最主要的難點在于硬件的配置,正確配置TVP5150、PPI、DMA需要搞清楚整個攝像頭的工作原理,以及各種圖像格式的基本知識。本文主要給出PPI和DMA的幾個關鍵配置選項。  



  


3.2.1 PPI配置  

TVP5150A視頻解碼芯片把模擬信號轉換成ITu-RBT.656視頻信號,ITU-R BT.65*:2:2并行接口的數字演播室標準。對于PAL制系統(NTSC系統類似),一幀圖像包括兩場視頻數據(奇偶場),每一場圖像由四部分構成:有效視頻數據,水平消隱,垂直消隱以及控制字。而PPI接口在ITU-656輸入模式下可以支持3種數據傳輸,若選擇有效視頻數據,則可以實現PPI 與TVP5150A解碼器的無縫連接。且傳輸的有效視頻數據就是UYVY422格式,所以配置PPI控制寄存器為ITu-656輸入、傳輸有效視頻數據。 PPI傳輸的有效視頻數據每場都由288行組成,每行有1440個取樣字,其中720個亮度Y取樣字,360個藍色色差Cb,360個紅色色差Cr,按 Cb、Y、Cr、Y的次序排列。而UYVY422格式數據是:每個像素點都取亮度值,而藍色色差和紅色色差是每兩個像素點才各取一個,兩者交替取,所以圖像像素是720×576。這樣可以確定ppi frame=576(整幅圖像的行數)。而ppi count不用配置,因為在ITU-R BT.656視頻信號中有H和V信號。  



  


3.2.2 DMA配置  

本系統采用二維DMA來提高數據的傳輸速度,采用16位傳輸,且傳輸完一場視頻數據后產生中斷。dma_x_count=720(相當于每行數據需傳輸的次數,每行720個像素點,每個像素點2個字節。每行要傳720×2個字節,而dma是16位傳輸,所以x_count=720)。 dma_x_modify=2(相鄰兩次傳輸數據的偏移地址,以字節為單位,因為是16位傳輸,所以為2)。  

由于PAL制視頻數據是隔行掃描,每幀分為奇偶兩場,兩場在時域上是分開的,但是在數據處理時需要將兩場合成一幀進行處理,因此為了減少CPU的處理時間,可以利用DMA直接進行場合成。在一場的傳輸中,DMA在傳輸完一行數據后,預留下一行的存儲空間,將數據存放到第三行的地址。在一場數據傳輸完后,下一場的數據就填充上一場預留的存儲空間,也是隔行存儲,這樣兩場數據就合成一幀數據了。所以,dma_y_modify=1442(一行720像素點,占720×2字節。而一行末地址到下一行首地址還需2字節。所以720×2+2=1442)。同時,兩場數據存放的起始地址的設置間隔也是1442字節。  

3.3 中斷服務子程序  

本系統的中斷服務子程序主要是一場數據采集完后,產生中斷,并根據數據的奇偶場做出相應的處理。其流程如圖2所示。  

4 結束語  

本文介紹了在Blackfin DSP和Linux的平臺下,攝像頭驅動的體系結構和具體實現。此驅動由測試程序測試,可以正常工作。此驅動尚存在不足之處,那就是在驅動的抓幀過程中沒有采用乒乓操作,但是采用了兩個幀緩存來存取數據,因此乒乓操作可以在上層應用中完成。
本文地址:http://m.qingdxww.cn/thread-21084-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品无码一区二区三区不卡| 一道本av免费不卡播放| 中文字幕在线永久| 四虎影院免费在线| 热久久影院| 五月婷婷丁香六月| 中文字幕在线免费观看| 亚洲欧美综合久久| 99在线在线视频观看| 久久视频在线视频观看天天看视频 | 四虎免费永久在线播放| 青青草原在线| 午夜在线播放视频| 一个人hd在线观看| 国产短视频精品区| 青青青久久| 一级毛片在播放免费| 人人看人人做| 中文字幕日韩精品在线| 2019在秋霞理论| 久久精品热只有精品| 日韩精品欧美成人| 特级片网站| 亚洲天堂男人网| 亚洲欧美天堂| 极品网红液液酱粉嫩福利照子凌酱| 午夜快车神马影视| 欧美操操| 日本免费网站视频| 亚洲天堂在线视频观看| 在线观看韩国伦理片| 国产在线播放精品视频| 亚洲AV电影天堂男人的天堂| 一级毛片一| 亚洲天堂免费| 中文字幕色视频| 久色乳综合思思在线视频| 亚洲综合日韩中文字幕v在线| 青青成人在线| 色综合色| 亚洲综合激情|