
设备驱动
Aiden@semidrive
这个作者很懒,什么都没留下…
展开
-
LCD接口模式
Frame Buffer DriverLCD 接口模式enum lcdc_lcd_mode { TFT_24BITS, TFT_18BITS, TFT_16BITS, TFT_8BITS_SERIAL, TFT_8BITS_DUMMY_SERIAL, TFT_MIPI, SLCD_6800, SLCD_8080, SLCD_MIPI, SLCD_SPI_3LINE, SLCD_SPI_4LINE,};LCD接原创 2020-12-28 17:14:13 · 1167 阅读 · 0 评论 -
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
我们知道,SPI数据传输可以有两种方式:同步方式和异步方式。所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回。而异步方式则正好相反,数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来解释就是,调用传输的函数后,函数会立刻返回而不用等待数据传输完成,我们只需设置一个回调函数,传输完成...转载 2019-10-29 11:51:54 · 385 阅读 · 1 评论 -
Linux SPI总线和设备驱动架构之三:SPI控制器驱动
通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动、通用接口层和控制器驱动三大部分。其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:1. 申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等;2. 配置SPI控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换工作;3. 向通用接口层提供接口...转载 2019-10-29 11:47:26 · 189 阅读 · 0 评论 -
Linux SPI总线和设备驱动架构之二:SPI通用接口层
通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了相应的数据结构,这些数据结构一部分是SPI设备、SPI协议驱动和SPI控制器的数据抽象,一部分是为了协助数据传输而定义的数据结构。另外,通用接口层还负责SPI系统与Linux设备模型相关的初始化工作。...转载 2019-10-29 11:45:24 · 179 阅读 · 0 评论 -
Linux SPI总线和设备驱动架构之一:系统概述
SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通信和控制的四根线分别是:CS 片选信号SCK 时钟信号MISO 主设备的数据输入、从设备的数据输出脚MOSI 主设备的数据输出、从设备的数据输入脚因为在大多数情况下,CPU或SOC一侧通常都是...转载 2019-10-29 11:40:28 · 161 阅读 · 0 评论 -
关于TFTLCD硬件接口和驱动的问题
在设计TFTLCD液晶硬件驱动电路的时候,我们会发现TFTLCD裸屏(买来的最初元件)的接口并非相似,所以导致驱动电路设计需要有些差别。TFTLCD液晶的本质 本质转载 2017-09-07 21:41:02 · 10752 阅读 · 0 评论 -
framebuffer
Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。原创 2016-12-22 20:43:02 · 246 阅读 · 0 评论 -
Linux输入子系统:事件的编码 -- event-codes.txt
输入系统协议用类型types和编码codecs来表示输入设备的值并用此来通知用户空间的应用程序。这篇文档对这些类型和编码进行了说明并且指出什么时候和如何使用这些类型和编码。 一个单一的硬件事件可以产生多个输入事件,每个输入事件包含一个单一数据项的新的数据值。EV_SYN是一个特别的事件类型,它用来把同一时刻产生的多个输入数据分割为多个数据包。在下面的描述中,术语事件(event)是指一个涵盖类转载 2016-11-25 17:19:57 · 262 阅读 · 0 评论 -
[Linux Input]BITS_TO_LONGS的解释及相关为操作函数
宏BITS_TO_LONGS[cpp] view plain copy #define BITS_PER_BYTE 8 #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) #define DIV_ROUND_UP(n,d) (((n)转载 2016-11-28 14:45:53 · 468 阅读 · 0 评论 -
camera 原理
1、Color Filter Array — CFA随着数码相机、手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR 模式和 CFA 模式。BGR 模式是一种可直接进行显示和压缩等处理的图像数据模式,它由 R( 红)、G( 绿) 、B( 蓝) 三原色值来共同确定 1 个像素点,例如富士数码相机采用的 SUPER转载 2016-11-25 16:24:24 · 533 阅读 · 0 评论 -
linux内核makefile解析
Linux内核是一种单体内核,但是通过动态加载模块的方式,使它的开发非常灵活 方便。那么,它是如何编译内核的呢?我们可以通过分析它的Makefile入手。以下是 一个简单的hello内核模块的Makefile. ifneq ($(KERNELRELEASE),)obj-m:=hello.oelseKERNELDIR:=/lib/modules/$(shell uname -原创 2015-08-19 10:26:24 · 378 阅读 · 0 评论 -
linux设备驱动归纳总结(五):1.在内核空间分配内存
一般的,用户空间使用函数malloc在堆上分配内存空间,同样的,在内核空间同样有一套类似的函数来分配空间。下面的知识会涉及页式管理的内存机制,如果不懂的要先复习一下,在S3C2440数据手册的MMU部分有介绍。一、内核空间和用户空间有什么不同学c语言的时候应该学过,从用户空间看,每个进程都傻乎乎的以为自己有4G的内存空间,其中位于高地址(3G-4转载 2015-08-15 10:02:31 · 2365 阅读 · 0 评论 -
linux设备驱动归纳总结(六):1.中断的实现
一、什么是中断中断分两种:1)中断,又叫外部中断或异步中断,它的产生是由于外设向处理器发出中断请求。其中外部中断也有两种,这是由配置寄存器设定的:普通中断请求(IRQ)和快速中断请求(FIQ)。一般地,linux下很少使用快速中断请求。2)异常,又叫内部中断或同步中断,它的产生是由于处理器执行指令出错。在以下的内容我是要介绍由于外部设备产生的中断。转载 2015-08-14 10:52:45 · 444 阅读 · 0 评论 -
linux设备驱动归纳总结(三):2.字符型设备的操作open、close、read、write
一、文件操作结构体file_operations继续上次没讲完的问题,文件操作结构体到底是什么东西,为什么我注册了设备之后什么现象都没有?可以验证文件操作结构体的内容。file_operations是一个函数指针的集合,用于存放我们定义的用于操作设备的函数的指针,如果我们不定义,它默认保留为NULL。来个文件操作结构体的定义:/*includ转载 2015-08-12 14:07:28 · 505 阅读 · 0 评论 -
linux设备驱动归纳总结(二):模块的相关基础概念
系统平台:Ubuntu 10.04开发平台:S3C2440开发板一。初探linux内核模块内核模块:内核本身是很庞大的一个结构,需要的组件很多。编译内核时,用户 可以把所有的代码编译进内核,但是这样会引起两个问题:一是内核过大;二是 当需要添加或者删除内核时,需要重新再编译内核。所以有了内核模块的概念。 模块并不编译到内核中,编译后存放在指定的目录,转载 2015-08-11 09:21:33 · 399 阅读 · 0 评论 -
linux设备驱动归纳总结(三):1.字符型设备之设备申请
操作系统:Ubunru 10.04实验平台:S3C2440 + linux2.6.29内核注:在今后驱动程序的学习中经常需要查看内核源代码,建议大家新加一个内核目录,去掉一些与S3C2440平台无关的代码,打包成ctags,方便查看代码。一、驱动的分类:内核驱动大致分为三类:1)字符设备:在今后的接触的大多数都是字符设备,我也只学过这个。转载 2015-08-11 17:37:50 · 827 阅读 · 0 评论 -
linux设备驱动归纳总结(一):内核的相关基础概念
一.linux设备驱动的作用内核:用于管理软硬件资源,并提供运行环境。如分配4G虚拟空间等。linux设备驱动:是连接硬件和内核之间的桥梁。linux系统按个人理解可按下划分:应用层:包括POSIX接口,LIBC,图形库等,用于给用户提供访问 内核的接口。属于用户态,ARM运行在用户模式(usr)或 者系统模式(sys)下。内核层:应用程序调转载 2015-08-10 10:37:43 · 443 阅读 · 0 评论