自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 75

原创 Linux V4L2子系统——v4l2_device

V4L2主设备实例使用struct v4l2_device结构体表示,v4l2_device是V4L2子系统的入口,管理着V4L2子系统的主设备和从设备。简单设备可以仅分配这个结构体,但在大多数情况下,都会将这个结构体嵌入到一个更大的结构体中。

2023-12-02 21:41:13 86

原创 Linux V4L2子系统——video_device

在V4L2子系统中,Video设备是一个字符设备,设备节点为/dev/videoX,主设备号为81,次设备号范围为0-63。在用户空间,应用可以通过open/close/ioctl/mmap/read/write系统调用操作Video设备。

2023-12-02 17:20:39 326

原创 Linux V4L2子系统——v4l2_subdev

对于摄像机来说,常用的子设备是:传感器和摄像机控制器。这些设备通常是I2C设备(大多数)。为了给驱动程序提供与这些子设备一致的接口,故创建了v4l2_subdev结构(定义在v4l2-subdev.h文件中)。在子设备驱动程序中必须包含一个v4l2_subdev结构。对于简单的子设备驱动程序,可以直接使用struct v4l2_subdev进行描述。

2023-11-30 23:26:41 333

原创 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 184

原创 Linux camera框架分析

本文内核版本为4.1.15本文介绍的是内核自带的vivid代码,分析Linux camera框架,是Linux内核中的基于V4L2的video驱动。

2023-11-29 00:24:44 122 1

原创 LCD驱动(Framebuffer)

在Linux设备中,LCD显示采用了帧缓冲(framebuffer)技术,LCD驱动也被称为Framebuffer驱动。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象出来,可以通过对Framebuffer的读写来实现对显存进行操作。用户可以将framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行映射的进程地址空间进行读写操作,而写操作可以立即反应在屏幕上。用户不需要关心物理显存的位置、换页机制等等具体细节。这些都是由framebuffer设备驱动来完成的。

2023-11-13 23:15:05 195

原创 I2C驱动

本文分析Linux内核为4.1.15。

2023-11-11 00:45:22 35 1

原创 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 313 1

原创 2. USB通讯原理

USB通信是由一系列Transfer(传输)组成的。

2023-10-23 16:11:45 88

原创 1. USB简介

USB是通用串行总线(Universal Serial Bus)的缩写。USB一般分为USB低速,USB,USB和USB超。一个USB系统主要被定义为三个部分:USB的连接、USB的设备、USB的主机。

2023-10-20 16:57:49 193 1

原创 Linux内核并发源

同一类型的中断处理程序不会并发执行,但不同类型的中断可能传送不同的CPU,因此不同类型的中断程序可能会并发执行。软中断和tasklet:软中断和tasklet随时可能被调度执行,打断当前正在执行的进程上下文。中断和异常:中断发生后,中断处理程序和被中断的进程之间可能产生并发访问。软中断和tasklet之间不会并发执行,但是可以打断进程上下文的执行。统一类型的tasklet是串行执行的,不会再多个CPU上并发执行。中断处理程序可以打断软中断和tasklet的执行。同一类型的软中断会在不同的CPU上并发执行。

2023-07-21 10:39:23 36 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除