UVC 全称 USB Video Class 、是 USB-IF 定制的一套标准,所有遵循这一标准的 USB 接口摄像头在 Windows Linux 等系统下,几乎能直接使用,达到类似免驱的效果。
当然了,并不是说真正的不需要驱动,而是只要某个 USB 接口的摄像头遵循了 UVC标准,它就能被 Window、Linux 系统中一套通用的驱动所驱动,而不需要你再安装其他的驱动。比如 Linux 内核中就有一套针对 UVC 设备的通用驱动: , 只要打开了这套驱动,几乎所有的 UVC 摄像头都可以直接使用。
uvc摄像头
Leez P710 是基于
RK3399 设计的开发板,根据 TRM,RK3399 有 2 个 USB2.0 控制器 和 2 个 USB 3.0 控制,P710 把它们的 USB 接口都留了出来,这为 P710 提供了灵活的连接接口。我们刚好可以利用它提供的 USB 接口连接 USB 摄像头。
我使用的是 mainline 的内核,当前版本为 5.3-rc2.
在 内核源码根目录下执行 命令,打开 UVC 相关配置:

然后编译内核,dts 使用这里的:rk3399-leez-p710.dts
先烧写这里的固件: 百度网盘 下载, 提取码为 。刷固件的方法可以参考 Debian10 for Leez P710
系统起来后,通过 命令把前面编译的 和 拷贝到开发板上,替换掉原来的 和 ,然后通过 命令重启系统:
注意把上面的用户名、IP 地址、Linux 源码路径换成你自己的。
系统起来后,接入你的 usb 摄像头,然后执行 命令查看内核 log, 可以看到 uvc 已经被系统识别到:

运行 命令可以查看你的摄像头支持的格式:

是 github 上一个开源的 uvc 视频应用,它可以获取 uvc 摄像头的视频流,然后通过局域网传输,可以直接在开发板上编译这个代码并运行:
如果一切顺利,你很快就能编译完代码,然后执行下面的命令运行该应用:
在局域网内,任何电脑的网页端打开如下网址: 你就能实时看到摄像头采集到的视频流。
需要注意的是,上面的 ip 地址是你开发板的 ip 地址。
