<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Linux系統(tǒng)下USB攝像頭驅(qū)動(dòng)開(kāi)發(fā)

    時(shí)間:2024-08-05 18:48:02 理工畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    Linux系統(tǒng)下USB攝像頭驅(qū)動(dòng)開(kāi)發(fā)

    摘要:介紹了在Iinux系統(tǒng)下開(kāi)發(fā)符合Video for Linux標(biāo)準(zhǔn)的USB攝像頭驅(qū)動(dòng)的方法,并對(duì)該標(biāo)準(zhǔn)提出“不間斷采集”的改進(jìn)思路,配合雙URB、雙幀緩沖等方法,提高采集速度。

    USB攝像頭以其良好的性能和低廉的價(jià)格得到廣泛應(yīng)用。同時(shí)因其靈活、方便的特性,易于集成到嵌入式系統(tǒng)中。但是如果使用現(xiàn)有的符合Video for Linux標(biāo)準(zhǔn)的驅(qū)動(dòng)程序配合通用應(yīng)用程序,難以充分利用USB帶寬,幀速不高,不易滿足實(shí)時(shí)監(jiān)控等要求。本文首先介紹在Linux系統(tǒng)下USB攝像頭驅(qū)動(dòng)編制的一般方法,然后說(shuō)明在此基礎(chǔ)上如何提高幀速。

    1 Linux系統(tǒng)中的USB攝像頭驅(qū)動(dòng)程序

    USB設(shè)備驅(qū)動(dòng)程序完全符合通用設(shè)備驅(qū)動(dòng)的準(zhǔn)則,不同的是內(nèi)核提供了一些特別的API函數(shù),方便驅(qū)動(dòng)注冊(cè)、銷毀自己,例如usb_reSister()和usb_dereSister();2.4版的內(nèi)核還提供了對(duì)于hotplug的支持。

    1.1 USB攝像頭驅(qū)動(dòng)的一般編寫方法

    攝像頭屬于視頻類設(shè)備。在目前的Linux核心中,視頻部分的標(biāo)準(zhǔn)是Video for Linux(簡(jiǎn)稱V4L)。這個(gè)標(biāo)準(zhǔn)其實(shí)定義了一套接口,內(nèi)核、驅(qū)動(dòng)、應(yīng)用程序以這個(gè)接口為標(biāo)準(zhǔn)進(jìn)行交流。目前的V4L涵蓋了視、音頻流捕捉及處理等內(nèi)容,USB攝像頭也屬于它支持的范疇。

    因此,USB攝像頭的驅(qū)動(dòng)應(yīng)當(dāng)與內(nèi)核提供的視頻驅(qū)動(dòng)掛鉤。即首先在驅(qū)動(dòng)中聲明一個(gè)video_device結(jié)構(gòu),并為其指定文件操作函數(shù)指針數(shù)組.fops,向系統(tǒng)注冊(cè)。在應(yīng)用程序發(fā)出文件操作的相關(guān)命令時(shí),核心根據(jù)這些指針調(diào)用相應(yīng)函數(shù),并將該結(jié)構(gòu)作為參數(shù)傳遞給它們。這樣,就完成了驅(qū)動(dòng)和核心之間的通信。例如:

    static struct video_device vdev_template={……};

    //聲明video_device,指出掛接驅(qū)動(dòng)

    static struct file_operations ov511_fops={……};

    //聲明本驅(qū)動(dòng)的文件操作函數(shù)指針

    struct video_device*vdev=video_devdata(file);

    //從文件指針中提取出video_device結(jié)構(gòu)

    在video_device結(jié)構(gòu)中,有一個(gè)私有指針priv,可以將它指向一塊保留內(nèi)存。在這塊內(nèi)存中,保存著本驅(qū)動(dòng)、本設(shè)備的相關(guān)初始化信息。這塊內(nèi)存的申請(qǐng)、初始化、指針指向等工作都是在USB驅(qū)動(dòng)的枚舉函數(shù).probe中完成。這樣,在枚舉函數(shù)將控制權(quán)返還給系統(tǒng)后,因?yàn)閮?nèi)核不銷毀保留內(nèi)存,所以驅(qū)動(dòng)仍然保留著自己的信息。這點(diǎn)與Windows系統(tǒng)中WDM驅(qū)動(dòng)有異曲同工之處。當(dāng)然,在驅(qū)動(dòng)卸載函數(shù)中,應(yīng)當(dāng)將申請(qǐng)的各塊內(nèi)存全部釋放。

    1.2 使用雙URB輪流通信

    眾所周知,USBl.1總線標(biāo)準(zhǔn)定義了控制、中斷、批量、等時(shí)等四種管道。對(duì)于時(shí)間性極強(qiáng)但是準(zhǔn)確度要求不高的視頻捕捉應(yīng)用來(lái)說(shuō),攝像頭應(yīng)當(dāng)使用等時(shí)傳輸方式。為了盡可能快地得到圖像數(shù)據(jù),應(yīng)當(dāng)在URB中指定USB_ISO_ASAP標(biāo)志。

    urb-

    主站蜘蛛池模板: 久久精品国产亚洲一区二区| 99精品在线免费| 高清在线国产午夜精品| 无码精品A∨在线观看中文| 91人妻人人澡人人爽人人精品| 无码人妻精品一区二区三区夜夜嗨| 99久久精品这里只有精品| 国产午夜精品一区二区三区| 久久性精品| 国产精品爽爽ⅴa在线观看| 91精品国产福利在线导航| 亚洲精品无码激情AV| 国产亚洲精品影视在线产品| 久久亚洲国产欧洲精品一| 精品国际久久久久999波多野| 四虎国产精品成人免费久久| 国产精品成人免费观看| 久久青草国产精品一区| 99精品全国免费观看视频..| 欧美精品亚洲精品日韩传电影| 日韩欧美国产精品第一页不卡| www.精品| 亚洲第一精品福利| 国产精品亚洲专区在线观看| 国产精品jizz视频| 国内精品久久久久久99| 亚洲AV无码国产精品麻豆天美| 日本精品一区二区三区在线视频| 国产欧美精品区一区二区三区| 四虎影视884a精品国产四虎| 国产精品一级片| 国产99久久精品一区二区| 国产精品vⅰdeoxxxx国产| 国产精品丝袜一区二区三区| 精品无码久久久久久尤物| 欧美精品videosse精子| 无码日韩人妻精品久久蜜桃| 亚洲精品你懂的在线观看| 久久精品成人影院| 久久精品三级视频| 日产国产精品亚洲系列|