Linux内核交叉编译UVC---基于正点原子IMX6ULL

 前言

        嵌入式交叉编译UVC挂载免驱相机拍摄视频照片;

        为了在正点原子开发板上实现免驱摄像头采集图片。需要自己构建Linux内核,通过配置menuconfig实现支持UVC,在编译内核的过程中遇到许多困难,反复编译后终于成功,现在记录。

准备工作

根文件系统:需要包含v4l库(这个必须要有),有ffmpeg更好。如果没有v4l,那就需要使用buildroot构建包含v4l库的根文件系统。

具体步骤

1.内核中增加摄像头的PID和VID

查看相机的硬件属性:

windows系统下连接相机,打开设备管理器,选择相机,右键属性,选择硬件属性查看。

例如我的罗技C207相机:VID_0x046d&PID_0x0825

        然后打开内核根目录下的drivers/media/usb/uvc/uvc_media.c

       添加自己相机的属性将自己相机的VID和PID写进对应的位置,如下图两个红框是我添加的两个相机的属性,一个罗技c207和一个双目相机。

2.menuconfig配置UVC

内核根目录:make menuconfig进入内核编译配置。打开如下几项

Device Drives
	---> Multimedia support
		---> <*>Media USB Adapters
		---> V4L platform devices
			---> <*>SoC camera support
			---> <*>platform camera support

然后在Device Drives---> Multimedia support ---> Media USB Adapters中进行如下配置。USB VIdeo Class (UVC)一定要选中 * ,不要选M !!选择后如下图所示

如果找不到这项,说明是相关的依赖项未打开。打开下面红框标注的依赖,可以通过"/+需要查找的依赖名"进行搜索查找依赖位置,然后打开。

之后,把下图的也配置上:Device Drivers → Multimedia support → V4L platform devices下

完成后保存并且退出menuconfig 编译zImage和.dtb文件

make -j 8

这里我的IMX6ULL使用tftp启动,所以我将将编译好的zImage和.dtb文件放到tftp中,重新启动开发板。

3.验证

启动后查看相机是否挂载成功

ls /dev/video*

可以看到这里除了本来就有的video0新增了两个video设备1和2,就是我的两个相机。

相机成功挂上了

接下来使用相机拍摄视频试一试:

1、用v4l2采集视频,参考:V4L2抓取USB摄像头YUV视频数据代码_v4l2获取yuyv图像数据-CSDN博客,将代码交叉编译后在开发板中运行如果能够成功获取YUV视频就成功了

2、用fffmjpg采集avi格式的视频,直接执行命令:

ffmpeg -s 320x240 -i /dev/video1 ./test.avi

成功采集到yuv和avi视频文件

欢迎留言讨论(^——^)

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值