JZ2440 摄像头驱动
殷忆枫
这个作者很懒,什么都没留下…
展开
-
JZ2440 摄像头驱动笔记1---V4L2框架分析
转自http://blog.csdn.net/rubyboss/article/details/140535231、概述V4L2是video for linux version 2的简称Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等...转载 2019-02-22 08:19:12 · 467 阅读 · 0 评论 -
JZ2440 摄像头驱动之实现数据传输5_调试_学习笔记
1、实验(1)编译好驱动程序,卸载原来的驱动,安装新驱动(2)查看设备节点(3)桌面环境下调用xawtv应用程序进行测试(出现段错误)(4)查看 之前存储内核信息的文本文件(显示:无法提交urb。因而在提交urb的那段程序存在问题)返回值是-22,随便写一个错误的宏(如EIO ),然后搜索内核,可以看出参数存在问题(5)如果看不出错误,可以在程序的前面部分加上返回值,判断...转载 2019-02-25 16:34:01 · 191 阅读 · 0 评论 -
JZ2440 摄像头驱动之实现数据传输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; /* ...转载 2019-02-25 16:33:07 · 326 阅读 · 0 评论 -
JZ2440 摄像头驱动之实现数据传输3_设置参数_学习笔记
1、启动传输static int myuvc_vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i){ int ret; /* 1. 向USB摄像头设置参数: 比如使用哪个format, 使用这个format下的哪个f...转载 2019-02-22 08:28:16 · 429 阅读 · 0 评论 -
J2440 摄像头驱动之实现数据传输2_简单函数_学习笔记
/* 参考 drivers/media/video/uvc下的一系列文件 */1、12个ioctl(1)查询属性,是否为摄像头设备static int myuvc_vidioc_querycap(struct file *file, void *priv,struct v4l2_capability *cap){ ...转载 2019-02-22 08:27:27 · 148 阅读 · 0 评论 -
JZ2440 摄像头驱动之实现数据传输1_框架_学习笔记
1、往期回顾(1)根据描述符可知道摄像头支持哪几种格式(YUV、RGB、MJPEG)的视频数据,某一种格式下有哪几种分辨率(4:3),摄像头是否支持某些属性。(2)我们在PC上做实验,为了看到内核打印(printk)的信息,我们用的是dmesg命令。这 种方法有两个缺点:一个是需要不断输入dmesg命令,另一个是驱动程序有问题,导致内核崩溃,就没有机会执行dmesg命令。所以要把输出方式改为...转载 2019-02-22 08:26:40 · 274 阅读 · 0 评论 -
JZ2440 摄像头驱动3_虚拟驱动vivi彻底分析
1、上一节测试的摄像头驱动程序的缺陷(1)依次装载驱动程序,出现错误如下(2)用dmesg命令查看详细输出(某些函数没有识别),可见我们的vivi.ko还依赖于其他驱动程序,上一节直接使用这些命令没有问题,是因为在做虚拟摄像头vivi之前。我们先接上USB摄像头,ubuntu里面自动给我们安装了其他驱动程序。所以在使用vivi的时候,没有出现问题。(3)sudo modprobe viv...转载 2019-02-22 08:25:13 · 210 阅读 · 0 评论 -
JZ2440 摄像头驱动2_虚拟驱动vivi的测试
1、结合应用程序分析涉及到的调用(1)如怎么得到里面的数据、怎么控制摄像头的亮度等信息。(2)现在PC机上做实验在ubuntu上安装一个应用程序的测试程序xawtv安装xawtv:sudo apt-get install xawtvapt-get主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。如果无法上网(3)下面不能ping通,需要加上路由(设置默认网关命令...转载 2019-02-22 08:24:26 · 275 阅读 · 0 评论 -
JZ2440摄像头驱动1_V4L2框架分析学习笔记
1、对于复杂的字符设备驱动程序(以LCD为例)引入分层的概念(1)上层fbmem.c(对于LCD驱动程序来说,内核已经帮我们做好了,这个fbmem.c是内核提供的)(2)我们要做的是硬件相关这一层分配、设置、注册fb_info结构体,这里的注册是把这个结构体告诉fbmem.c,当应用程序调用读写等函数操作LCD的时候,首先会调用fbmem.c的file_operation结构体的...转载 2019-02-22 08:23:39 · 362 阅读 · 0 评论 -
JZ244 摄像头驱动笔记4----UVC摄像头驱动框架分析
一、写一个USB摄像头驱动程序1.构造一个usb_driver2.设置 probe: 2.1. 分配video_device:video_device_alloc 2.2. 设置 &转载 2019-02-22 08:22:34 · 305 阅读 · 0 评论 -
JZ2440 摄像头驱动笔记3---从零写虚拟驱动(仿照vivi.c)
一、关键点分析(1)摄像头驱动程序结构1. 分配结构体:video_device:video_device_alloc2. 设置 .fops 基本的操作函数 .ioctl_ops (里面需要设置11项)(与摄像头操作密切相关的函数) 如果要用内核提供的缓冲区操作函数,还需要构造一...转载 2019-02-22 08:21:48 · 269 阅读 · 0 评论 -
JZ2440 摄像头驱动笔记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里调用...转载 2019-02-22 08:20:53 · 201 阅读 · 0 评论 -
JZ2440 摄像头驱动之设置属性_学习笔记
1、引言(1)之前的程序只实现了数据的传输,在pc linux环境下智能看到摄像 头捕抓的数据,不能调节亮度等属性。卸载自己写的驱动程序,安装系统自带的驱动,执行xawtv,可以查看可以调节的属性2、设置属性(1)应用程序xawtv部分分析1. 先看APP以确定需要实现哪些接口xawtv.c: grabber_scan ...转载 2019-02-25 16:34:51 · 351 阅读 · 0 评论