在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于V4L技術(shù)和攝像頭的Linux驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)

電子設(shè)計(jì) ? 來源:電子技術(shù) ? 作者:余雅琴,王超,胡晨 ? 2021-03-23 15:47 ? 次閱讀

作者:余雅琴,王超,胡晨,王素

引言

隨著多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展和后PC機(jī)時(shí)代的到來,利用嵌人式系統(tǒng)實(shí)現(xiàn)遠(yuǎn)程視頻監(jiān)控、可視電話和視頻會(huì)議等應(yīng)用已成為可能。為了實(shí)現(xiàn)這些應(yīng)用,實(shí)時(shí)獲得視頻數(shù)據(jù)是一個(gè)重要環(huán)節(jié)。針對(duì)這一點(diǎn)本文在嵌入式系統(tǒng)平臺(tái)上,基于Video4Linux(簡(jiǎn)稱V4L)技術(shù),實(shí)現(xiàn)了攝像頭驅(qū)動(dòng)開發(fā),詳細(xì)敘述了V4L技術(shù)和攝像頭在Blackfin536 DSP平臺(tái)上的Linux驅(qū)動(dòng)程序設(shè)計(jì)。

1 Video4Linux

V4L是Linux的影像串流系統(tǒng)與嵌入式影像系統(tǒng)的基礎(chǔ)。Linux在TV、多媒體上的應(yīng)用是目前相當(dāng)熱門的研究領(lǐng)域,而其中最關(guān)鍵的技術(shù)則是Linux的V4L。V4L是Linux kernel里支持影像設(shè)備的一組APIs,配合適當(dāng)?shù)臄z像頭與攝像頭驅(qū)動(dòng)程序,可以讓我們實(shí)現(xiàn)影像采集、AM/FM無線廣播、影像CODEC、頻道切換等功能;而目前最主要的則是應(yīng)用在影像串流系統(tǒng)與嵌入式影像系統(tǒng)里,其應(yīng)用范圍相當(dāng)廣泛,例如:遠(yuǎn)距離教學(xué)系統(tǒng)、遠(yuǎn)距離診斷系統(tǒng)、視頻會(huì)議等。

目前,V4L這套接口已發(fā)展為V4L 2,前者比后者簡(jiǎn)單,但存在兩個(gè)不足之處:驅(qū)動(dòng)程序設(shè)計(jì)時(shí)不能同時(shí)打開多個(gè)設(shè)備;現(xiàn)存的V4L API不能很好地支持帶編碼能力的設(shè)備。本文為便于研究攝像頭驅(qū)動(dòng)開發(fā),還是使用V4L。

V4L主要結(jié)構(gòu)體如下:

基于V4L技術(shù)和攝像頭的Linux驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)

camera_open,camera_close是打開和關(guān)閉視頻采集設(shè)備;camera_read,是讀取視頻圖像;視頻驅(qū)動(dòng)主要的控制接口都是通過 ioctl來實(shí)現(xiàn)的,如圖像的格式、亮度、色度等信息都是通過ioctl函數(shù)獲取和設(shè)置的。ioctl命令部分如下:

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

2 硬件平臺(tái)

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

3 驅(qū)動(dòng)程序設(shè)計(jì)

3.1 驅(qū)動(dòng)程序核心結(jié)構(gòu)體的介紹

本系統(tǒng)的軟件平臺(tái)是嵌入式uclinux,因此,攝像頭作為一個(gè)設(shè)備驅(qū)動(dòng)加載到uclinux內(nèi)核中。一般而言,每個(gè)設(shè)備驅(qū)動(dòng)都會(huì)有它的核心結(jié)構(gòu)體,攝像頭驅(qū)動(dòng)的核心結(jié)構(gòu)體設(shè)計(jì)如下:struct camera device

該結(jié)構(gòu)體儲(chǔ)存了幾乎全部與攝像頭視頻圖像相關(guān)的信息。其中的結(jié)構(gòu)體videoDev和videoV4l1是與V4L相關(guān)聯(lián)的,ppiDev是與ADSP- BF537處理器硬件配置相關(guān)的,而frame[CAMERA_NUMFRAMES]則與采集時(shí)當(dāng)前視頻幀數(shù)據(jù)相關(guān)聯(lián)。此外,camera_device 該核心結(jié)構(gòu)體還定義了表示奇偶場(chǎng)的成員變量frame_field,表示當(dāng)前幀的抓取狀態(tài)的成員變量grabbing等。

3.2 硬件配置

本系統(tǒng)在開發(fā)過程中,最主要的難點(diǎn)在于硬件的配置,正確配置TVP5150、PPI、DMA需要搞清楚整個(gè)攝像頭的工作原理,以及各種圖像格式的基本知識(shí)。本文主要給出PPI和DMA的幾個(gè)關(guān)鍵配置選項(xiàng)。

3.2.1 PPI配置

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

3.2.2 DMA配置

本系統(tǒng)采用二維DMA來提高數(shù)據(jù)的傳輸速度,采用16位傳輸,且傳輸完一場(chǎng)視頻數(shù)據(jù)后產(chǎn)生中斷。dma_x_count=720(相當(dāng)于每行數(shù)據(jù)需傳輸?shù)拇螖?shù),每行720個(gè)像素點(diǎn),每個(gè)像素點(diǎn)2個(gè)字節(jié)。每行要傳720×2個(gè)字節(jié),而dma是16位傳輸,所以x_count=720)。 dma_x_modify=2(相鄰兩次傳輸數(shù)據(jù)的偏移地址,以字節(jié)為單位,因?yàn)槭?6位傳輸,所以為2)。

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

3.3 中斷服務(wù)子程序

本系統(tǒng)的中斷服務(wù)子程序主要是一場(chǎng)數(shù)據(jù)采集完后,產(chǎn)生中斷,并根據(jù)數(shù)據(jù)的奇偶場(chǎng)做出相應(yīng)的處理。其流程如圖2所示。

4 結(jié)束語

本文介紹了在Blackfin DSP和Linux的平臺(tái)下,攝像頭驅(qū)動(dòng)的體系結(jié)構(gòu)和具體實(shí)現(xiàn)。此驅(qū)動(dòng)由測(cè)試程序測(cè)試,可以正常工作。此驅(qū)動(dòng)尚存在不足之處,那就是在驅(qū)動(dòng)的抓幀過程中沒有采用乒乓操作,但是采用了兩個(gè)幀緩存來存取數(shù)據(jù),因此乒乓操作可以在上層應(yīng)用中完成。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11473

    瀏覽量

    212994
  • 攝像頭
    +關(guān)注

    關(guān)注

    61

    文章

    4959

    瀏覽量

    97790
  • 多媒體
    +關(guān)注

    關(guān)注

    0

    文章

    510

    瀏覽量

    37597
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Xilinx Linux 如何理解V4L2的管道驅(qū)動(dòng)程序

    設(shè)備(/dev/video )控制。這兩種設(shè)備,都是在視頻管道(Video pipeline)驅(qū)動(dòng)程序里創(chuàng)建的。所以,理解V4L2的管道(pipeline)驅(qū)動(dòng)程序是理解Xilinx所有Video IP 在
    的頭像 發(fā)表于 09-30 13:44 ?5213次閱讀
    Xilinx <b class='flag-5'>Linux</b> 如何理解<b class='flag-5'>V4L</b>2的管道<b class='flag-5'>驅(qū)動(dòng)程序</b>

    Linux攝像頭應(yīng)用編程

    V4L2是Video for linux2的簡(jiǎn)稱,為linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng)。在Linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文
    的頭像 發(fā)表于 08-26 21:39 ?3464次閱讀
    <b class='flag-5'>Linux</b>下<b class='flag-5'>攝像頭</b>應(yīng)用編程

    【Intel Edison試用體驗(yàn)】連接攝像頭

    攝像頭實(shí)現(xiàn)即插即用,不用到處去找設(shè)備驅(qū)動(dòng),所以還是用V4L的好。接口當(dāng)然優(yōu)先選USB接口,別的呢,也不是不可以,只是得折騰許多時(shí)光!咱用的是羅技的
    發(fā)表于 07-18 15:40

    什么是V4L2?有何作用

    1.什么是V4L2Video for(4) Linux 2 的簡(jiǎn)稱,V4L的升級(jí)版。V4L2是linux
    發(fā)表于 01-17 09:05

    良田攝像頭萬能驅(qū)動(dòng)程序下載

    良田攝像頭萬能驅(qū)動(dòng)程序下載
    發(fā)表于 01-11 21:52 ?86次下載
    良田<b class='flag-5'>攝像頭</b>萬能<b class='flag-5'>驅(qū)動(dòng)程序</b>下載

    良田攝像頭211驅(qū)動(dòng)程序下載

    良田科技萬能攝像頭驅(qū)動(dòng)程序自動(dòng)檢測(cè)攝像頭芯片,集成了301、303、168、268、325、211、308、380等市面基本所有方案。用良田科技萬能攝像頭
    發(fā)表于 02-24 21:34 ?3次下載

    飛視攝像頭驅(qū)動(dòng)程序下載

    飛視攝像頭驅(qū)動(dòng)程序下載
    發(fā)表于 02-25 08:59 ?266次下載
    飛視<b class='flag-5'>攝像頭</b><b class='flag-5'>驅(qū)動(dòng)程序</b>下載

    USB攝像頭驅(qū)動(dòng)程序和圖像采集程序實(shí)現(xiàn)方法

    本文首先介紹了基于AT91RM9200的圖像采集平臺(tái)的硬件設(shè)計(jì),然后描述了嵌入式Linux和USB驅(qū)動(dòng)程序的軟件架構(gòu),重點(diǎn)分析了通用的USB攝像頭驅(qū)動(dòng)程序和圖像采集
    發(fā)表于 08-18 09:26 ?138次下載

    攝像頭的WINCE驅(qū)動(dòng)及操作說明

    第1章 使用方法1.1 需要的文件攝像頭程序需要的文件為驅(qū)動(dòng)程序安裝程序camera.cab文件。針對(duì)的攝像頭是多彩的DLV-C33
    發(fā)表于 11-18 16:58 ?73次下載

    基于V4L2的Linux攝像頭驅(qū)動(dòng)實(shí)現(xiàn)

    設(shè)計(jì)實(shí)現(xiàn)了普通USB攝像頭驅(qū)動(dòng)程序及圖像采集程序。在gplugD 平臺(tái)上移植并測(cè)試,該驅(qū)動(dòng)可以方便應(yīng)用到各種嵌入式手持設(shè)備中,實(shí)時(shí)性良好。
    發(fā)表于 03-01 15:53 ?53次下載
    基于<b class='flag-5'>V4L</b>2的<b class='flag-5'>Linux</b><b class='flag-5'>攝像頭</b><b class='flag-5'>驅(qū)動(dòng)</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    Linux下USB攝像頭驅(qū)動(dòng)程序開發(fā)解析

    一、 Linux系統(tǒng)中的USB攝像頭驅(qū)動(dòng)程序 USB攝像頭以其良好的性能和低廉的價(jià)格得到廣泛應(yīng)用。同時(shí)因其靈活、方便的特性,易于集成到嵌入式系統(tǒng)中。但是如果使用現(xiàn)有的符合Video
    發(fā)表于 11-07 11:45 ?3次下載
    <b class='flag-5'>Linux</b>下USB<b class='flag-5'>攝像頭</b><b class='flag-5'>驅(qū)動(dòng)程序</b>開發(fā)解析

    Linux系統(tǒng)中如何安裝攝像頭驅(qū)動(dòng)

    說開發(fā)商唯利是圖,沒有好處的事,他們的確不怎么積極。Linux 的用戶比較少,所以他們也不把用戶當(dāng)回事。 目前看來攝像頭(Webcam)在 Linux驅(qū)動(dòng)基本成熟,缺少的是應(yīng)用
    發(fā)表于 11-07 11:45 ?5次下載

    Linux應(yīng)用開發(fā)【第七章】攝像頭V4L2編程應(yīng)用開發(fā)

    文章目錄 7 攝像頭V4L2編程應(yīng)用開發(fā) 7.1 V4L2簡(jiǎn)介 7.2 V4L2視頻采集原理 7.3 V4L2
    的頭像 發(fā)表于 12-10 19:23 ?3447次閱讀
    <b class='flag-5'>Linux</b>應(yīng)用開發(fā)【第七章】<b class='flag-5'>攝像頭</b><b class='flag-5'>V4L</b>2編程應(yīng)用開發(fā)

    V4L2學(xué)習(xí)筆記

    1.什么是V4L2Video for(4) Linux 2 的簡(jiǎn)稱,V4L的升級(jí)版。V4L2是linux
    發(fā)表于 01-17 13:43 ?12次下載
    <b class='flag-5'>V4L</b>2學(xué)習(xí)筆記

    嵌入式Linux攝像頭驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《嵌入式Linux攝像頭驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-12 09:31 ?2次下載
    嵌入式<b class='flag-5'>Linux</b>的<b class='flag-5'>攝像頭</b><b class='flag-5'>驅(qū)動(dòng)程序</b>設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>
    主站蜘蛛池模板: yellow中文字幕久久网 | 天天干在线免费视频 | 午夜社区 | 人人公开免费超级碰碰碰视频 | 黄色美女网站在线观看 | 欧美色图日韩色图 | 国产精品国产三级国产普通话对白 | 免费午夜视频在线观看 | 国产性猛交xx乱 | 2018天天夜夜 | 中文字幕一区二区三 | 日本在线色视频 | 亚洲小视频在线播放 | 亚洲天堂资源 | 夜夜嘿视频免费看 | 午夜寂寞影院视频观看 | 狠狠狠狠操| 操操操插插插 | 伊人久久大香线蕉综合7 | 中文日产国产精品久久 | 日韩在线看片 | 欧美3d动漫网站 | 韩国三级理论在线看中文字幕 | 欧洲成品大片在线播放 | 亚洲久久草 | 婷婷久久综合 | 国产伦精品一区二区三区四区 | 亚洲天堂资源 | 干干干操操操 | 国内夫妇交换性经过实录 | 免费国产不卡午夜福在线观看 | 午夜视频黄色 | 一区二区三区在线观看视频 | 狠狠色噜噜狠狠狠狠2018 | 国产精品久久久亚洲第一牛牛 | 九九视频这里只有精品 | 69xxxxx日本护士| 色综合激情丁香七月色综合 | 岛国午夜 | 国产精品夜夜春夜夜爽 | 久99热|