摄像头驱动
文章平均质量分 92
qingkongyeyue
拼搏到无能为力,坚持到感动自己,有些路走下去很长,很累,但是不走会后悔。人生最大的痛苦,莫过于,坚持了不该坚持的,而放弃了不该放弃的
展开
-
摄像头驱动笔记2---通过虚拟驱动vivi分析摄像头驱动
转自http://www.cnblogs.com/blogs-of-lxl/p/4947545.html一、通过指令 "strace -o xawtv.log xawtv" 得到以下调用信息:关于strace工具的应用参考http://blog.csdn.net/qingkongyeyue/article/details/52228729// 1~7都是在v4l2_open里调用1转载 2016-08-30 22:39:51 · 1122 阅读 · 0 评论 -
摄像头驱动之实现数据传输5_调试_学习笔记
1、实验(1)编译好驱动程序,卸载原来的驱动,安装新驱动(2)查看设备节点(3)桌面环境下调用xawtv应用程序进行测试(出现段错误)(4)查看 之前存储内核信息的文本文件(显示:无法提交urb。因而在提交urb的那段程序存在问题)返回值是-22,随便写一个错误的宏(如EIO ),然后搜索内核,可以看出参数存在问题(5原创 2017-01-19 13:45:35 · 1022 阅读 · 0 评论 -
摄像头驱动之实现数据传输3_设置参数_学习笔记
1、启动传输static int myuvc_vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i){ int ret; /* 1. 向USB摄像头设置参数: 比如使用哪个format, 使用这个format下的哪个frame(分辨率) * 参考: uvc_set原创 2017-01-18 15:12:36 · 4710 阅读 · 0 评论 -
摄像头驱动之实现数据传输2_简单函数_学习笔记
/* 参考 drivers/media/video/uvc下的一系列文件 */1、12个ioctl(1)查询属性,是否为摄像头设备static int myuvc_vidioc_querycap(struct file *file, void *priv,struct v4l2_capability *cap){ memset(cap, 0, sizeof原创 2017-01-18 09:42:08 · 1310 阅读 · 0 评论 -
UVC设备驱动之描述符分析
转自http://blog.csdn.net/u013985662/article/details/488461491.一般的USB设备有设备描述符、配置描述符、接口描述符、端点描述符四种描述符。特定的USB设备还有它自己独特的描述符。USB设备、配置、接口、端点与驱动之间的关系。一个设备可能有多个配置,一个配置可以拥有多种接口(功能),每个接口(功能)转载 2017-07-27 16:25:22 · 1983 阅读 · 0 评论 -
摄像头驱动之设置属性_学习笔记
1、引言(1)之前的程序只实现了数据的传输,在pc linux环境下智能看到摄像 头捕抓的数据,不能调节亮度等属性。卸载自己写的驱动程序,安装系统自带的驱动,执行xawtv,可以查看可以调节的属性2、设置属性(1)应用程序xawtv部分分析1. 先看APP以确定需要实现哪些接口xawtv.c: grabber_scan ng_vi原创 2017-01-19 16:33:43 · 3225 阅读 · 0 评论 -
摄像头驱动之实现数据传输4_URB_学习笔记
1、分配和初始化URBstatic int myuvc_alloc_init_urbs(void){u16 psize;u32 size; int npackets; int i; int j; struct urb *urb;psize = wMaxPacketSize; /* 实时传输端点一次能传输的最大字节数 *原创 2017-01-18 18:10:50 · 3132 阅读 · 0 评论 -
摄像头驱动1_V4L2框架分析学习笔记
1、对于复杂的字符设备驱动程序(以LCD为例)引入分层的概念(1)上层fbmem.c(对于LCD驱动程序来说,内核已经帮我们做好了,这个fbmem.c是内核提供的)(2)我们要做的是硬件相关这一层分配、设置、注册fb_info结构体,这里的注册是把这个结构体告诉fbmem.c,当应用程序调用读写等函数操作LCD的时候,首先会调用fbmem.c原创 2016-12-03 22:19:58 · 1705 阅读 · 0 评论 -
摄像头驱动笔记1---V4L2框架分析
转自http://blog.csdn.net/rubyboss/article/details/140535231、概述Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。就像公司的老板一般都不会直接找底层的员工谈话,而是找部门转载 2016-08-30 22:07:47 · 2726 阅读 · 0 评论 -
CMOS摄像头之硬件原理
一、硬件原理自然景观->摄像头模块->接口->S3C2440的摄像头控制器->LCDov7740(摄像头模块)输入信号: 自然景观等的模拟信号输出信号: RGB、YUV格式的数字信号1). 常用参数输入信号: 自然景观等的模拟信号输出信号: 输出格式为:RAW RGB、YUV输出分辨率为:VGA(640*480)、QVGA原创 2017-04-22 22:17:25 · 9378 阅读 · 3 评论 -
摄像头驱动笔记3---从零写虚拟驱动(仿照vivi.c)
static struct v4l2_format myvivi_format;/* 队列操作1: 定义 */static struct videobuf_queue myvivi_vb_vidqueue;static spinlock_t myvivi_queue_slock;static struct list_head myvivi_vb_local_queu原创 2016-08-31 11:14:06 · 2903 阅读 · 3 评论 -
摄像头驱动笔记4----UVC摄像头驱动框架分析
UVC: USB Video ClassUVC驱动:drivers\media\video\uvc\uvc_driver.c分析:1. usb_register(&uvc_driver.driver);2. uvc_probe uvc_register_video vdev = video_device_alloc();原创 2016-09-01 10:30:19 · 6555 阅读 · 1 评论 -
摄像头驱动3_虚拟驱动vivi彻底分析
1、上一节测试的摄像头驱动程序的缺陷(1)依次装载驱动程序,出现错误如下(2)用dmesg命令查看详细输出(某些函数没有识别),可见我们的vivi.ko还依赖于其他驱动程序,上一节直接使用这些命令没有问题,是因为在做虚拟摄像头vivi之前。我们先接上USB摄像头,ubuntu里面自动给我们安装了其他驱动程序。所以在使用vivi的时候,没有出现问题。(3)sudo mod原创 2016-12-06 20:35:31 · 1252 阅读 · 0 评论 -
摄像头驱动2_虚拟驱动vivi的测试
1、结合应用程序分析涉及到的调用(1)如怎么得到里面的数据、怎么控制摄像头的亮度等信息。(2)现在PC机上做实验在ubuntu上安装一个应用程序的测试程序xawtv安装xawtv:sudo apt-get install xawtv如果无法上网(3)下面不能ping通,需要加上路由(4)重新安装sudo apt-get install xawtv出现原创 2016-12-05 22:22:46 · 1381 阅读 · 0 评论 -
V4L2常用命令标志符和结构体
转自http://blog.csdn.net/u011425939/article/details/53671869在进行V4L2开发中,一般会用到以下的命令标志符:VIDIOC_REQBUFS: 分配内存VIDIOC_QUERYBUF: 把VIDIOC_REQBUFS中分配的数据缓存转换成物理地址VIDIOC_QUERYCAP: 查询驱动功能VIDIOC_EN转载 2017-04-08 11:40:53 · 1627 阅读 · 0 评论 -
v4l2_field理解
转自http://blog.csdn.net/kickxxx/article/details/6367669video的帧可区分为隔行和逐行: 逐行顺序的传输一帧所有的行,而隔行则把一帧划分成两个fields,分别保存帧的奇数行和偶数行,被称作奇场和偶场. 阴极射线电视机需要交替的显示两场来组成一个完整的帧,交替的时延需要我们交替的传输奇场和偶场。这个奇怪技术的引入是因为:在刷新率接近电转载 2017-04-08 11:50:00 · 1078 阅读 · 0 评论 -
摄像头驱动之实现数据传输1_框架_学习笔记
1、往期回顾(1)根据描述符可知道摄像头支持哪几种格式的视频数据,某一种格式下有哪几种分辨率,摄像头是否支持某些属性。(2)我们在PC上做实验,为了看到内核打印(printk)的信息,我们用的是dmesg命令。这 种方法有两个缺点:一个是需要不断输入dmesg命令,另一个是驱动程序有问题,导致内核崩溃,就没有机会执行dmesg命令。所以要把输出方式改为文件输出。2、把输出方式改为文件输原创 2017-01-17 15:50:43 · 2733 阅读 · 0 评论