USB 攝像頭在 RK3399 上的應用

USB 攝像頭在 RK3399 上的應用

一、簡介

UVC 全稱 USB Video Class 、是 USB-IF 定製的一套標準,全部遵循這一標準的 USB 接口攝像頭在 Windows Linux 等系統下,幾乎能直接使用,達到相似免驅的效果。html

固然了,並非說真正的不須要驅動,而是隻要某個 USB 接口的攝像頭遵循了 UVC標準,它就能被 Window、Linux 系統中一套通用的驅動所驅動,而不須要你再安裝其餘的驅動。好比 Linux 內核中就有一套針對 UVC 設備的通用驅動:drivers/media/usb/uvc , 只要打開了這套驅動,幾乎全部的 UVC 攝像頭均可以直接使用。linux

二、Leez P710 的 USB 接口

Leez P710 是基於 RK3399 設計的開發板,根據 TRM,RK3399 有 2 個 USB2.0 控制器 和 2 個 USB 3.0 控制,P710 把它們的 USB 接口都留了出來,這爲 P710 提供了靈活的鏈接接口。咱們恰好能夠利用它提供的 USB 接口鏈接 USB 攝像頭。git

三、打開內核的 UVC 驅動

我使用的是 mainline 的內核,當前版本爲 5.3-rc2.github

在 內核源碼根目錄下執行 make ARCH=arm64 menuconfig 命令,打開 UVC 相關配置:ide

而後編譯內核,dts 使用這裏的:rk3399-leez-p710.dtsspa

先燒寫這裏的固件: 百度網盤 下載, 提取碼爲 t4xg 。刷固件的方法能夠參考 Debian10 for Leez P710設計

系統起來後,經過 scp 命令把前面編譯的 Imagedtb 拷貝到開發板上,替換掉原來的 Imagedtb,而後經過 reboot 命令重啓系統:3d

scp -r andy@172.16.12.67:~/your/linux/arch/arm64/boot/Image .
scp -r andy@172.16.12.67:~/your/linux/arch/arm64/boot/dts/rockchip/rk3399-leez.dtb .
cp Image /boot/Image 
cp rk3399-leez-p710.dtb /boot/dtb/rockchip/rk3399-leez.dtb
sync
reboot

注意把上面的用戶名、IP 地址、Linux 源碼路徑換成你本身的。code

系統起來後,接入你的 usb 攝像頭,而後執行 dmesg 命令查看內核 log, 能夠看到 uvc 已經被系統識別到:orm

運行 v4l2-ctl -d /dev/video0 --list-formats-ext 命令能夠查看你的攝像頭支持的格式:

四、 運行 mjpg-streamer

mjpg-streamergithub 上一個開源的 uvc 視頻應用,它能夠獲取 uvc 攝像頭的視頻流,而後經過局域網傳輸,能夠直接在開發板上編譯這個代碼並運行:

git clone https://github.com/andyshrk/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental/
apt install cmake libjpeg62-turbo-dev
make

若是一切順利,你很快就能編譯完代碼,而後執行下面的命令運行該應用:

./mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.so"

在局域網內,任何電腦的網頁端打開以下網址:http://172.16.33.179:8080/?action=stream 你就能實時看到攝像頭採集到的視頻流。

須要注意的是,上面的 ip 地址是你開發板的 ip 地址。

更多原創請掃碼關注公衆號:HackforFun

相關文章
相關標籤/搜索