imx6ull使用【QT+V4l2】驱动USB摄像头

仓库:https://gitee.com/wangyoujie11/imx6ull-camera“”记得给的star哦“”
在这里插入图片描述
“”=正文开始===="
一、配置内核,使其支持UVC(USB Video Class)
在Linux系统中,UVC驱动的支持在Linux Kernel 2.4之后被增加到内核中。
找到自己的linux源码文件:输入

make menuconfig

按照以下目录进行查找:
1.使能USB Video Class(UVC)
在这里插入图片描述
(如果这一项没有,搜索USB_VIDEO_CLASS检查依赖)在这里插入图片描述
使每一项全y,然后保存退出,再进去就能看到 USB Video Class (UVC0)了
(比如MEDIA_USR_SUPPORT[=n],那就按/,然后输入MEDIA_USR_SUPPORT,查找他在那里配置的,一路进入配置成*,最终保存即可)

2.使能V4L platform devices
进入路径:Device Drivers → Multimedia support

在这里插入图片描述
二、内核中增加摄像头设备信息(PID和VID)
PID和VID如何获取?
方法1:直接查到板子上或者笔记本上(连接到虚拟机),然后 lsusb 查看
在这里插入图片描述

方法2:摄像头插在电脑上,打开设备管理器查看【找到摄像头】
在这里插入图片描述

3.打开linux内核文件下的drivers/media/usb/uvc/uvc_driver.c
找到结构体uvc_ids(滑到文件最后再往上一点)
在这里插入图片描述
输入以下内容【替换自己的PID、VID】

/* 自己添加的摄像头id信息VID是0x12d1,PID是0x4321*/{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE| USB_DEVICE_ID_MATCH_INT_INFO,.idVendor		= 0x12d1,.idProduct		= 0x4321,.bInterfaceClass	= USB_CLASS_VIDEO,.bInterfaceSubClass	= 1,.bInterfaceProtocol	= 0,.driver_info		= UVC_QUIRK_RESTRICT_FRAME_RATE },

三、修改、编译设备树
把下面的注释放开,注释其他LCD节点(本人使用的正点原子4.3寸显示屏)在这里插入图片描述

make dtbs

四、编译替换内核

make zImage

五、网络启动
将编译好的设备树和内核镜像拷贝到网络加载文件夹下面
在这里插入图片描述
六、查看USB摄像头挂载

1.进入根文件系统,插入摄像头、出现以下内容说明挂载成功
在这里插入图片描述

2.输入ls /dev/video*参考当前usb挂载的是多少:注意video0是imx6ull原厂自带的,不能使用,这里我们新插入的是video1设备
在这里插入图片描述

3.更改程序源码:

运行在电脑端:/dev/video0
运行在ARM端:/dev/video1

在这里插入图片描述
七、运行程序
1.电脑端运行测试:
在这里插入图片描述
2.板子端运行测试:
在这里插入图片描述
在这里插入图片描述
请添加图片描述

参考:
https://www.bilibili.com/video/BV1QN4y1R7H5/?spm_id_from=333.337.search-card.all.click

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573291.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】105. 从前序与中序遍历序列构造二叉树(二叉树)

一.题目要求 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 二.题目难度 中等 三.输入样例 示例 1: 输入: preorder [3,9,20,15,7], inorder…

政安晨:【Keras机器学习实践要点】(六)—— 使用内置方法进行训练和评估

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本文涵盖使用内置 API 进行训练和验证&#…

【leetcode】双“指针”

标题:【leetcode】双指针 水墨不写bug 我认为 讲清楚为什么要用双指针 比讲怎么用双指针更重要! (一)快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数…

JAVA面试大全之JVM和调优篇

目录 1、类加载机制 1.1、类加载的生命周期? 1.2、类加载器的层次? 1.3、Class.forName()和ClassLoader.loadClass()区别? 1.4、JVM有哪些类加载机制? 2、内存结构 2.1、说说JVM内存整体的结构?线程私有还是共享的? 2.2…

布隆过滤器详讲

本文旨在讲解布隆过滤器的原理以及实现方式,希望通过本文能使读者对布隆过滤器有一定的认识! 一、布隆过滤器的引入 在讲解布隆过滤器之前,我们还是先提及一下前面讲的位图行,位图可以处理大量的数据,广泛用于查找等…

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024)

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024) 2024 International Conference on Business Management and Digital Economy(ICBMDE 2024) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

小米HyperOS 澎湃os机型免答题 免社区等级 秒接bl锁操作步骤解析

小米机型解锁bl 绕过社区等级5才可以解锁的限制的教程_没有五级社区怎么解锁bl-CSDN博客 上次解析了小米有些出厂不是HyperOS系统的机型绕社区等级接bl锁的操作。目前有更新出厂为HyperOS系统的机型免社区登录等级限制 免答题解锁bl的操作。而且有网友在米14 平板6sp k70这些新…

报错there is no HDFS_NAMENODE_USER defined

在Hadoop安装目录下找到sbin文件夹,修改里面的四个文件 1、对于start-dfs.sh和stop-dfs.sh文件,添加下列参数: HDFS_DATANODE_USERroot HDFS_DATANODE_SECURE_USERhdfs HDFS_NAMENODE_USERroot HDFS_SECONDARYNAMENODE_USERroot 2、对于st…

什么是物联网监控平台?部署物联网平台有什么作用?

随着物联网技术的飞速发展,越来越多的企业开始关注并投入到这一领域。物联网监控平台作为连接物理世界与数字世界的桥梁,正逐渐成为企业数字化转型的关键组件。今天,我们将深入探讨物联网监控平台的定义、部署物联网平台的作用,以…

OSG编程指南<二十一>:OSG视图与相机视点更新设置及OSG宽屏变形

1、概述 什么是视图?在《OpenGL 编程指南》中有下面的比喻,从笔者开始学习图形学就影响深刻,相信对读者学习场景管理也会非常有帮助。 产生目标场景视图的变换过程类似于用相机进行拍照,主要有如下的步骤: (1)把照相机固定在三脚架上,让它对准场景(视图变换)。 (2)…

实测梳理一下kafka分区分组的作用

清空topickafka-topics.sh --bootstrap-server localhost:9092 --delete --topic second创建分区kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic second发kafka-console-producer.sh --bootstrap-server localhos…

方格分割(蓝桥杯)

文章目录 方格分割题目描述答案:509思路dfs 方格分割 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。 如下就是三…