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

相关文章
相关标签/搜索