USB摄像头在RK3399上的应用一、简介UVC全称USBVideoClass,是USB-IF定制的一套标准。凡是遵循这个标准的USB接口相机,都可以在Windows、Linux等系统上运行,几乎可以直接使用,达到类似免驱的效果。当然,并不是真的不需要驱动,而是USB接口的摄像头只要符合UVC标准,Windows和Linux系统中一套通用的驱动就可以驱动,不需要你安装其他驱动器。比如Linux内核中有一套UVC设备的通用驱动:drivers/media/usb/uvc,只要打开这个驱动,几乎所有的UVC摄像头都可以直接使用。2、LeezP710的USB接口LeezP710是一款基于RK3399设计的开发板。根据TRM,RK3399有2个USB2.0控制器和2个USB3.0控制器。灵活的连接接口。我们可以直接使用它提供的USB接口来连接USB摄像头。3、打开内核的UVC驱动。我用的是主线内核,当前版本是5.3-rc2。在内核源码根目录下执行makeARCH=arm64menuconfig命令打开UVC相关配置:然后编译内核,这里dts使用:rk3399-leez-p710.dts先把固件烧录到这里:百度网盘下载,提取码是t4xg。刷固件的方法可以参考Debian10forLeezP710。系统起来后,通过scp命令将之前编译好的Image和dtb复制到开发板上,替换原来的Image和dtb,然后通过reboot命令重启系统:scp-randy@172.16.12.67:~/your/linux/arch/arm64/boot/Image.scp-randy@172.16.12.67:~/your/linux/arch/arm64/boot/dts/rockchip/rk3399-leez.dtb.cpImage/boot/Imagecprk3399-leez-p710.dtb/boot/dtb/rockchip/rk3399-leez.dtbsyncreboot注意将上面的用户名、IP地址、Linux源码路径替换成自己的。系统启动后,连接你的usb摄像头,然后执行dmesg命令查看内核日志,可以看到uvc已经被系统识别了:运行v4l2-ctl-d/dev/video0--list-formats-ext命令查看相机支持的格式:4.运行mjpg-streamermjpg-streamer是github上的开源uvc视频应用程序。它可以获取uvc摄像头的视频流,然后通过局域网进行传输。可以直接在开发板上编译这段代码并运行:gitclonehttps://github.com/andyshrk/mjpg-streamer.gitcdmjpg-streamer/mjpg-streamer-experimental/aptinstallcmakelibjpeg62-turbo-devmake如果一切顺利,你很快就可以编译代码,然后执行以下命令运行应用程序:./mjpg_streamer-o"output_http.so-w./www"-i"input_uvc.so"在本地局域网,在任意一台电脑的网页打开如下网址:http://172.16.33.179:8080/?action=stream可以看到摄像头实时拍摄的视频流。需要注意的是,上面的ip地址是你的开发板的ip地址。更多原创作品,请扫描二维码关注公众号:HackforFun
