- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 linux Regulator电源设备驱动框架
调节器Regulator是为其他设备供电的设备。由regulator供电的设备称为消费者。提供调节器的芯片称为电源集成电路PMIC。调节器可以启用/禁用其输出,也可以控制其输出电压和电流。
2023-04-18 23:44:12
2436
原创 linux输入设备驱动程序
输入设备是与系统交互的设备,这些设备包括按钮、键盘、触摸屏、鼠标等。他们的工作方式是发送事件、输入内核在系统上捕获和传播。
2023-04-14 20:00:57
347
原创 linux IIO驱动框架
工业IO(Industrial I/O)是专用于ADC和DAC的内核子系统,加速度计、陀螺仪、电流电压测量芯片、光传感器、压力传感器等都属于IIO系列设备。IIO模型采用设备和通道架构。其中设备属于芯片本身,通道则表示设备的单个采集线,设备可能有若干个通道。例如加速度计就有3个通道,每个轴(X、Y和Z)都有一个通道。设备驱动程序使用IIO内核提供的功能和API来管理设备,并向IIO内核报告处理情况;IIO内核通过sysfs和字符设备将底层机制抽象到用户空间。
2023-04-14 01:04:16
2141
原创 linux Regmap API寄存器映射抽象
在引入ragmap API之前,SPI内核和I2C内核是独立的,二者有需要冗余代码。在引入Regmap API之后,无论是SPI还是I2C设备,只需要初始化配置Regmap,旧可以处理所有的读写修改操作。Regmap API很简单,其中最重要的是两个结构struct regmap_config(代表regmap配置) 和struct regmap(代表regmap实例本身)。
2023-04-13 00:36:49
494
原创 linux的SPI设备驱动程序
串行外设接口(SPI)是四线总线:MOSI、MISO、串行时钟SCK和片选CS。它常用于连接闪存、AD/DA转换器。主设备生成时钟和管理片选CS,速度可达80MB,远超I2C总线。
2023-04-12 02:00:03
2426
原创 I2C客户端驱动程序
使用了DT后,需要增加一个struct of_device_id{}数组。{}// 用于检测到设备时自动加载模块},.id_table = foo_id, // 在4.10以前的内核中,必须存在id_table成员。/*设备树相关代码*/} else {...
2023-04-11 18:03:04
599
原创 GPIO子系统
SoC会复用引脚,这意味着引脚可能会有多个功能。比如MX6QDL_PAD_SD3_DAT1可以是SD3数据线1、UART1的cts/rts、FlexCan2的Rx或标准GPIO。引脚工作模式的选择机制称为引脚多路复用,负责选择的系统被称为引脚控制器。内核中引脚控制子系统(pinctrl)能够管理引脚复用。DT中需要引脚以某种方式多路复用的设备必须声明它所需要的引脚控制配置。引脚控制子系统分为两部分:1. 引脚复用;2. 引脚配置:应用引脚的电器特性。
2023-04-10 19:52:51
760
原创 linux内核DMA引擎
DMA功能用于执行内存读取和写入操作而不占用CPU周期。当需要传输数据块时,CPU向DMA控制器提供原地址和目的地址以及总字节数,然后DMA控制器会将数据从源传输到目标,而不占用CPU周期。
2023-04-09 22:27:22
1643
原创 linux驱动使用的相关内核内存管理
其中低896M空间是和物理内存页帧连续的一一映射的,也是固定映射的(称为低端内存,映射产生的地址称为逻辑地址),映射产生的逻辑地址可以减去一个offset值获取物理页帧;默认情况下,在32位系统中,系统的地址空间按照3/1G进行划分,其中高于0xC000000的1G空间属于内核地址空间,而用户空间使用低3G字节的空间。linux的内核地址空间只占有高1G的地址空间,把这1G的地址空间分为低896M和高128M空间。其中内核高128M地址空间映射的物理内存页帧不是连续的,是可以随时映射和取消的。
2023-04-08 21:09:36
500
原创 Linux设备模型
后面bus_attribute/BUS_ATTR, driver_attribute/DRIVER_ATTR, class_attribute/CLASS_ATTR的使用方式与device_attribute/DEVICE_ATTR的使用方式完全雷同。它是总线上设备的父设备,即位于总线上的设备的父域都指向总线设备。接着总线驱动程序在packt_bus_type.probe()函数中为连接到总线的每个设备分配特定的设备结构,并初始化设备device的bus和parent字段。设备结构device{}
2023-04-08 15:40:40
587
1
原创 linux platform driver
除了I2c、spi、I2s、pci、sata、uart、usb总线类型的设备,其中在soc上无法删除的设备都被称为平台设备(platform设备)
2023-04-08 01:16:13
164
1
原创 Linux内核工具和常用辅助函数
有时只是偶尔需要向工作队列提交任务,并不需要专门创建一个工作任务队列,可以使用共享的工作任务队列,并且还可以在/proc/jitwq或/proc/jitwqdelay中查看正在被执行的工作任务。内核中断的后半段一种是基于softirq机制来实现,在softirq机制之上,实现了tasklet,它运行在中断上下文中。tasklet的在内核中的注册管理使用的是一个简单的链表,查看/proc/jittasklet和/proc/jittasklethi可查看当前注册的tasklet。tasklet的管理使用。
2023-04-07 11:46:33
677
1
understanding Linux Network Internals
2010-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人