最近在做一个arm+linux平台的视频驱动.本来这个驱动应该是做板子的第三方提供的,结果对方软件实力很差,自己做不了这个东西,外包给了一个暑期兼职的在读博士.学生嘛,只做过实验,没做过产品,给出的东西自然和产品的实际需要相去十万八千里.博士同学给我们的驱动甚至是从未编译过的,充满了"unsigned void "这样可笑的语法错误,不得已跑到北平追着那厮现场联调,最后所谓的“调通”,也仅仅是寄存器配置正确而已. 视频驱动的输出是连续的帧数据,必须要有完善的缓冲.跳帧和同步阻塞机制.而…
参考: Linux下半部处理之软中断 linux中断底半部机制 <深入理解Linux内核>软中断/tasklet/工作队列 软中断和tasklet介绍 详解操作系统中断 Linux内核:中断.软中断.tasklet 为了提高系统的响应能力和并发能力,Linux将中断处理分了上半部和下半部.当一个中断产生,调用该中断对应的处理程序(上半部),然后告诉系统,对应的后半部可以执行了,中断处理程序立即返回,下半部会在合适的时机由操作系统调用.这样一来就大大的减少了中断处理所需要的时间. 中断上半部处理…
转自:http://blog.chinaunix.net/uid-20768928-id-5077401.html 在LINUX RS485的使用过程中,由于各种原因,最后不得不使用中断底半部机制的方法来进行实现此功能.先讲两个小故事来描述一下,遇到的问题.也是因为自己对底半部机制理解得不透彻.这些故事的前提都是在串口中断中,一定条件后去完成某件事情,但时间上不能超过5ms. 故事一,最开始想到的是用workqueue.印象中workqueue 就是用来做这种事的,并且还记得可以延时一段时间再来…
文章目录 中断上半部.下半部的概念 实现中断下半部的三种方法 软中断 软中断模版 tasklet tasklet函数模版 工作队列 工作队列函数模版 进程上下文和中断上下文 软中断和硬中断的区别 硬中断.软中断和信号的区别 中断上半部.下半部的概念   设备的中断会打断内核进程中的正常调度和运行,系统对更高吞吐率的追求势必要求中断服务程序尽量短小精悍.但是,这个良好的愿望往往与现实并不吻合.在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理.   下…
V4L2是Linux环境下开发视频采集设备驱动程序的一套规范(API),它为驱动程序的编写提供统一的接口,并将所有的视频采集设备的驱动程序都纳入其的管理之中.V4L2不仅给驱动程序编写者带来极大的方便,同时也方便了应用程序的编写和移植,具有广泛的应用价值. Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现图片.视频.音频等的采集…
在单片机开发中中断就是执行过程中发生了一些事件需要及时处理,所以需要停止当前正在运行的处理的事情转而去执行中断服务函数,已完成必要的事件的处理.在Linux中断一样是如此使用但是基于常见的中断控制器的特性比如不支持中断嵌套,当CPU在处理一个中断时是无法响应其他中断的,所以就会导致整个系统的实时性就比较差,所以在Linux下的思路就是尽量简短中断上下文执行的指令数量,把一些必须在中断上下文执行的代码放在中断上下文中执行,而一些儿可以适当推迟的处理延迟处理.这就是Linux的中断处理程序的机制,将…
一.简介 Video for Linuxtwo(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现图片.视频.音频等的采集.可以对uvc免驱摄像头直接操作.在远程会议.可视电话.视频监控系统和嵌入式多媒体终端中都有广泛的应用. 二.V4L2视频采集原理 V4L2支持内存映射方式(mmap)和直接读取方式(read)来采集数据,前者一般用于连续视频数据的采集,后者常用于静…
基于PCIe的多路视频采集与显示子系统 1        概述 视频采集与显示子系统可以实时采集多路视频信号,并存储到视频采集队列中,借助高效的硬实时视频帧出入队列管理和PCIe C2H DMA引擎,将采集到的视频帧实时传递到上位机采集缓冲区. 视频采集与显示子系统使用高效的PCIe H2C DMA引擎读取上位机显示缓冲区的视频帧,存储到视频显示队列中,并且可以借助外部输入的硬件显示定时脉冲实时访问视频显示队列,按照显示定时脉冲输出视频帧. 对于多路视频采集与显示子系统,在上位机可以使用标准的L…
Linux kernel workqueue机制分析 在内核编程中,workqueue机制是最常用的异步处理方式.本文主要基于linux kernel 3.10.108的workqueue文档分析其基本原理和使用API. 概览 Workqueue(WQ)机制是Linux内核中最常用的异步处理机制.Workqueue机制的主要概念包括:work用于描述放到队列里即将被执行的函数:worker表示一个独立的线程,用于执行异步上下文处理:workqueue用于存放work的队列. 当workqueue…
Linux内核同步机制之completion 内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束.这个活动可能是,创建一个新的内核线程或者新的用户空间进程.对一个已有进程的某个请求,或者某种类型的硬件动作,等等.在这种情况下,我们可以使用信号量来同步这两个任务.然而,内核中提供了另外一种机制--completion接口.Completion是一种轻量级的机制,他允许一个线程告诉另一个线程某个工作已经完成. 结构与初始化 Completion在内核中的实现基于等待队列(…