![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux驱动-芒果派F1c200s
文章平均质量分 83
学习笔记
栋哥爱做饭
想都是问题
做才是答案
展开
-
GIC中断简介
使用platform框架,目的是我们不必自己来实现硬件中断号与软件中断号的映射关系,这个过程由 GIC驱动来做了(在解析dtb文件时,我们只需要在设备树中指定interrupts属性即可)上述的图其实,也回顾之前关于platform的驱动的重要特点,在内核会解析设备树并自动生成 plaform_device,此时不需要我们自己再写设备文件了。对应用程序而言,就是不断的读取按键(文件),这样的话,如果大部分情况下无中断,那么程序一直会做无用功。,当有中断来的时候,在中断句柄中将其唤醒。原创 2022-10-14 18:09:58 · 1105 阅读 · 0 评论 -
LCD驱动模型
Fb_ops结构体:linux内核提供的fb_ops最底层的显示接口Fb_var_screeninfo结构体:每个显示设备的分辨率和参数都不一样,linux内核中fb_var_screeninfo结构体便是记录这些参数的Fb_fix_screeninfo结构体:soc集成了视频硬件解码等功能,Linux内核为其预留出了接口用来加速视频。当我们需要硬件加速的时候,我们就可以初始化该结构体Fb_cmpa结构体:即颜色映射,内容为RGB的值。原创 2022-10-05 13:44:52 · 657 阅读 · 0 评论 -
platform模型
2、对申请的platform_driver结构体,其中包含的内容选项需要去初始化和定义比如probe匹配函数(申请设备结构体、申请设备号、初始化owner、注册内核、创建类、设备,硬件相关资源)与remove注销函数(删除设备结构体、注销设备号、删除设备节点、类、取消映射)1、申请设备结构体platform_device结构体(name与驱动名匹配、id、num_resources设备资源数、resource资源结构体(包含主要寄存器的地址)、dev指定设备相关的描述)原创 2022-10-05 13:37:19 · 559 阅读 · 0 评论 -
GPIO+Pinctrl
由于pinctrl子系统是管理GPIO引脚复用的,因此在将GPIO映射为其它功能时,我们需要在 pinctrl设备树节点中添加我们的功能比如:们需要使用串口 uart0 功能,那么 uart一定是复 用了两个 GPIO 引脚,在linux中,GPIO引脚也可以作为中断信号线,即对于gpio控制器而言其也可以是一个中断控制器。(2)为了能够方便调试,使用sysfs设备文件系统驱动框架,这样就不要写测试APP了。(2)申请完资源后我们需要设置GPIO方向。(1)从设备树中获取GPIO的描述信息。原创 2022-10-05 13:29:02 · 1551 阅读 · 0 评论 -
sysfs文件系统模型
在内核目录中,可以看到/sys目录。该目录就是sysfs文件系统目录。该文件是基于内存的一种虚拟设备文件系统。sysfs 设备文件系统与 devfs、proc 以及 devpty 是同一类别的文件系统,该文件系统是一个虚拟的文件系统。文件夹为kobject、文件接口为kobj_type、描述各个kobject之间的关系kset。原创 2022-10-05 13:19:28 · 212 阅读 · 0 评论 -
Regmap子系统:(寄存器映射)
例如要使用I2C子系统,那么我们需要将Regmap映射到I2C接口上(regmap_init_i2c函数),bb那么多的模型框架以及接口目的就是简化我们驱动开发,提高代码规范,到底还是内核抗下了所有。由于Regmap仅仅只是一个统一的接口,其底层调用最终还是走的各个子系统协议。**3 Regmap读写操作(在桥梁函数里,即实际的设备操作)**2结构体初始化:(一般在probe函数中)**1配置结构体:(一般在驱动程序中声明)**4 释放Regmap结构体。原创 2022-10-05 13:12:53 · 819 阅读 · 0 评论 -
I2C子系统
I2C写过程:首先需要是总线传输数据开始标志,然后发送一个字节的设备地址,然后再发送一个 字节的写入的地址,接着再发送一个字节的数据即可,这样数据都写入到了 AT24C02 中了I2C读数据过程:首先写入一个字节的设备地址,然后写入需要读取的地址,然后再写入一个器件地址, 最后读数据就会返回给主机,这样就实现了数据的读取过程。上述的I2C控制器驱动程序是BSP开发工程师完成的(直接与寄存器打交道)I2C控制器驱动之上就是I2C总线层(进行适配)原创 2022-10-05 13:05:50 · 492 阅读 · 0 评论 -
SPI子系统
实际上驱动开发分为两个部分,一部分由BSP开发工程师来完成SPI控制器驱动的实现(与SOC硬件非常精密)。另一部分那些SPI提供的接口则是给驱动开发工程师来完成具体驱动,例如开发一个网卡驱动。为了能够为上层提供统一的接口,Linux内核实现SPI子系统,该子系统将底层的实现过程留给驱动工程师来实现,而仅仅提供一个标准的接口函数。当然在开发过程中linux提供了SPI子系统接口,帮助我们更方便、更规范的去实现。*SPI子系统驱动中最底层为SPI控制器(实现最基本的读写操作)SPI为同步全双工串口协议。原创 2022-10-05 12:54:45 · 981 阅读 · 0 评论 -
输入子系统
就我们生活中的输入设备无非就是键盘、鼠标、触摸屏等。输入子系统将输入设备分为三种类型,分别是键盘设备、鼠标设备和操作杆设备。他们之间最主要的区别在于他们输入的数据类型不同。对于注册上述不同设备类型,只要符合要求的类型即可。原创 2022-10-03 13:11:29 · 419 阅读 · 0 评论