- 博客(12)
- 收藏
- 关注
原创 Linux V4L2子系统——videobuf2
Video设备产生的数据较多,传统的缓冲机制已不能满足需求。为此,Linux内核抽象出了videobuf2机制,用于管理存放视频图像的帧缓冲。videobuf2抽象层像一座桥梁,将用户空间和V4L2 driver连接起来。videobuf2抽象层向用户空间提供了标准POSIX I/O系统调用,包括read、poll及mmap等,同时还提供了大量与流式I/O相关的V4L2 ioctl调用,包括缓冲区分配、缓冲区入队、缓冲区出队及流控制。
2023-12-02 23:54:55
175
原创 Linux V4L2子系统——v4l2_device
V4L2主设备实例使用struct v4l2_device结构体表示,v4l2_device是V4L2子系统的入口,管理着V4L2子系统的主设备和从设备。简单设备可以仅分配这个结构体,但在大多数情况下,都会将这个结构体嵌入到一个更大的结构体中。
2023-12-02 21:41:13
167
原创 Linux V4L2子系统——video_device
在V4L2子系统中,Video设备是一个字符设备,设备节点为/dev/videoX,主设备号为81,次设备号范围为0-63。在用户空间,应用可以通过open/close/ioctl/mmap/read/write系统调用操作Video设备。
2023-12-02 17:20:39
428
原创 Linux V4L2子系统——v4l2_subdev
对于摄像机来说,常用的子设备是:传感器和摄像机控制器。这些设备通常是I2C设备(大多数)。为了给驱动程序提供与这些子设备一致的接口,故创建了v4l2_subdev结构(定义在v4l2-subdev.h文件中)。在子设备驱动程序中必须包含一个v4l2_subdev结构。对于简单的子设备驱动程序,可以直接使用struct v4l2_subdev进行描述。
2023-11-30 23:26:41
627
原创 Linux V4L2子系统——结构体
内核版本:4.1.15v4l2结构体之video_device介绍在V4L2子系统中,Video设备是一个字符设备,设备节点为/dev/videoX,主设备号为81,次设备号范围为0-63。video设备使用struct video_device结构体表示。设备的操作方法是fops和ioctl_ops函数指针集合。fops是文件操作方法,实现常见的open、read、write方法,ioctl_ops实现应用层的ioctl函数,功能较多。使用video_register_device注册该结构
2023-11-30 18:11:58
294
原创 Linux camera框架分析
本文内核版本为4.1.15本文介绍的是内核自带的vivid代码,分析Linux camera框架,是Linux内核中的基于V4L2的video驱动。
2023-11-29 00:24:44
249
1
原创 LCD驱动(Framebuffer)
在Linux设备中,LCD显示采用了帧缓冲(framebuffer)技术,LCD驱动也被称为Framebuffer驱动。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象出来,可以通过对Framebuffer的读写来实现对显存进行操作。用户可以将framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行映射的进程地址空间进行读写操作,而写操作可以立即反应在屏幕上。用户不需要关心物理显存的位置、换页机制等等具体细节。这些都是由framebuffer设备驱动来完成的。
2023-11-13 23:15:05
416
原创 Linux内核USB2.0控制器初始化代码分析
本文分析的imx6ull的USB代码。2、初始化分析IMX6ULL的USB初始化驱动是一个platform_driver,设备树匹配的属性为“fsl,imx6ul-usb”,入口函数为ci_hdrc_imx_probe。ci_hdrc_imx_probe函数的主要工作如下:新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y
2023-10-25 14:38:42
505
1
原创 1. USB简介
USB是通用串行总线(Universal Serial Bus)的缩写。USB一般分为USB低速,USB,USB和USB超。一个USB系统主要被定义为三个部分:USB的连接、USB的设备、USB的主机。
2023-10-20 16:57:49
954
1
原创 Linux内核并发源
同一类型的中断处理程序不会并发执行,但不同类型的中断可能传送不同的CPU,因此不同类型的中断程序可能会并发执行。软中断和tasklet:软中断和tasklet随时可能被调度执行,打断当前正在执行的进程上下文。中断和异常:中断发生后,中断处理程序和被中断的进程之间可能产生并发访问。软中断和tasklet之间不会并发执行,但是可以打断进程上下文的执行。统一类型的tasklet是串行执行的,不会再多个CPU上并发执行。中断处理程序可以打断软中断和tasklet的执行。同一类型的软中断会在不同的CPU上并发执行。
2023-07-21 10:39:23
83
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人