




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、分類: 2012-07-07 00:09 5458 人閱讀(1)關(guān)鍵詞:android camera CMM 模組 camera 參數(shù)平臺信息: 內(nèi)核:linux 系統(tǒng):android平臺:S5PV310(samsung exynos 4210)下載:新項目開案,代碼他們還沒給得到,三星那邊辦事流程就是多,煩人(嘿嘿只是說說,流程 從另一方面說明了人家標準化的程度高)。看看代碼,把前一段時間工作的內(nèi)容整理下,發(fā)出來。一方面有相同問題的同學下T以看下,說不定問題就解決了;再一方面自己工作方面記錄吧,整個流程整理出來, 加深自己的印象, 技術(shù)還得提高呀。這樣利人利己的事多做 點好 為人民服務! (
2、我不是* *黨,只是技術(shù)P民)這篇比較基礎,做為科普知識看一下。一、攝像頭模組(CCM)介紹:1、camera 特寫攝像頭模組,全稱 CameraCompact Module ,以下簡寫為 CCM ,是影像捕捉至關(guān)重要 的電子器件。先來張?zhí)貙?,各種樣子的都有,不過我前一段時間調(diào)試那個有點丑。2、攝像頭工作原理、camera的組成各組件的作用想完全的去理解,還得去深入,如果是代碼我們就逐步分析, 模組的話我們就把它分解開來,看他到底是怎么工作的。看下它是有那些部分構(gòu)成的,如下圖所示:鏡座倍頭電容、電 阻(1)、工作原理:物體通過鏡頭(lens)聚集的光,通過CMOS或CCD集成電路,把光信號轉(zhuǎn)換
3、成電信號,再經(jīng)過內(nèi)部圖像處理器( ISP)轉(zhuǎn)換成數(shù)字圖像信號輸出到數(shù)字信號處理器(DSP)加工處理,轉(zhuǎn)換成標準的 GRB、YUV等格式圖像信號。(2)、CCM 包含四大件:鏡頭(lens)、傳感器(sensor)、軟板(FPC )、圖像處理芯 片(DSP)。決定一個攝像頭好壞的重要部件是:鏡頭( lens)、圖像處理芯片(DSP )、傳感器(sensor) 。 CCM的關(guān)鍵技術(shù)為:光學設計技術(shù)、非球面鏡制作技術(shù)、光學鍍膜技 術(shù)。鏡頭(lens )是相機的靈魂,鏡頭(lens)對成像的效果有很重要的作用,是利用透鏡的折射 原理,景物光線通過鏡頭,在聚焦平面上形成清晰的影像,通過感光材料CMOS或
4、CCD感光器記錄景物的影像。鏡頭廠家主要集中在臺灣、日本和韓國,鏡頭這種光學技術(shù)含量高 的產(chǎn)業(yè)有比較高的門檻,業(yè)內(nèi)比較知名的企業(yè)如富士精機、柯尼卡美能達、 大立光、Enplas傳感器(sensor )是CCM的核心模塊,目前廣泛使用的有兩種:一種是廣泛使用的CCD(電荷藕合)元件;另一種是CMOS (互補金屬氧化物導體)器件。電荷藕合器件圖像傳感器CCD (Charge Coupled Device ),它使用一種高感光度的半導體材料制成,能把光線轉(zhuǎn)變成電荷,通過模數(shù)轉(zhuǎn)換器芯片轉(zhuǎn)換成數(shù)字信號。CCD由許多感光單位組成,通常以百萬像素為單位。當 CCD表面受到光線照射時,每個感光單位會將電荷反映
5、在組件上,所有的感光單位所產(chǎn)生的信號加在一起,就構(gòu)成了一幅完整的畫面。CCD傳感器模塊以日本廠商為主導,全球規(guī)模市場有90%以上被日本廠商壟斷,以索尼、松下、夏普為龍頭。互補性氧化金屬半導體 CMOS (Complementary Metal-Oxide Semiconductor )主要是 利用硅和鑄這兩種元素所做成的半導體,使其在 CMOS上共存著帶N (帶-電)和P (帶+ 電)級的半導體,這兩個互補效應所產(chǎn)生的電流即可被處理芯片紀錄和解讀成影像。CMOS傳感器主要美國、臺灣和韓國為主導,主要生產(chǎn)廠家有美國OmniVision、Agilent、Micron,臺灣的銳像、原相、泰視等,韓國
6、的三星、現(xiàn)代。圖像處理芯片(DSP)是CCM的重要組成部分,它的作用是將感光芯片獲得的數(shù)據(jù)及時 快速地傳遞中央處理器并刷新感光芯片,因此DSP芯片的好壞,直接影響畫面品質(zhì)(比如色彩飽和度,清晰度等)。FPC柔性電路板(柔性PCB):簡稱“軟板,又稱柔性線路板”,連接芯片和手機。起到電信號 傳輸作用。3、camera模組的裝配方式(1)、定焦模組裝配圖CCM分為定焦模組和自動變焦模組,其中定焦模組主要由鏡頭、鏡座、感光集成電路、軟 性線路板、補強和鋼片裝配而成,其裝配圖如下:他黃頭LENS fiiHOLDER .信!戌器SENSOR軟件線路板FPC補強PI鋼片 STEEL/PI(2)、自動變焦模
7、組裝配圖以前我不知道手機上的光學變焦是怎么會事,以為那些都是忽悠人的,看這個圖這下明白了,如果你也不知道,看下這個圖,原來里面有個音圈馬達,這個只有高像素的模組才有,這個我們不用管,知道怎么光學變焦就可以了。自動變焦模組由鏡頭、音圈馬達、底座支架、感光集成電路、驅(qū)動集成電路和連接器組成, 其裝配圖如下:(3)、3D模組傳說中的3D是怎么會事,多幾臺攝像機拍攝。手機上也有了? ?有點強大看人家手機上用的,感覺看著不太好看, 高科技的東西開始就是做得丑了一點,我們了解有這個東西就行了:4、攝像頭的一些技術(shù)指標(1)、圖像解析度/分辨率(Resolution)QSIF/QQVGA160x120192
8、00QCIF176 x 14425344SIF/QVGA320 x24076800CIF352x28810137610萬像素VGA640x48030720030萬像素(35萬是指648X488)SVGA800x60048000050萬像素XGA1024x76878643880萬像素SXGA1280x10241310720130萬像素UXGA1600x12001920000200萬像素QXGA2048x15363145728300萬像素(320W)QSXGA2592x19445038848500萬像素2816x21122947392600萬像素I3072x23047077888700萬像素320
9、0x24007680000770萬像素3264x24487990272800萬像素3876x2584100155841000萬像素|(2)、圖像格式(imageFormat/Colorspace)RGB24 , 420是目前最常用的兩種圖像格式。RGB24 :表示R、G、B三種顏色各 8bit,最多可表現(xiàn)256級濃淡,從而可以再現(xiàn) 256*256*256 種顏色。I420 : YUV 格式之一。其它格式有:RGB565 , RGB444 , YUV422 等。(3)、自動白平衡調(diào)整(AWB)定義:要求在不同色溫環(huán)境下,照白色的物體,屏幕中的圖像應也是白色的。色溫表示光譜成份,光的顏色。色溫低表
10、示長波光成分多。當色溫改變時,光源中三基色(紅、綠、藍)的比例會發(fā)生變化,需要調(diào)節(jié)三基色的比例來達到彩色的平衡,這就是白平衡調(diào)節(jié)的實際。(4)、圖像壓縮方式JPEG: (joint photo graphicexpert group)靜態(tài)圖像壓縮方式。一種有損圖像的壓縮方式。壓縮比越大,圖像質(zhì)量也就越差。當圖像精度要求不高存儲空間有限時,可以選擇這種格式。目前大部分數(shù)碼相機都使用JPEG格式。(5)、彩色深度(色彩位數(shù))反映對色彩的識別能力和成像的色彩表現(xiàn)能力,實際就是A/D轉(zhuǎn)換器的量化精度,是指將信號分成多少個等級。常用色彩位數(shù)(bit)表示。彩色深度越高,獲得的影像色彩就越艷麗動人?,F(xiàn)在市
11、場上的攝像頭均已達到24位,有的甚至是 32位(6)、圖像噪音指的是圖像中的雜點干撓。表現(xiàn)為圖像中有固定的彩色雜點。(7)、視角與人的眼睛成像是相成原理,簡單說就是成像范圍。(8)、輸出/輸入接口串行接口 (RS232/422):傳輸速率慢,為 115kbit/s并行接口(PP):速率可以達到1Mbit/s紅外接口(IrDA):速率也是115kbit/s , 一般筆記本電腦有此接口通用串行總線 USB:即插即用的接口標準,支持熱插拔。USB1.1速率可達12Mbit/s,USB2.0 可達 480Mbit/sIEEE1394(火線)接口(亦稱ilink):其傳輸速率可達 100M400Mbit
12、/s今天 有點晚了,后繼續(xù)分析 camera sensor 接口、s5pv310 CAMIF 接口、V4L2、FIMC、 和我們最終的sensor驅(qū)動。分類:2012-07-08 21:59 6499 人閱讀 (11) 關(guān)鍵詞:android camera CMM 模組 camera 參數(shù) CAMIF 平臺信息: 內(nèi)核:linux系統(tǒng):android 平臺:S5PV310(samsung exynos 4210)下載: 一、攝像頭工作原理上一篇我們講了攝像頭模組的組成, 工作原理,做為一種了解。下面我們析攝像頭從寄存器 角度是怎么工作的。如何閱讀攝像頭規(guī)格書(針對驅(qū)動調(diào)節(jié)時用到關(guān)鍵參數(shù),以GT
13、2005為例)。規(guī)格書,也就是一個器件所有的說明,精確到器件每一個細節(jié),軟件關(guān)心的寄存器、硬件關(guān)心的電氣特性、封裝等等。單單驅(qū)動方面,我們只看對我們有用的方面就可以了,沒必要全部看完。主要這樣資料全都是鳥語(En),全部看完一方面時間上會用的比較多,找到關(guān)鍵的地方就行了。1、camera的總體示意圖如下: 控制部分為攝像頭上電、IIC控制接口,數(shù)據(jù)輸出為攝像頭 拍攝的圖傳到主控芯片,所有要有data、行場同步和時鐘號。 GT2005/GT2015 是CMOS接口的圖像傳感器芯片,可以感知外部的視覺信號并將其轉(zhuǎn)換為數(shù)字信號并輸出。我們需要通過 MCLK給攝像頭提供時鐘,RESET是復位線,PWD
14、N在攝像頭工作時應該始終為低。PCLK是像素時鐘,HREF是行參考信號,VSYNC是場同步信號。一旦給 攝像頭提供了時鐘,并且復位攝像頭,攝像頭就開始工作了, 通過HREF , VSYNC和PCLK 同步傳輸數(shù)字圖像信號。數(shù)據(jù)是通過D0D7這八根數(shù)據(jù)線并行送出的。Column CDSWbit ADC控制接口Pixel Array 1616H x 1216V (1600H x 1200V)Analog ProcessingSignal Pcic口sing-Interpolation一加 * noise-Gamma-Edge enhanceTiming ControlConfiguration 1
15、Registers |RESETMCLKSDASCL致?lián)敵鯵UV RGB PCLKVSYNCHSYNC(1)、Pixel ArrayGT2005陣列大小為 1268歹U、1248行,有效像素為 1616列,1216行。也就是說攝 像頭為1600X1200的時候,像素點要多于這個,去除邊緣一部分,保證圖像質(zhì)量吧。(2)、IIC這個不用說了,攝像頭寄存器初始化的數(shù)據(jù)都從這里傳輸?shù)模械?IIC器件 都一樣的工作,來張圖吧,后面做詳細分析;Address or data byte Stop condition卜面這一部分在調(diào)試驅(qū)動的過程中比較重要了:(3)、 MCLK電子元件工作都得要個時鐘吧,
16、攝像頭要工作,這個就是我們所要的時鐘, 在主控制芯片提供,這個時鐘一定要有,要不然攝像頭不會工作的。(4)、上下電時序,這個要接規(guī)格書上來,注間 PWDN、RESETB這兩個腳,不同的攝 像頭不太一樣,這個圖是上電時序,上電時參考一下,知道在那里看就行;DVDD15 |DVDD費 I1QVPD% VVPWDN|RESETB I(5) PCLK D1D7攝像頭得到的數(shù)據(jù)要傳出來吧,要有數(shù)據(jù),當然數(shù)據(jù)出來要有時鐘和同步信號了,看下它的時序,和LCD顯示的時序一樣,道理是一樣的:岫gifijinnnnnnnmmMnmminnmn: : 丁j HRF (1HJXHartraM -a -TLJrLrLr
17、LrLmvrTrLrLrLrLn(6)、主要的寄存器:分辨率、YUV順序、X軸、Y軸鏡相、翻轉(zhuǎn)以上工作完成后,也許還有一些問題,分辨率太小;YUV順序不對圖像不對;XY圖像方向。這些工作完成后,如果還有什么細節(jié)的問題,如果你想花時間,看規(guī)格書里面的寄存器可以解決的,如果不想看,找模組廠的FAE,他們專業(yè)的,很快會幫你搞定。、攝像頭的硬件接口DVDD28C3O.luFOJuFIOVDD /XoDVDD15DIBlDIAlE6 6A6童VREFAVDD25式吟。DDVDD28。DDVDD28 .。DAGNDDCGNDD0DDGNDMCLKDGNDHSYNCVSYNCDVDD15SBDAIOVDDS
18、BCLIOVDDPCLKDPWDNEX1RESETBGC2015D3 D助D4 D 2 -Df DC6 D5U4 灰6:B5慶方L2 MCLKAilSYCB3 WSYNCBJ SBDAA5 SBCLD6 PCLKA3_PWDN_B2 RESETB二、S5pv310 上Camera 主控芯片上的硬件接口1、CAMIF Camera Interface先看一下攝像頭接口框圖:(這個看著有點抽像,我們放這里,先了解一下,其實驅(qū)動中一般不會涉及到這里,不過我們這里分析了,就把這個帶出來了)CAME RA 1 CAP4ERA2 CAMERA3 CAP任 RA4ITUITUMIPIAPIycbcr4 2
19、2 |于11ycbcr4 2 2ba yer rgbdirect fifo .,工 direct nfowrite ,. ., writeback backycbcr4:4:44AXI Mater(read)ycbcr4 2 0ycbcr4 2 2rgb G-18/24 bitinput 0Output DMAJIYCbCr4:2:0/YCbCr4:2:2 YCbCr4:4:4 RGB16/18/24bit Bayer RGB 8/10/12bit JPEGinput KotatorDirect FIFO?Direct FIFOhiterfaceYCbCr4:4:4RG024bitAXf Ma
20、ter(Write)(1)、攝像頭接口的主要屬性:a、支持多種輸入接口:(就是上面我們看到的四模式)DMA (AXI 64-bitinterface) 模式;MIPI (CSI)模式;ITU-R BT 601/ 656/ 709模式;Direct FIFO (PlayBack) 模式;b、支持多種輸出模式:DMA (AXI 64-bitinterface) 模式;Direct FIFO 模式;c、支持數(shù)碼變焦 Digital Zoom In (DZI) capability ;d、支持多攝像頭輸入;e、支持視頻同步信號極性可編程控制;f、支持最大輸入分辨率為8192X8192 ;g、支持圖像翻
21、轉(zhuǎn)(X軸、Y軸鏡相 ,90、180、270翻轉(zhuǎn));h、支持多種圖片格式;i、支持捕獲幀控制;j、支持的圖像特效。2、FIMC Fully InteractiveMobile Camera攝像頭的采集的數(shù)據(jù)要CPU無法直接處理,主控芯片里面集成了Camera控制器,叫FIMC ( FullyInteractive Mobile Camera )。攝像頭需要先把圖像數(shù)據(jù)傳給控制器,經(jīng)過控 制器處理(裁剪拉升后直接預覽或者編碼)之后交給CPU處理。實際上攝像頭工作需要的時鐘(MCLK )也是FIMC給它提供的。在s5pv310上的攝像頭接口是一個FIMC(完全交互式移動相機接口,支持ITURBT-6
22、01-605 標準、AMX 接口、MIPI 接口MIPI、ITU、AMX(1)、ITU國際電信聯(lián)盟無線電通信部門ITU-RRadiocommunication Sector of ITU 簡稱ITU-R ITU-R BT.601 16位數(shù)據(jù)彳輸;Y、U、V信號同時傳輸,是并行數(shù)據(jù),行場同步單獨 輸出。ITU-R BT.656 8/10位數(shù)據(jù)傳輸;不需要同步信號;串行數(shù)據(jù)傳輸;傳輸速率是601的2倍; 先傳Y,后傳UV。行場同步信號嵌入在數(shù)據(jù)流中。(2)、MIPI (移動行業(yè)處理器接口) 是 MobileIndustry Processor Interface 的縮寫 MIPI 規(guī) 范:Came
23、ra 工作組:MIPI Camera Serial Interface 1.0specification .Camera Serial Interface 2 v1.0 (CSI-2)(3)、AMX (Advanced extensible Interface )是一種總線協(xié)議,該協(xié)議是 ARM 公司提 出的 AMBA (Advanced Microcontroller BusArchitecture ) 3.0 協(xié)議中最重要的部分,是一 種面向高性能、高帶寬、低延遲的片內(nèi)總線。3、接口信息FIMC信號定義如下所示(YCbCr模式)SignalI/ODescriptionTypeHREFI行同
24、步信號 PCLKI時鐘DATA7:0I像素數(shù)據(jù)FIELDOFIELD 2 二MCLKO系統(tǒng)時鐘信號通過CAM_MCLK給攝像頭提供時鐘,RST是復位線,PWDN在攝像頭工作時應該始終為 低。HREF是行參考信號,PCLK是像素時鐘,VSYNC是場同步信號。一旦給攝像頭提供 了時鐘,并且復位攝像頭,攝像頭就開始工作了,通過 HREF , PCLK和VSYNC同步傳輸 數(shù)字圖像信號。數(shù)據(jù)是通過DATA0DATA7這八根數(shù)據(jù)線并行送出的。4、不同接口模式的工作時序ITU-R BT 656輸入時序圖,這種方式下同步信號已經(jīng)內(nèi)嵌到視頻數(shù)據(jù)中了,因此不需要額外 的行和幀同步信號。PCLKDATA7:0JI
25、TU-R BT 601輸入時序圖,這種方式下行和幀同步信號獨立于視頻數(shù)據(jù),因此需要同步信號(ITU-R BT 601:16 位數(shù)據(jù)傳輸;21芯; Y U、V信號同時傳輸。ITU-R BT 656: 9芯,不需要同步信號;8位數(shù)據(jù)傳輸;串行視頻傳輸;傳輸速率是601的2倍;先傳Y,后傳UV。)同步信號的時延參數(shù)t1 :表示VSYNC前、后插入周期t2 :表示HREF前插入周期t3 :表示HREF寬度t4 :表示HREF后插入周期5、camera 的時鐘域,三個時鐘:系統(tǒng)時鐘、PCLK、MCLK每個攝像頭接口包括三個時鐘域,每一個時鐘域是系統(tǒng)總線時鐘,第二個是攝像頭像素時鐘PCLK ,第三個時鐘域
26、為內(nèi)部時鐘 MCLK。系統(tǒng)總線時鐘必需高于 PCLK , CAM_MCLK必需固定頻率分頻,如 PLL時鐘。如果有外部時鐘晶振,CAM_MCLK 空掉。不需要同步MMCLK , PCLK應該與schmitt-triggered 電平移位器連接。rxxnXusbXTlSClK_H 口 ML27M sclkIusbphyo SCLK_US8PHY1 SCLKUSSPHYMPLL-EPLLVPLLbcusbxnSCLK_HDMl27Fu1 sclkIusbphyo SCLK_USBPHY1 SCLKUSBPHY MPLL-EPLLVPLLDisplyControJJerCSISMPLLAPLLfoc
27、riXusbXTlSCLK_HDMI27M SCLUSBPHD SCLK_USBPHY1 SCLK-USBPHYMPLLEPLLVPLL內(nèi)日CLKCSI CLKPCLK BAMF:nmiuinggeredPCLK ADIVIDECounterDIVIDECounterDIVIDECounterEXTERNAL CAMERA PROCESSOR AEXTERNALCAMERAPROCESSOR B.SchmftttriggeredDIVIDECounter6、硬件接口電路主控芯片上的接口: ftpCAM、PCLKCAM_VSYNCXciPCLGPEO.DXciVSYNC/GPEO 1AA14CA
28、MA HSYNC工嚴g wXciHREF/GPEO 20MXcrYDATAD/GPEO 3 fl/nr riM.XcfYDATAVGPE0_4-XciYDATA2/GPE0 5XciYDATA3/GPE0 6XciYDATM/GPE0_7XciYDATA5/GPEl 0XcrYDATA6/GPE1 1CAMA DAT AOL、AB15CAMA DATA1CAMA.DATA2DATJLli陽 16ABKCAA19CAM由 DATA4 CAMADATA5 CAMA DATA6AB211cY1 8AB171rAA17CAM_DATA7 CAMA_MCLK CAMA ftSTXcrYDATAT. GP
29、El 2XctCl_KBnti?GPE1 3XciFELD/GPE1 4AB19_Jcamera 接口OR八八3DGND1 STANDBY SDAD7SCLD6AVDD2.3V D5VPPRESETNC1D4VDD 1.BVD3SHUT, DOWN D2 NC2D1VDD IODOAF2.8V DNGD3 HSYNCPCLKVYSNC DGND226OR J Ja 8425DD CAMA A2S q524623722VDD CAMA DIB q821920101911ia1713161415CAMA_MCLKCAMA_SDA CAM / CLCAMA_PWDNCAMA_HSYNCCAMA_VS
30、YNC1282- MCLK AGND 一方G 日 G425S-H 恤 EM。分類: 2012-07-08 23:13 5257 人閱讀(4)關(guān)鍵詞:android camera CMM模組 camera 參數(shù) CAMIF V4L2平臺信息:內(nèi)核:linux系統(tǒng):android平臺:S5PV310(samsung exynos 4210)下載:前面兩篇說的有點多了,不過多了解點東西也挺好的,遇到問題時可以有更多的思路,真正驅(qū)動是從這一塊開始。一般 BSP的camera都是完好的,我們只用關(guān)心驅(qū)動這些就可 以了。1 . V4L21)簡介在Linux中,攝像頭方面的標準化程度比較高,這個標準就是V4
31、L2驅(qū)動程序,這也是業(yè)界比較公認的方式。V4L全稱是Video for Linux ,是Linux內(nèi)核中標準的關(guān)于視頻驅(qū)動程序,目前使用比 較多的版本是 Video for Linux 2 ,簡稱V4L2。它為Linux下的視頻驅(qū)動提供了統(tǒng)一的接口, 使得應用程序可以使用統(tǒng)一的API操作不同的視頻設備。從內(nèi)核空間到用戶空間,主要的數(shù)據(jù)流和控制類均由 V4L2驅(qū)動程序的框架來定義。V4L2驅(qū)動程序一般只提供 Video數(shù)據(jù)的獲得,而如何實現(xiàn)視頻預覽,如何向上層發(fā)送數(shù)據(jù), 如何把純視頻流和取景器、視頻錄制等實際業(yè)務組織起來, 都是camera的硬件抽象層需要 負責的工作。V4L2 驅(qū)動核心實現(xiàn)為如
32、下文件:drivers/media/video/v4l2-dev.c 。V4l2-dev.h中定義的video_device是V4L2驅(qū)動程序的核心數(shù)據(jù)結(jié)構(gòu),它為具體的攝像頭 sensor驅(qū)動提供了接口調(diào)用。V412的采集過程(應用程序):1) 打開設備,獲得文件描述符;2) 設置圖片格式;3) 分配緩沖區(qū);4) 啟動采集過程,讀取數(shù)據(jù);5) 停止采集,關(guān)閉設備。fimcdev.cF1MCiimc_capture.c fimc_output.c firrtG_orlay.C fimc_rieg cgt2005.cgc0308 csensor鹿件 003080j GT2005|2)數(shù)據(jù)結(jié)構(gòu)V4L
33、2的主要數(shù)據(jù)結(jié)構(gòu)是 video_device ,定義在 v4l2_dev.h 中: CPP1. struct video_device2. 3. /* device ops */4. const struct v4l2_file_operations *fops; /*接口函數(shù)指針 */5.6. /* sysfs */7. struct device dev; /* v4l 設備結(jié)構(gòu) */8. struct cdev *cdev; /*字符設備結(jié)構(gòu) */9.10. /* Set either parent or v4l2_dev if your driver uses v4l2_device
34、*/11. struct device *parent; /*設備父指針 */12. struct v4l2_device *v4l2_dev; /* v4l2設備指針 */13.14. /* device info */15. char name32; /* 設備名稱 */16. int vfl_type;17. /* minor is set to -1 if the registration failed */18. int minor;/* 次設備號*/19. u16 num;20. /* use bitops to set/clear/test flags */21. unsigne
35、dlong flags;22. /* attribute to differentiate multiple indices on one physical device */23. int index;24.25. /* V4L2 file handles */26. spinlock_t fh_lock; /* Lock for all v4l2_fhs */27. struct list_head fh_list; /* List of struct v4l2_fh */28.29. int debug; /* debug 級別*/30.31. /* Video標準變量*/32. v4l
36、2_std_id tvnorms; /* Supported tv norms */33. v4l2_std_id current_norm; /* Current tvnorm */34.35. /*回調(diào)函數(shù)*/36. void (*release)(struct video_device *vdev);37.38. /* ioctl回調(diào)函數(shù)*/39. const struct v4l2_ioctl_ops *ioctl_ops;40. ;主要接口函數(shù)有:intvideo_register_device(struct video_device *vdev, int type, int nr)
37、 ;static intv4l2_ioctl(struct inode *inode, struct file *filp,unsigned int cmd, unsigned longarg);2. FIMC1)簡介FIMC這個模塊不僅僅是一個攝像頭的控制接口,它還承擔著V4L2的output功能和overlay的功能。FIMC 的驅(qū)動在內(nèi)核中的位置:drivers/media/video/samsung/fimc它包含下邊的文件:fimc_regs.cfimc_capture.cfimc_dev.cfimc_output.cfimc_overlay.cfimc_v4l2.c它們的組織關(guān)系如
38、下:fimc_capture.cfini c_overiay.cFIMCGT2005可以看到,F(xiàn)IMC的驅(qū)動實現(xiàn)了 v4l2所有的接口,可以分為v4l2-input設備接口,v4l2-output 設備接口以及v4l2-overlay設備接口。這里我們主要關(guān)注v4l2-input設備接口,因為攝像頭屬于視頻輸入設備。fimc_v4l2.c里面注冊了很多的回調(diào)函數(shù),都是用于實現(xiàn) v4l2的標準接口的,但是這些回調(diào) 函數(shù)基本上都不是在fimc_v4l2.c里面實現(xiàn)的,而是有相應的.c分別去實現(xiàn)。比如:v4l2-input 設備的操作實現(xiàn):fimc_capture.cv4l2-output 設備的操
39、作實現(xiàn):fimc_output.cv4l2-overlay 設備的操作實現(xiàn):fimc_overlay.c這些代碼其實都是和具體硬件操作無關(guān)的,這個驅(qū)動把所有操作硬件寄存器的代碼都寫到一個文件里面了,就是 fimc40_regs.c 。這樣把硬件相關(guān)的代碼和硬件無關(guān)的代碼分開來實現(xiàn) 是非常好的方式,可以最大限度的實現(xiàn)代碼復用。2)數(shù)據(jù)結(jié)構(gòu)FIMC的主要數(shù)據(jù)結(jié)構(gòu) fimc_control ,定義在fimc.h中:cpp1. struct fimc_control 3. char2. int id; /* 控制器 id */ name16;4. atomic_t in_use;5. void _io
40、mem *regs; /* 寄存器 i/o */6. struct clk *clk; /* interface clock */7. struct regulator regulator; /* pd regulator */8. struct fimc_meminfo mem; /* for reserved mem */9.10. /* kernel helpers */11. struct mutex lock; /* controller lock */12. structmutexalloc_lock;13. structmutexv4l2_lock;14. wait_queue_
41、head_t wq;15. structdevice*dev;16. int irq;17.18. /* v4l2 related */19. struct video_device*vd;20. struct v4l2_devicev4l2_dev;21.22. /* fimc specific */23. struct fimc_limit *limit; /* H/W limitation */24. struct s3c_platform_camera *cam; /* activated camera */25. struct fimc_capinfo *cap; /* captur
42、e dev info */26. struct fimc_outinfo *out; /* output dev info */27. struct fimc_fbinfofb;/* fimd info */28. struct fimc_scaler sc; /* scaler info */29. struct fimc_effectfe;/* fimc effect info */30.31. enum fimc_status status;32. enum fimc_log log;33.34. u32 ctx_busyFIMC_MAX_CTXS;35. ;因為FIMC 一共有三套一樣
43、的控制器(fimcO, fimc1, fimc2 ),所以驅(qū)動里使用了一個數(shù)組 來描述:cpp1. struct video_device fimc_video_deviceFIMC_DEVICES = 2. 0 = 3. .fops = &fimc_fops,4. .ioctl_ops = &fimc_v4l2_ops,5. .release = fimc_vdev_release,6. ,7. 1 = 8. .fops = &fimc_fops,9. .ioctl_ops = &fimc_v4l2_ops,10. .release = fimc_vdev_release,11. ,12.
44、2 = 13. .fops = &fimc_fops,14. .ioctl_ops = &fimc_v4l2_ops,15. .release = fimc_vdev_release,16. ,17. ;fb_ops結(jié)構(gòu)體是針對 v4l2設備的基本操作,定義如下:cpp1.static const struct v4l2_file_operations fimc_fops = 2.owner=THIS_MODULE,3.open=fimc_open,4.release=fimc_release,5.ioctl =:video_ioctl2,6.read=fimc_read,7.write=fi
45、mc_write,8.mmap=fimc_mmap,9.10.poll :.;=fimc_poll,3) FIMC初始設置在S5PV210中,F(xiàn)IMC初始設置代碼在 /drivers/ arch/arm/mach-s5pv210/mach-smdkv310.c 中:cpp1. static struct s3c_platform_fimc fimc_plat = 2. .srclk_name = mout_mpll,3. .clk_name = sclk_fimc,4. .lclk_name = sclk_fimc_lclk,5. .clk_rate = 166750000,6. .defau
46、lt_cam = CAMERA_CSI_C,7. .camera = 8. &mt9P111,/5M back cam9. &s5k6aafx,/1.3M front cam10. ,11. .hw_ver = 0x43,12. ;中:對于 GPIO 的配置代碼在/drivers/ arch/arm/mach-s5pv210/setup-fimc0.c cpp1. oid s3c_fimc0_cfg_gpio(struct platform_device *pdev)2. 3. int i = 0;4.5. /* CAM A port(b0010) : PCLK, VSYNC, HREF, D
47、ATA0-4 */6. for (i = 0; i 8; i+) 7. s3c_gpio_cfgpin(S5PV210_GPE0(i), S3C_GPIO_SFN(2);8. s3c_gpio_setpull(S5PV210_GPE0(i), S3C_GPIO_PULL_NONE);9. 10. /* CAM A port(b0010) : DATA5-7, CLKOUT(MIPI CAM also), FIELD */11. for (i = 0; i 5; i+) 12. s3c_gpio_cfgpin(S5PV210_GPE1(i), S3C_GPIO_SFN(2);13. s3c_gpio_setpull(S5PV210_GPE1(i), S3C_GPIO_PULL_NONE);14. 15. /* CAM B port(b0011) : DATA0-7 */16. for (i = 0; i 8; i+) 17. s3c_gpio_cfgpin(S5PV210_GPJ0(i), S3C_GPIO_SFN(3);18.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商品混凝土合作協(xié)議書
- 幫父母保管財產(chǎn)協(xié)議書
- 村集體房屋購買協(xié)議書
- 耗材質(zhì)保協(xié)議書
- 廢木材買賣合同協(xié)議書
- 合伙人同股合同協(xié)議書
- 財產(chǎn)遺贈協(xié)議書
- 租房補償協(xié)議書
- 秘書補充協(xié)議書
- 聯(lián)防聯(lián)保協(xié)議書
- GA∕T 1729-2020 保安防衛(wèi)棍-行業(yè)標準
- 水電站擴建工程砂石加工系統(tǒng)施工組織設計
- 蒙牛冰淇淋經(jīng)銷商管理制度
- 振動測量評價標準介紹
- 配方法練習題
- 外協(xié)出入庫流程
- 復習:金屬的化學性質(zhì)
- 公路隧道斜井與正洞交叉口施工方法
- 出庫單樣本12623
- 衛(wèi)生保潔檢查表
- 年產(chǎn)10萬噸氯乙烯工藝設計(共53頁)
評論
0/150
提交評論