参考资料:
1、海思官方文档
2、Linux USB 摄像头驱动 https://blog.csdn.net/qq_26093511/article/details/78763824
淘宝找的USB 摄像头厂家买的YUV的摄像头。
接到PC上,
多了一个摄像头设备。
右键属性 -> 详细信息 –> 属性 选择硬件 ID 查看
可以得到插入的 USB 摄像头 VID:PID 为04f2:b3f0 。 这里的 ID 号可以在下一步 UVC 官方的文档中进一步确定是否被支持。
通过这个网页 http://www.ideasonboard.org/uvc/ 来查看是否支持 UVC,这个网站是 USB Video Class Linux device driver 的主页,里面有 UVC 的详细的介绍。根据前面的打印信息,根据自己的 ID 号, 这里是搜索 USB 摄像头的 VID 号:04f2 和 PID 号:b3f0。
通过摄像头的 ID,可以看到该摄像头是否支持 UVC 和其他信息。绿勾代表支持。
发现没有找到这个型号的。
AMCap是在windows系统上运行的软件,网上有下载。
依次看了下支持YUY2的 640X480 30帧, 720p 10帧, 1080P 5帧。
跟YUYV是一样的,
格式为每个像素保留Y分量,而UV分量在水平方向上每两个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4:2:2的意思为一个宏像素中有4个Y分量、2个U分量和2个V分量。)图像数据中YUV分量排列顺序如下:
Y0 U0 Y1 V0 Y2 U2 Y3 V2 …
执行:make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux- menuconfig
进入 menuconfig 的如下路径,
Device Drivers —>
[*] USB support —>
<*> EHCI HCD (USB 2.0) support
[*] Improved Transaction Translator scheduling (NEW)
<*> Generic EHCI driver for a platform device
<*> OHCI HCD (USB 1.1) support
<*> Generic OHCI driver for a platform device
PHY Subsystem —>
<*> Hisilicon Inno USB2 PHY suppor
USB2.0 Host 配置如下
Multimedia support
Device Drivers —>
<*> Multimedia support —>
配置如下:
Device Drivers —>
<*> Multimedia support —>
<*>Media USB Adapters —>
Device Drivers —>
<*> Multimedia support —>
<*>V4L platform devices —>
配置如下:
PHY Subsystem —>
<*> Hisilicon Inno USB2 PHY support
由于 VID:PID 为04f2:b3f0 的设备不在支持列表
需要修改驱动代码:
尝试修改如下:
driver/media/usb/uvc/uvc_driver.c
增加内容:
......
static struct usb_device_id uvc_ids[] = {
/*XXXX taobao product */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
.idVendor = 0x04f2,
.idProduct = 0xb3f0,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_QUIRK_RESTRICT_FRAME_RATE },
......
生成的以下ko文件:
gspca_main.ko
uvcvideo.ko
videobuf2-memops.ko
videobuf2-vmalloc.ko
安装顺序安装驱动:
insmod videobuf2-memops.ko
insmod videobuf2-vmalloc.ko
insmod uvcvideo.ko
插入USB 摄像头识别成功,打印如下:
# usb 1-1: new high-speed USB device number 3 using ehci-platform
uvcvideo: Found UVC 1.00 device 5M Cam (04f2:b3f0)
input: 5M Cam as /devices/soc/10120000.ehci/usb1/1-1/1-1:1.0/input/input1
通过命令 ls /dev/video0 查看video 设备
/dev/video0
到此驱动部分添加完成。