![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动框架
文章平均质量分 86
One Piece&
这个作者很懒,什么都没留下…
展开
-
framebuffer的显示原理以及缺点分析
1、概述在使用LCD的时候,存在这样两个问题:1)、linux内存中,对内存管理严格,显存需要申请,不能想用就用。2)、linux是工作在保护模式下的,每个应用程序都有自己的虚拟地址空间,这就导致应用程序不能直接访问LCD设备在内核中实际的物理缓冲区地址。为了解决上述问题,我们引入framebuffer,帧缓冲。注:1)、帧缓冲:是一种机制,通过framebuffer机制,应用程序可以直接操作内核里面的显存。2)、帧缓冲设备可以通过mmap()映射将屏幕缓冲区的物理地址映射到用户空间的的一块虚原创 2021-03-23 16:18:22 · 2958 阅读 · 0 评论 -
I2C子系统框架
1 I2C子系统框架概述:1.1 I2C驱动有4个重要的名词I2C总线、I2C驱动、I2C设备、I2C设备器,对应的解释如下:1)、I2C总线:维护着两个链表(I2C驱动、I2C设备),管理I2C设备和I2C驱动的匹配和删除等2)、I2C驱动:对应的就是I2C设备的驱动程序3)、I2C设备:是具体硬件设备的一个抽象4)、I2C设配器:用于I2C驱动和I2C设备间的通用,是SOC上I2C控制器的一个抽象1.2 I2C子系统框架概述(1)内核初始化platform_bus和i2c_bus。(2原创 2021-03-22 21:53:05 · 521 阅读 · 0 评论 -
input子系统
1、简介:输入设备本质上还是字符设备,只是在此基础上套上了 input 框架。input子系统分为设备驱动层、核心层和事件处理层。1)、设备驱动层:负责和底层的硬件设备打交道,将底层硬件设备对用户输入的响应转换为标准的输入事件 ,发送给核心层。事实上,设备驱动层只关心如何驱动硬并获得硬件数据(eg:按下的按键的数据),然后直接调用核心层提供的接口函数即可。2)、核心层:负责对设备驱动层提供规范和接口,设备驱动层通过调用核心层提供的接口,然后核心层就会自动将数据发送给事件处理层。事实上,核心层和原创 2021-03-21 19:15:45 · 220 阅读 · 1 评论 -
pinctrl子系统
1、概述pinctrl子系统和GPIO子系统是linux驱动分离与分层的产物。对于大多数的 32 位 SOC 而言,引脚的设置基本都是设置某个 PIN 的复用功能、速度、上下拉等,然后再设置 PIN 所对应的 GPIO这两方面,因此 Linux 内核针对 PIN 的配置推出了 pinctrl 子系统,对于 GPIO的配置推出了 gpio 子系统。pinctrl子系统分融主要工作内容如下:1)、获取设备树树中pin的信息。2)、根据获取到的pin信息,来设置pin的复用。3)、根据获取到的pin信原创 2021-03-21 09:18:43 · 365 阅读 · 0 评论 -
platform总线框架
1、platform总线简介linux内核中,有IIC、SPI、PCI、USB等实体总线。但是SOC上的有些外设(eg:LED,定时器……),他们是直接通过内存的寻址空间来进行寻址的,cpu与这些设备通信是不需要总线的。为了对设备进行统一的管理,对这些直接通过内存寻址的设备虚拟了一条platform虚拟总线,所有直接通过内存寻址的设备都映射到这条总线上。2、platform总线的优点:1)、实现驱动的分离。通过platform总线,驱动和设备是分开注册的。通过platform总线的probe,可以随时原创 2021-03-20 12:10:51 · 1205 阅读 · 0 评论 -
GPIO子系统框架分析
1、作用:在裸机中,我们都是对寄存器直接进行操作的。而在Linux中,对于驱动开发者来说,对于已将引脚复用为GPIO的引脚,我们可以借助gpio子系统提供的函数,间接的来实现裸机中,对寄存器的操作。简单的理解,GPIO子系统就是用来GPIO进行初始化,并提供相应的API函数,供驱动开发者使用,无需驱动开发者再去设置GPIO。驱动开发人员要做的就是:在设备书下,创建节点,在节点中添加pinctrl信息(引脚的复用和电气属性信息)和gpio属性信息。然后,就可以通过使用gpio子系统提供的函数进行对GPI原创 2021-03-19 14:02:36 · 733 阅读 · 0 评论