久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 基于V4L2的視頻驅動開發(1)
基于V4L2的視頻驅動開發(1)
時間(jian):2017-01-05作者:華清(qing)遠見

編寫基于V4L2視頻驅動主要涉及(ji)到以下(xia)幾個知(zhi)識點(dian):

●    攝像頭方面的知識
          &nbsp;     要了解(jie)選用的攝像頭的特(te)性,包括訪問控制方法、各種參數的配置方法、信號輸出類型等。

●    Camera解碼器、控制器
                如(ru)果攝像頭是模擬量輸(shu)出的,要熟(shu)悉(xi)解碼器的配(pei)置。后數字視頻(pin)信號進入camera控制器后,還要熟(shu)悉(xi)camera控制器的操作(zuo)。

●    V4L2的API和數據結構
                編寫驅動前(qian)要熟悉應(ying)用程序訪(fang)問(wen)V4L2的(de)方(fang)法及(ji)設(she)計(ji)到的(de)數據結構。

●    V4L2的驅動架構
                后編寫出(chu)符合(he)V4L2規范(fan)的視頻驅動。

本文介紹(shao)基于S3C2440硬件平臺的(de)V4L2視頻驅動開發(fa)。攝(she)像頭采用(yong)OmniVision公司的(de)OV9650和OV9655。主(zhu)要包含以下幾個方面的(de)內容:

視頻驅(qu)動的整(zheng)體驅(qu)動框架

●    3C2440 camera控制器+ov9650(ov9655)
        ●    V4L2 API及數據結構
        ●    V4L2驅動框架
     &nbsp; ; ●    ov9650(ov9655)+s3c2440+V4L2實例

一、 視頻驅動的(de)整體框架

視頻驅(qu)動的整體框(kuang)架見下圖(tu):

二、S3C2440 camera控制器+ov9650(ov9655)

(1)S3C2440 camera控制器介紹

S3C2440支持(chi)ITU-R BT601/656格式的數字圖(tu)像輸入(ru),支持(chi)的2個通(tong)(tong)道的DMA,Preview通(tong)(tong)道和(he)Codec通(tong)(tong)道,參見下(xia)圖(tu)。

Preview通道可以(yi)將YCbCr4:2:2格式(shi)的(de)圖像(xiang)轉(zhuan)換為(wei)RGB(16bit或24bit)格式(shi)的(de)數據,并存(cun)(cun)放于為(wei)Preview DMA分(fen)配的(de)內(nei)存(cun)(cun)中,大(da)分(fen)辨率為(wei)640*480。主(zhu)要用于本地液晶屏顯示。如果(guo)將Preview DMA的(de)內(nei)存(cun)(cun)和Framebuffer內(nei)存(cun)(cun)重疊的(de)話,就可以(yi)實現采集直接輸出到液晶屏上了。

Codec通道可以輸出YCbCr4:2:0或(huo)YCbCr4:2:2格式(shi)到為Codec DMA分配的內存中。大分辨率(lv)為4096*4096。主要用(yong)于圖(tu)像(xiang)的編解碼處理。

上圖(tu)中的(de)window cut功能(neng)是指在圖(tu)像(xiang)可(ke)以先做一個裁(cai)剪。通過設置(zhi)CIWDOFST完成(cheng)此(ci)功能(neng),見(jian)下圖(tu)。圖(tu)像(xiang)進(jin)入P、C通道后,各自的(de)scaler單(dan)元還(huan)可(ke)以對其進(jin)行縮放(fang)、旋(xuan)轉等處(chu)理。

S3C2440 camera控制器支持乒乓存(cun)(cun)儲(chu)(chu)。為(wei)了防止采(cai)集和輸(shu)出之(zhi)間的沖突,采(cai)用(yong)了乒乓存(cun)(cun)儲(chu)(chu)方式。每次(ci)采(cai)集一幀后,自(zi)動轉到(dao)(dao)下(xia)一個存(cun)(cun)儲(chu)(chu)區。如果你因(yin)為(wei)內(nei)存(cun)(cun)空間不足,不想使用(yong)此功能的話,可(ke)以將四個區域設置(zhi)到(dao)(dao)同一塊空間。

在做(zuo)圖像處理時,需要關注到(dao)后存儲區中的圖像格式(shi),如codec通(tong)道硬件自動把Y、Cb、Cr分(fen)離存儲。

S3C2440 camera 控制器(qi)Last IRQ功能的使用,也是需要掌(zhang)握的。如果處理不好,輸(shu)出的圖像效果會(hui)受影響。

控制器(qi)會(hui)在(zai)每個(ge)VSYNC下降(jiang)(jiang)沿(yan)判(pan)斷ImgCptEn信號等(deng)命令。如(ru)果在(zai)下降(jiang)(jiang)沿(yan)發現ImgCptEn信號有效,則(ze)產生(sheng)IRQ中斷。然后才開(kai)始一(yi)(yi)幀(zhen)圖像的(de)真正(zheng)采集。而如(ru)果在(zai)VSYNC下降(jiang)(jiang)沿(yan)判(pan)斷到ImgCptEn為(wei)低電平且之(zhi)前LastIRQEn沒有使能,則(ze)不會(hui)產生(sheng)任何中斷,且不會(hui)再進行下一(yi)(yi)幀(zhen)的(de)采集。如(ru)果你想在(zai)ImgCptEn關閉后,一(yi)(yi)幀(zhen)采集完后產生(sheng)一(yi)(yi)個(ge)中斷通知你,那么就需要在(zai)后一(yi)(yi)次中斷產生(sheng)前(stop capturing后的(de)vysnc下將沿(yan))使能lastirq就可(ke)以(yi)了。

我(wo)在移植linux驅動時就遇到(dao)了一(yi)個Last IRQ的問題(ti)。現(xian)象是輸出圖(tu)像(xiang)上面總(zong)是有(you)一(yi)條比其它部分反應慢。采集運動圖(tu)像(xiang),就能看出現(xian)象。查看代碼是因為(wei)(wei)沒有(you)設立(li)lastirq,因為(wei)(wei)每次如果不在lastirq產生的情況下讀取,圖(tu)像(xiang)緩沖中的數據(ju)是不穩定的,可能照成(cheng)圖(tu)像(xiang)不完整。修(xiu)改代碼支持(chi)lastirq后,問題(ti)解(jie)決。

Camera控(kong)制器(qi)時(shi)鐘(zhong)設置也是需要(yao)注(zhu)意(yi)的,ov9650需要(yao)Camera控(kong)制器(qi)為(wei)其提供時(shi)鐘(zhong)。

提供(gong)(gong)給外部攝像頭(tou)的(de)時(shi)鐘是由(you)UPLL輸出時(shi)鐘分頻得到的(de)。而(er)CAMIF的(de)時(shi)鐘是由(you)HCLK提供(gong)(gong)的(de)。本例中(zhong),提供(gong)(gong)給ov9650的(de)時(shi)鐘為24M。

(2)ov9650(ov9655)設置方法

OV9650是OmniVision公(gong)司的(de)COMS攝像頭,130萬像素,支持SXVGA、VGA、QVGA、CIF等圖(tu)像輸出格式。 大速率在SXVGA時(shi)為15fps,在VGA時(shi)為30fps。

OV9650攝像頭時(shi)序如下圖:

上(shang)圖中D[9:2]用(yong)于(yu)8-bitYUV或者RGB565/RGB555(D[9]MSB、D[2]LSB)。D[9:0]用(yong)于(yu)10-bit RGB。本例中使用(yong)8-bit YUV模式。

我手邊(bian)開發板(ban)的(de)(de)Camera和S3C2440的(de)(de)接線原理圖(tu)如下(對應camera中具(ju)體的(de)(de)信號名稱參見前文的(de)(de)驅(qu)動整體架(jia)構圖(tu))。

注:GPG12用于PWEN信號

OV9650攝像頭設置(zhi)方法(fa)是(shi)通(tong)過SCCB總(zong)線設置(zhi)

SCCB可(ke)以看作是(shi)一種簡化的I2C總線(xian),可(ke)以使用(yong)IO模擬SCCB時序。

(3)編寫ARM測試代碼測試camera功能

在(zai)Keil環境下(xia)編寫(xie)一個測試代碼完成從攝(she)像頭采集圖像輸出到液晶屏。下(xia)面列(lie)出程(cheng)序的流程(cheng)。

(4)編寫測試代碼過程中常見的問題

●    攝像頭寄存器的配置(zhi)

因為攝(she)(she)像(xiang)頭(tou)有(you)很多寄(ji)存器(qi)(qi),可(ke)能一(yi)(yi)(yi)下(xia)無法(fa)理解(jie)里(li)面所(suo)有(you)的(de)(de)(de)(de)配置含義,所(suo)以(yi)開始時(shi)(shi)希(xi)望得(de)到一(yi)(yi)(yi)份可(ke)用的(de)(de)(de)(de)配置。但往往從別人的(de)(de)(de)(de)測試代碼(ma)中(zhong)拿到配置后,仍然無法(fa)使用。我這里(li)列出幾個(ge)可(ke)能的(de)(de)(de)(de)原因:(1)攝(she)(she)像(xiang)頭(tou)中(zhong)的(de)(de)(de)(de)圖像(xiang)輸(shu)出格(ge)式(shi)(shi)和(he)(he)你在(zai)camera控制(zhi)器(qi)(qi)中(zhong)設置的(de)(de)(de)(de)不一(yi)(yi)(yi)致(zhi),同一(yi)(yi)(yi)個(ge)攝(she)(she)像(xiang)頭(tou)可(ke)以(yi)設置多種輸(shu)入格(ge)式(shi)(shi),如:YCbYCr或(huo)CbYCrY。(2)圖像(xiang)輸(shu)出的(de)(de)(de)(de)一(yi)(yi)(yi)些(xie)時(shi)(shi)序和(he)(he)你的(de)(de)(de)(de)camera控制(zhi)器(qi)(qi)設置不一(yi)(yi)(yi)致(zhi),攝(she)(she)像(xiang)頭(tou)可(ke)以(yi)設置一(yi)(yi)(yi)些(xie)時(shi)(shi)序,如:圖像(xiang)數據在(zai)CAMPCLK的(de)(de)(de)(de)上升沿(yan)有(you)效還(huan)是下(xia)降沿(yan)有(you)效。(3)注意輸(shu)出圖像(xiang)的(de)(de)(de)(de)格(ge)式(shi)(shi)和(he)(he)Framebuffer控制(zhi)器(qi)(qi)的(de)(de)(de)(de)匹配,如字節順(shun)序等問(wen)題。

●    Ov9650和ov9655的使用區別

這里主(zhu)要列出兩(liang)者(zhe)之間在復位信號上(shang)有差(cha)別,ov9650是高電平(ping)(ping)復位,而ov9655是低電平(ping)(ping)復位。

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)