一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于RK3576開發(fā)板的USB攝像頭使用

ljx2016 ? 來源:ljx2016 ? 作者:ljx2016 ? 2025-05-06 15:30 ? 次閱讀

1. USB簡介

USB:Universal Serial Bus(通用串行總線)。是一種常用于電子設(shè)備間通訊的通用標(biāo)準(zhǔn)接口。USB 總線作為一種高速串行總線,其極高的傳輸速度可以滿足高速數(shù)據(jù)傳輸?shù)膽?yīng)用環(huán)境要求。

具有供電簡單(可總線供電)、安裝配置便捷(支持即插即用和熱插拔)、 擴(kuò)展端口簡易(通過集線器最多可擴(kuò)展127 個(gè)外設(shè))、傳輸方式多樣化(4 種傳輸模式),以及兼容良好(產(chǎn)品升級后向下兼容)等優(yōu)點(diǎn)。

1.1 EASY EAI Orin-Nano USB資源介紹

EASY EAI Orin-Nano有一路直出的USB3.0 HOST接口,還有一路直出的OTG接口。

wKgZPGgZuxqACBYgABBiD586vlU820.png

若不了解【USB HOST】、【USB Device】以及【OTG】的含義,又或者有【必須使下層USB作為HOST】的需求,可參考《USB_HOST與USB_Device》一文。

1.2 USB攝像頭接入方案

wKgZO2gZuxqAUI47AADdNgPRzl4093.png

注意:雖然USB支持熱插拔,但在沒給底板加裝外殼保護(hù)的情況下,很容易觸碰到底板上的器件,甚至板卡附近有金屬零件很容易造成板卡短路。因此也建議在插拔外設(shè)時(shí),最好確保電源已經(jīng)完全切斷。

【建議】USB攝像頭【直接】接入到底板的【上層】USB接口上。

wKgZPGgZuxuADpbUABBATP1PZ6M198.png

雖然采用多路擴(kuò)展方案,理論上可擴(kuò)展127個(gè)設(shè)備,但在實(shí)際接入多個(gè)USB攝像頭時(shí)需要考慮USB通道的帶寬,USB集線層數(shù),以及要解決設(shè)備ID相同的問題,因此非必要【不建議】這么接。

USB的理論最大層數(shù)為7層(含RootHub)。

1.3 USB設(shè)備的接入管理介紹

在USB攝像頭或者USB Hub進(jìn)行物理連接后,我們需要知道這些USB設(shè)備是否被系統(tǒng)識(shí)別出來,則需要通過lsusb命令查看。

lsusb
wKgZO2gZuxuANRxGAACn3rUsY54565.png

另外,在文件系統(tǒng)中,USB Device管理目錄為/sys/bus/usb/devices,可在此處查看到從root_hub開始掛載的USB設(shè)備以及Hub設(shè)備的拓?fù)潢P(guān)系。

USB設(shè)備的設(shè)備命名方式規(guī)則如下:

設(shè)備對象的命名規(guī)則
設(shè)備 命名規(guī)則 描述
總線對象 usb1、usb2 處理器自帶的USB硬件,0號(hào)hub設(shè)備,所以其接口對象是由0開始計(jì)算。
直連的USB設(shè)備 root_hub-hub_port
注:以“-”段橫杠分割
root_hub為所在的總線號(hào)碼;
hub_port為處于該總線的第幾個(gè)設(shè)備,0號(hào)設(shè)備總線本身,新接入的設(shè)備從1開始。
連在外擴(kuò)hub的設(shè)備 root_hub-hub_port.device
注:以“.”句號(hào)分割
新接入的設(shè)備作為hub的子設(shè)備,編號(hào)從1開始
設(shè)備對象的接口命名規(guī)則
設(shè)備 命名規(guī)則 描述
設(shè)備對象的接口對象 device_object:config.interface
注:以“:”冒號(hào)分割設(shè)備對象和后續(xù)元素。后續(xù)元素有配置和接口,二者以“.”句號(hào)分割
device_object:設(shè)備對象,上面總線對象、質(zhì)量設(shè)備、經(jīng)過hub的設(shè)備統(tǒng)稱為設(shè)備對象
config:USB設(shè)備的配置描述符,一個(gè)USB設(shè)備可在不同系統(tǒng)、不同架構(gòu)下運(yùn)行的前提就是使用了不同的配置描述符
interfece:USB設(shè)備的接口描述符,例如一個(gè)USB對講機(jī),有負(fù)責(zé)處理播音的接口以及負(fù)責(zé)錄音的接口。

1.4 尋找可用的設(shè)備節(jié)點(diǎn)

rockchip平臺(tái),一個(gè)MIPI-CSI接口會(huì)對應(yīng)20多個(gè)video節(jié)點(diǎn)(設(shè)備樹定了就會(huì)生成這么多個(gè)),如下圖所示。

wKgZPGgZuxuAWLNlAADvzgIeWh8195.png

而且MIPI-CSI camera對應(yīng)的節(jié)點(diǎn),會(huì)在修改內(nèi)核設(shè)備樹的時(shí)候固定下來(即:內(nèi)核配好了MIPI-CSI Camera個(gè)數(shù),無論MIPI-CSI攝像頭是否有接上,它的video節(jié)點(diǎn)情況都是不會(huì)根據(jù)MIPI-CSI Camera的接入情況而【動(dòng)態(tài)】改變)。

而一個(gè)USB camera會(huì)對應(yīng)2個(gè)video節(jié)點(diǎn),【一般會(huì)】排列在MIPI-CSI camera的后面。舉個(gè)例子:內(nèi)核配置了1路MIPI-CSI camera,那USB camera的節(jié)點(diǎn)就是/dev/video25和/dev/video26;內(nèi)核配置了2路MIPI-CSI camera,那USB camera的節(jié)點(diǎn)就是/dev/video49和/dev/video50。以此類推。

但是【最準(zhǔn)確】的方法,還是要看一下這個(gè)video節(jié)點(diǎn)的【描述信息】。Linux的v4l2框架會(huì)把這些節(jié)點(diǎn)的描述信息統(tǒng)一放在/sys/class/video4linux/目錄下,如下圖所示。

wKgZO2gZuxuADWWiAADHhD6GKVk928.png

隨便進(jìn)入一個(gè)描述,如video22。

wKgZPGgZuxyAX3T5AACoy7qNgMI403.png

通過cat命令,可以用查看這個(gè)name的內(nèi)容是什么。

cat /sys/class/video4linux/video22/name
wKgZO2gZuxyANJVEAABr2viLxJY006.png

那么,我們則需要使用以下命令,對【所有video節(jié)點(diǎn)】進(jìn)行掃描與【篩選】。

grep -i "usb" /sys/class/video4linux/video*/name
wKgZPGgZuxyALbIPAACAZjgI-oo737.png

2. 快速上手

2.1 例程源碼下載

到【百度網(wǎng)盤】上下載相關(guān)的單例程序:

鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234

提取碼: 1234

比如在windows環(huán)境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規(guī)定,用戶可自主選擇),如下圖所示。

wKgZO2gZuxyAcL2tAACzjzn_OTw582.png

然后把例程【復(fù)制粘貼】到nfs掛載目錄中。(不清楚目錄如何構(gòu)建的,可以參考《入門指南/開發(fā)環(huán)境準(zhǔn)備/nfs服務(wù)搭建與掛載》)

wKgZPGgZuxyAdw_5AAEDr7CBhzE034.png

2.2 例程編譯&運(yùn)行

通過adb shell進(jìn)入開發(fā)板環(huán)境,執(zhí)行下方命令定位到demo目錄,并且執(zhí)行編譯操作。

cd /home/orin-nano/Desktop/nfs/02_camera/
./build.sh
wKgZO2gZux2ALcfhAARnkhV_id4539.png

編譯成功后,相關(guān)的demo會(huì)生成在Release目錄下。

執(zhí)行下方命令以運(yùn)行demo,如下所示。

sudo ./Release/test-usbCam-single 49  ##需要root權(quán)限

執(zhí)行效果如下所示。

wKgZPGgZux2AAXg8AABMW6Vj5_0978.png

然后把/tmp/photo拷貝到當(dāng)前目錄下的Release內(nèi)

cp /tmp/photo ./Release/

再通過組合鍵【Ctrl+Shift+T】創(chuàng)建一個(gè)新窗口,定位到nfs服務(wù)器的對應(yīng)位置。

wKgZO2gZux2AEmOxAACKiBD90sU960.png

最后使用mplayer工具播放圖片,命令如下所示。

mplayer -demuxer rawvideo -rawvideo w=1280:h=720:format=bgr24 ./Release/photo -loop 0
wKgZPGgZux2AL77CABMCYsJUSss055.png

例程默認(rèn)分辨率為1280x720,故w和h的參數(shù)對應(yīng)填入1280和720。當(dāng)出現(xiàn)圖片異常時(shí),說明分辨率等不太對應(yīng)于手頭的攝像頭,所以需要調(diào)整usbcamera_init()的分辨率,例如640x480。

3. 測試USB攝像頭API案例

示例代碼路徑為:02_camera/test-usbCam/single-cam.c。USB Camera API的測試案例代碼邏輯流程如下所示:

wKgZO2gZux6AL281AABSz27uAFE832.png

3.1 源碼說明

int main()
{
    if(1 == argc){
        printf("nerr: Missing parameter!n");
        printf("================= [usage] ==================n");
        printf("example:n");
        printf("t%s n", argv[0]);
        printf("--------------------------------------------n");
        return 0;
    }
    int cameraIndex = atoi(argv[1]);
    
	char *pbuf = NULL;
	int ret = 0;
	int skip = 0;
	FILE *fp = NULL;

	ret = usbcamera_init(CAMERA_INDEX, CAMERA_WIDTH, CAMERA_HEIGHT, 0);
	if (ret) {
		printf("error: %s, %dn", __func__, __LINE__);
		goto exit3;
	}

	pbuf = (char *)malloc(IMAGE_SIZE);
	if (!pbuf) {
		printf("error: %s, %dn", __func__, __LINE__);
		ret = -1;
		goto exit2;
	}

	//跳過前10幀
	skip = 10;
	while(skip--) {
		ret = usbcamera_getframe(CAMERA_INDEX, pbuf);
		if (ret) {
			printf("error: %s, %dn", __func__, __LINE__);
			goto exit1;
		}
	}

	/* tips: 可以在Ubuntu下用mplayer播放錄制圖像
	*	mplayer -demuxer rawvideo -rawvideo w=1280:h=720:format=bgr24 photo -loop 0
	*/
	fp = fopen("/tmp/photo", "w");
	if (!fp) {
		printf("error: %s, %dn", __func__, __LINE__);
		ret = -1;
		goto exit2;
	}
	fwrite(pbuf, 1, IMAGE_SIZE, fp);
	fclose(fp);

exit1:
	free(pbuf);
	pbuf = NULL;
exit2:
	usbcamera_exit(CAMERA_INDEX);
exit3:
    return ret;
}

其中usbcamera_init(),usbcamera_getframe(),usbcamera_exit()是對v4l2接口調(diào)用的易用化封裝。具體實(shí)現(xiàn)于02_camera/commonApi/usb_camera/usb_camera.c。

審核編輯 黃宇

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

    關(guān)注

    60

    文章

    8070

    瀏覽量

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

    關(guān)注

    60

    文章

    4930

    瀏覽量

    97471
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5415

    瀏覽量

    101095
  • rk3576
    +關(guān)注

    關(guān)注

    1

    文章

    117

    瀏覽量

    494
收藏 人收藏

    評論

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

    基于RK3576開發(fā)板的WDT看門狗使用說明

    RK3576開發(fā)板的WDT使用說明
    的頭像 發(fā)表于 05-06 17:15 ?328次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的WDT看門狗使用說明

    基于RK3576開發(fā)板的PCIE固態(tài)硬盤使用說明

    RK3576開發(fā)板的PICE固態(tài)硬盤使用方法
    的頭像 發(fā)表于 05-06 17:33 ?919次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PCIE固態(tài)硬盤使用說明

    基于RK3576開發(fā)板的TF卡槽使用說明

    RK3576開發(fā)板使用TF卡槽
    的頭像 發(fā)表于 05-07 09:24 ?235次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的TF卡槽使用說明

    基于RK3576開發(fā)板的PWN使用說明

    RK3576開發(fā)板使用PWN教程及Demo
    的頭像 發(fā)表于 05-07 14:07 ?169次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PWN使用說明

    基于RK3576開發(fā)板的RTC使用說明

    文章主要展示RK3576開發(fā)板的RTC信息和快速上手例程
    的頭像 發(fā)表于 05-07 15:04 ?214次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的RTC使用說明

    基于RK3576開發(fā)板的人臉識(shí)別算法

    RK3576開發(fā)板展示人臉識(shí)別算法例程和API說明
    的頭像 發(fā)表于 05-07 16:48 ?259次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的人臉識(shí)別算法

    【米爾RK3576開發(fā)板評測】帶你初步了解米爾RK3576這塊開發(fā)板

    這幾天剛收到米爾郵寄過來的米爾RK3576開發(fā)板,收到板子的拆箱的第一感覺就是驚艷。巴掌大小的一塊開發(fā)板上集成度非常高,布線很合理,元件布局也很整齊,黑色的板子也非常高端。 給大家看一下收到
    發(fā)表于 12-18 20:35

    【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱【米爾RK3576開發(fā)板評測】一個(gè)視頻和你共同認(rèn)識(shí)一下米爾RK3576開發(fā)板

    收到米爾RK3576開發(fā)板后,也對米爾RK3576開發(fā)板進(jìn)行了了解,米爾這款開發(fā)板真的很不錯(cuò),下面是官方的一些參數(shù)介紹: MYC-LR
    發(fā)表于 12-18 20:50

    【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱值得購買的米爾RK3576開發(fā)板

    米爾依然是核心加擴(kuò)展板的模式,我拿到手的開發(fā)板,核心已經(jīng)通過LGA貼片,焊好了。 開發(fā)板做工很好,布線細(xì)致工整。 RK3576
    發(fā)表于 01-08 22:59

    米爾瑞芯微RK3576實(shí)測輕松搞定三屏八攝像頭

    推出的MYD-LR3576開發(fā)板開發(fā)了一個(gè)三屏異顯,8路攝像頭輸入的DEMO, 實(shí)測下來,RK3576輕松搞定了該任務(wù)。 MYD-LR
    發(fā)表于 01-17 11:33

    新品發(fā)布 ▏全網(wǎng)首發(fā)!瑞芯微RK3576開發(fā)板:智能設(shè)備革新的AI核心引擎

    近期,合眾恒躍繼推出HZ-CORE-RK3576核心后,再次發(fā)布了HZ-EVM-RK3576開發(fā)板,該開發(fā)板集成了
    的頭像 發(fā)表于 08-29 13:59 ?1647次閱讀
    新品發(fā)布 ▏全網(wǎng)首發(fā)!瑞芯微<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>:智能設(shè)備革新的AI核心引擎

    米爾RK3576開發(fā)板特惠活動(dòng)!

    近日,米爾電子發(fā)布基于瑞芯微RK3576核心開發(fā)板RK3576作為國產(chǎn)熱門處理器,其高性能數(shù)據(jù)處理能力、領(lǐng)先的AI智能分析、強(qiáng)大的擴(kuò)展性與兼容性受到廣大
    的頭像 發(fā)表于 11-12 01:00 ?631次閱讀
    米爾<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>特惠活動(dòng)!

    迅為RK3576開發(fā)板核心與底板接口硬件介紹

    迅為RK3576開發(fā)板核心與底板接口硬件介紹
    的頭像 發(fā)表于 01-14 15:15 ?1111次閱讀
    迅為<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>核心<b class='flag-5'>板</b>與底板接口硬件介紹

    RK3576有多強(qiáng)?實(shí)測三屏八攝像頭輕松搞定

    的MYD-LR3576開發(fā)板開發(fā)了一個(gè)三屏異顯,8路攝像頭輸入的DEMO,實(shí)測下來,RK3576輕松搞定了該任務(wù)。MYD-LR
    的頭像 發(fā)表于 01-16 08:06 ?495次閱讀
    <b class='flag-5'>RK3576</b>有多強(qiáng)?實(shí)測三屏八<b class='flag-5'>攝像頭</b>輕松搞定

    基于RK3576開發(fā)板的MIPI-DSI使用

    MIPI DSI接口是由MIPI聯(lián)盟下的Display工作組指定的DSI(Display Serial Interface)的接口標(biāo)準(zhǔn)。rk3576開發(fā)板使用mipi-dsi教程
    的頭像 發(fā)表于 05-06 16:11 ?144次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的MIPI-DSI使用