linux_驱动_camera_架构_V4L2_实现数据传输

最新文章

  • Linux内核设计与实现读书笔记-定时器和时间管理
  • Linux内核设计与实现读书笔记-虚拟文件系统
  • Linux内核设计与实现读书笔记-内核同步
  • PCM编码
  • 编写Linux驱动常见错误

分类专栏

  • 图像识别和处理
  • 视频编码
  • 音频编码
  • 音频识别和处理
  • 操作系统 75篇
  • C++/C 60篇
  • 视音频编解码 72篇
  • 硬件电路 7篇
  • 无线/通信 37篇
  • 嵌入式裸板程序 3篇
  • android学习 17篇
  • 云技术 1篇
  • 命令工具 31篇
  • 汇编语言 20篇
  • wifi网卡 23篇
  • uboot 25篇
  • 声卡 26篇
  • nand flash 6篇
  • mjpg-streamer 10篇
  • 摄像头驱动 17篇
  • Java基础 7篇
  • opencv学习 3篇
  • 图像处理 11篇
  • Qt 9篇
  • 电脑知识积累 3篇
  • USB 22篇
  • 网络编程 22篇
  • 音频处理 16篇
  • 视音频编码结构体 3篇
  • 视音频编解码函数 9篇
  • MFC 3篇
  • 数据结构 29篇
  • windows API
  • 算法 9篇
  • 数字信号处理 10篇
  • shell编程实践 7篇
  • Matble 9篇
  • 根文件系统 4篇
  • 流媒体协议 23篇
  • 流媒体服务器 5篇
  • 驱动应用程序调试 19篇
  • wireshark/tcpdump 4篇
  • MPEG4
  • 驱动架构 5篇
  • I2C/SPI/I2S 8篇
  • LCD/触摸屏 4篇
  • 音频编码 1篇

归档

2018
7月 3篇
2017
10月 1篇
9月 3篇
8月 33篇
7月 55篇
6月 28篇
5月 50篇
4月 62篇
3月 36篇
2月 40篇
1月 51篇
2016
12月 33篇
11月 55篇
10月 92篇
9月 49篇
8月 80篇
7月 11篇

最新评论

  • Matlab中对画出来的图片(pl...

    ffrost:能不能通过编程实现

  • 在二维数组中*a,a,a[0] ,...

    dwy_qiang:感谢,早点看到你这篇文章就不用晕了

  • 运行地址、链接地址、加载地址、存储...

    lubing20044793:运行地址不一定定于链接地址!

  • YUV2----将YUV420P像...

    qq_41966633:[reply]u013427969[/reply]哦哦哦,谢谢谢谢

  • YUV2----将YUV420P像...

    u013427969:[reply]qq_41966633[/reply]YUV420P 4:1:1 所以转灰度要么把后面的色度值转为无色(128) 要么直接取前面灰度Y分量 Y分量大小是w*h 所以后面的u、v分量大小合计就是w*h/2

	

摄像头驱动之实现数据传输1_框架_学习笔记

             

1、往期回顾

(1)根据描述符可知道摄像头支持哪几种格式(YUV、RGB、MJPEG)的视频数据,某一种格式下有哪几种分辨率(4:3),摄像头是否支持某些属性。

linux_驱动_camera_架构_V4L2_实现数据传输_第1张图片

(2)我们在PC上做实验,为了看到内核打印(printk)的信息,我们用的是dmesg命令。这 种方法有两个缺点:一个是需要不断输入dmesg命令,另一个是驱动程序有问题,导致内核崩溃,就没有机会执行dmesg命令。所以要把输出方式改为文件输出。

2、把输出方式改为文件输出
 设置ubuntu让它从串口0输出printk信息
a. 设置vmware添加serial port, 使用文件作为串口(不使用物理串口,因为输出信息比较慢,所以输出到文件(以.txt为文件后缀))

linux_驱动_camera_架构_V4L2_实现数据传输_第2张图片
b. 启动ubuntu,修改/etc/default/grub(开机引导文件)
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"//console=ttyS0是指从串口0(波特率是115200,n表示没有校验位,数据位是8)输出信息,console=tty0是指从终端0输出信息
sudo update-grub//grub是启动引导文件,因而更新
sudo reboot  //重启系统(然后查看我们输出的.txt的log文件)

dmesg命令可以查看内核打印信息,但是信息同步不到我们之前设置的.txt文件

//修改内核打印级别,把4改成8,就可以打印所有的信息,为0时禁止打印信息。


//用su命令切换到root用户,但是切换后不成功,因为ubuntu禁止root用户登录。

c. ubuntu禁止root用户登录
先修改root密码: sudo passwd root   (重新修改密码后就可以切换为root用户)????
然后执行"su root"就可以用root登录了
退出ROOT模式的话,可以输入exit 回车

Ctrl + D

Ctrl + C是终止正在执行的命令。
& 是用于使进程在后台运行

d. echo "8 4 1 7" > /proc/sys/kernel/printk //修改内核打印级别,把4改成8,就可以打印所有的信息,为0时禁止打印信息。

int console_printk[4] = {

       DEFAULT_CONSOLE_LOGLEVEL,  终端级别

       DEFAULT_MESSAGE_LOGLEVEL,  默认级别

       MINIMUM_CONSOLE_LOGLEVEL,让用户使用的最小级别

       DEFAULT_CONSOLE_LOGLEVEL,  默认终端级别

};




再次重启后,只要执行这2个命令就可以:

su root //切换到root用户
echo "8 4 1 7" > /proc/sys/kernel/printk



3、写代码

(1)框架
1.构造一个usb_driver
2.设置
   probe:
        2.1. 分配video_device:video_device_alloc
        2.2. 设置
           .fops
           .ioctl_ops (里面需要设置11项)
           如果要用内核提供的缓冲区操作函数,还需要构造一个videobuf_queue_ops
        2.3. 注册: video_register_device      
  id_table: 表示支持哪些USB设备(逻辑上的设备(接口))      
3.注册: usb_register

linux_驱动_camera_架构_V4L2_实现数据传输_第3张图片

(2)调用过程

file_operation结构体(myuvc_fops)里面的open函数调用ioctl函数(video_ioctl2)

linux_驱动_camera_架构_V4L2_实现数据传输_第4张图片

ioctl函数调用_video_do_ioctl函数从而调用v4l2_ioctl_ops结构体

linux_驱动_camera_架构_V4L2_实现数据传输_第5张图片



A7 APP调用该ioctl让驱动程序分配若干个缓存, APP将从这些缓存中读到视频数据 

A8 查询缓存状态, 比如地址信息(APP可以用mmap进行映射) 

A9 把缓存映射到APP的空间,以后APP就可以直接操作这块缓存 

A10 把缓冲区放入队列, 底层的硬件操作函数将会把数据放入这个队列的缓存 

A11 启动传输 

应用程序怎么知道缓冲区里面有数据,利用poll函数


 


        
原创文章 258获赞 225访问量 133万+
           
  • 点赞
  • 评论
  • 分享
    x

    海报分享

    扫一扫,分享海报

  • 收藏
  • 手机看

    分享到微信朋友圈

    x

    扫一扫,手机阅读

  •                                 打赏
                    
                
                

    打赏

    qingkongyeyue

    “你的鼓励将是我创作的最大动力”

    5C币 10C币 20C币 50C币 100C币 200C币
        
                    
        
  • 还能输入1000个字符

    qq_42230338的博客

    08-12 46

    USB摄像头驱动实现数据传输2_实现简单函数

    /* 参考 drivers/media/video/uvc下的一系列文件 */1、12个ioctl(1)查询属性,是否为摄像头设备/* A2 确定是不是视频设备*//* 参考uvc_v4l2.c文件的...

    小菜鸟的脚印

    08-02 7740

    海康 网络摄像头摄像头数据传输及流解码

    写在前面:对于海康的技术支持我不想多做评价,电话打不通邮件不回,一些找寻解决方案的灵感多来自于海康的论坛和官网给的demo程序。不过问题解决后感觉 靠自己,不放弃 是多么重要。声明:此处的解决方法是结...

    qingkongyeyue的博客

    01-18 1839

    摄像头驱动实现数据传输4_URB_学习笔记

    1、分配和初始化URBstatic int myuvc_alloc_init_urbs(void){u16 psize;u32 size;    int npackets;    int i;    ...
    
    

    基于S3C2440的网络浏览摄像头实现详细步骤

    04-10

    摄像头拍照上传到服务器保存到数据库

    03-05

    USB摄像头视频传输方案!

    08-12

    如何将海康的摄像头数据传给自己写的人脸识别的demo里?

    03-05

    关于海康摄像头rtsp视频流传输的问题

    11-21

    ...驱动1_V4L2框架分析学习笔记_运维_qingkongyeyue的..._CSDN博客

    5-2

    摄像头驱动实现数据传输5_调试_学习笔记_运维_qingkongyeyue的...

    3-24

    请教一个摄像头数据传输的问题

    03-13

    USB摄像头驱动实现数据传输2_实现简单函数_运维_qq_4..._CSDN博客

    4-4

    ...数据,并实时传输到客户端,延迟大概40ms左右_运维_Mr..._CSDN博客

    5-3

    
    
    
    

    qingkongyeyue的博客

    12-03 1115

    摄像头驱动1_V4L2框架分析学习笔记

    1、对于复杂的字符设备驱动程序(以LCD为例)引入分层的概念(1)上层fbmem.c(对于LCD驱动程序来说,内核已经帮我们做好了,这个fbmem.c是内核提供的)(2)我们要做的是硬件相关这一层分配...

    Python大本营的博客

    03-26 2万+

    “程序员数学不行,干啥都不行!”高级开发:90%都是瞎努力!

    点击上方“Python大本营”,选择“置顶公众号”Python大本营 IT人的职业提升平台之前有很多读者留言向我们反馈:数学不好做算法优化,每次遇到......

    linux驱动编写(摄像头驱动)_运维_平凡的程序员-CSDN博客

    5-5

    自己写的uvc摄像头驱动程序_运维_zhangjianjun521的博客-CSDN博客

    5-7

    CJOK's blog

    05-11 1万+

    V4L2框架分析学习

    V4L2框架分析学习Author:CJOKContact:cjok.liao#gmail.comSinaWeibo:@廖野cjok 1、概述Video4Linux2是Linux内核中关于视频设备的内核...

    4.USB摄像头驱动框架分析_运维_LingXiaokai的博客-CSDN博客

    4-10

    OV5640摄像头模块FPGA驱动及HDMI显示_运维_dongze2的博客-CSDN博客

    5-5

    usb摄像头的出来数据格式问题?

    12-12

    chinabinlang的专栏

    04-08 559

    读取PC端摄像头数据并进行编码和流媒体传输

    #define USEFILTER 0#include <stdio.h>#include <conio.h>#include <...

    如何获取usb接口摄像头采集的图像数据

    10-08

    请问从USB摄像头读取的原始数据如何转换成图像

    10-07

    怎么实现USB摄像头远程监控

    07-07

    qingkongyeyue的博客

    01-19 645

    摄像头驱动实现数据传输5_调试_学习笔记

    1、实验(1)编译好驱动程序,卸载原来的驱动,安装新驱动(2)查看设备节点(3)桌面环境下调用xawtv应用程序进行测试(出现段错误)(4)查看 之前存储内核信息的文本文件(显示:无法提交urb。因而...

    qq_42230338的博客

    08-12 43

    USB摄像头驱动实现数据传输3_设置参数

    1、启动传输/* A11 启动传输 * 参考: uvc_video_enable(video, 1): * uvc_commit_video * uvc_in...

    Mr0cheng的专栏

    09-27 3028

    捕捉摄像头数据,并实时传输到客户端,延迟大概40ms左右

    项目地址:https://github.com/chengshuyi/CAMERAL-NETWORKCAMERAL-NETWORKTHREE STEPS TO CREATE A CAMERAL NET...

    bo_的博客

    03-29 285

    JZ2440- USB 摄像头

    一: 编写Myuvc 文件源码(仿照 :Uvc_driver.c (drivers\media\video\uvc) 移植)编译模块后,加载出现 errordmesg后 ,打印如下:当前编译的源码版本...

    EasyNVR官方技术博客

    03-06 1289

    如何实现摄像头监控数据实时存储及传输?

    我们今天接到一个需求电话,是用户打电话向我们咨询方案,具体场景是这样的:需要用户对某个场景的监控数据进行访问,也就是监控摄像头拍摄到的,外网用户在我们的网站上都能看到,难点是怎么把摄像头监控的数据进行...

    beike1的博客

    06-24 4299

    基于H264-USB摄像头的RTP实时视频的传输

    基于H264-USB摄像头的RTP实时视频的传输

    小棋学编程的博客

    01-06 1万+

    从调试数据分析USB通信协议——UVC摄像头【UVC类设备】(五)

    从调试数据分析USB通信协议——UVC摄像头【UVC类设备】(五)    前面关于USB协议的一些基础学习得也不少了,由简入深,趁热打铁,接下来,我们就来分析一下我们的主题,UVC摄像头了。有了上面一...

    游戏人生的专栏

    12-23 1万+

    摄像头视频采集压缩及传输

    引言:摄像头基本的功能还是视频传输,那么它是依靠怎样的原理来实现的呢?所谓视频传输:    就是将图片一张张传到屏幕,由于传输速度很快,所以可以让大家看到连续动态的画面,就像放电影一样。一般当画面的传...

    如何获得摄像头采集到的数据格式?

    11-15

    如何将摄像头的数据通过耳机线传输到手机上

    09-30

    我的嵌入式

    11-24 2702

    USB摄像头驱动的移植 linux

    USB摄像头驱动的移植一、驱动程序中的重要数据结构    Linux系统下,USB设备驱动程序完全符合通用设备驱动的准则,不同的是Linux操作系统中有一个叫做“USB CORE”的子系统,它的作用是...

    ztshun的专栏

    08-20 2696

    jz2440裸板移植内核驱动实现uvc摄像头驱动中经验总结

    1 uboot的烧写注意事项:jlink 不能烧写nandflash,   pc机是ping不通uboot的,只能从uboot ping主机...

    11-21 233

    Linux USB摄像头驱动【转】

    本文转载自:http://www.itdadao.com/articles/c15a509940p0.html在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 U...

    qingkongyeyue的博客

    01-18 655

    摄像头驱动实现数据传输2_简单函数_学习笔记

    /* 参考 drivers/media/video/uvc下的一系列文件 */1、12个ioctl(1)查询属性,是否为摄像头设备static int myuvc_vidioc_querycap(st...

    baixingzhi2917的博客

    04-19 36

    驱动摄像头的三种方式

    备注:本文部分解决方案来自互联网,本文仅作为自己学习笔记,不存在任何商业目的进来研究把硬件摄像头驱动起来,得到3种方法:VFW、DirectShow、OpenCV。下面依次对3种方法进行记录。首先先对...

    Mr.Monster的博客

    07-26 8422

    C++网络摄像头数据的获取与显示 (续)

    上篇介绍过了vlc对于网络摄像头数据的获取,继续上篇介绍opencv获取摄像头数据OpenCV是一个强大的计算机视觉库,而不是视频流编码器或者解码器。希望大家不要走入这个误区,可以把这部分简单单独看待...

    似水流年

    04-15 2460

    ffmpeg--学习笔记(二)-将电脑的摄像头数据传输到服务器上去

    1、阿里云服务器开启Node.js服务器端(记得Nginx配置文件里设置端口转发)node websocket-relay 8888 8081 80822、windows开启ffmpeg上传摄像头数据...

    01-18 2346

    关于获取监控摄像头数据。车联网

    最近再做一个车联网管理系统demo。在车辆上安装gps和摄像头采集数据,然后通过tcp传输16进制数据到手机端,手机端显示定位速度和视频功能。开发过程中碰到几个难点记录下来,以便以后查看。1.tcp传...

    wing12345678910的博客

    01-18 909

    camera framwork的控制实现,以及数据回调

    本文是在http://blog.csdn.net/wing12345678910/article/details/79088511的基础上进一步分析学习,camera 在framwork层的如何实现操...

    你可能感兴趣的:(底层驱动,摄像头驱动)