linux驱动详解与实战
文章平均质量分 95
linux驱动详解
嵌入式成长家
这个作者很懒,什么都没留下…
展开
-
[linux 驱动]input输入子系统详解与实战
方法(2):使用sudo hexdump 命令打开/dev/input/下设备文件,然后分别操作各个输入设备,如果有输出16进制数,说明此时打开的设备文件就对应于当前的输入设备。方法(1):使用sudo cat 命令打开/dev/input/下的设备节点文件,然后分别操作各个输入设备,如果有输出有乱码,说明此时打开的设备文件就对应于当前的输入设备。: 将 input_dev 的父设备设置为传入的设备 dev,确保设备之间的关系正确设置,有利于设备树的管理和资源的分配。通知事件层对输入事件进行 处理。原创 2024-09-30 11:54:30 · 1255 阅读 · 0 评论 -
[linux 驱动]块设备驱动详解与实战
②块设备在结构上是可以进行随机访问的,对于这些设备的读写都是按块进行的,块设备使用缓冲区来暂时存放数据,等到条件成熟以后再一次性将缓冲区中的数据写入块设备中。但是对于机械硬盘这样带有磁头的设备,读取不同的盘面或者磁道里面的数据,磁头都需要进行移动,因此对于机械硬盘而言,将那些杂乱的访问按照一定的顺序进行排列可以有效提高磁盘性能,linux 里面针对不同的存储设备实现了不同的 I/O 调度算法。这些函数实现了设备的打开、关闭、读写、I/O控制等功能,使得不同的块设备能够通过统一的接口与内核进行交互。原创 2024-09-24 12:34:42 · 1407 阅读 · 0 评论 -
[linux 驱动]regmap子系统详解与实战
Linux 内核引入了 regmap 模型,regmap 将寄存器访问的共同逻辑抽象出来,驱动开发人员不需要再去纠结使用 SPI 或者 I2C 接口 API 函数,统一使用 regmapAPI 函数。regmap_bus 的结构体,它用于描述一种与寄存器映射(regmap)交互的硬件总线或接口的属性和功能。regmap 提供了最核心的两个读写操作:regmap_read 和 regmap_write。原创 2024-09-24 14:51:41 · 1216 阅读 · 0 评论 -
[linux 驱动]misc设备驱动详解与实战
所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号。随着 Linux字符设备驱动的不断增加,设备号变得越来越紧张,尤其是主设备号,MISC 设备驱动就用于解决此问题。Linux 系统已经预定义了一些 MISC 设备的子设备号,我们在使用的时候可以从这些预定义的子设备号中挑选一个,当然也可以自己定义,只要 这个子设备号没有被其他设备使用接口。文件节点,使用“ls /dev/misc_test -l”命令可以看到,misc_test 的主设备号为 10,此设备号自动分配的,为 49。原创 2024-09-14 14:40:11 · 1407 阅读 · 0 评论 -
[linux 驱动]内核定时器详解与实战
这个结构体结合了工作队列(workqueue)和定时器(timer)的功能,使得工作可以在未来的某个时间点被调度执行。对于周期性的任务,除了定时器以外,在Linux内核中还可以利用一套封装得很好的快捷机制,其本质是利用工作队列和定时器实现,这套快捷机制就是delayed_work。工作队列负责实际的工作调度和执行,定时器会将工作项添加到这个工作队列中,以便在延迟时间结束后处理。这个函数接收一个指向定时器自身的指针作为参数,允许回调函数访问和修改定时器的状态或执行其他与定时器相关的操作。原创 2024-09-13 16:10:12 · 1393 阅读 · 0 评论 -
[linux 驱动]i2c总线设备驱动详解与实战
它定义了驱动程序必须实现的接口和包含的属性,以便与I2C总线上的设备进行交互。i2c_adapter对应于物理上的一个适配器,i2c_adapter 结构体是 Linux 内核中 I2C 子系统的一个核心组件,它封装了与 I2C 总线适配器相关的所有必要信息,使得驱动程序能够高效、安全地与 I2C 设备进行通信。i2c 的框架如下所示, i2c核心提供了I2C总线驱动和设备驱动的注册、注销方法,i2c通信方法(即Algorithm)上层的与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。原创 2024-09-09 17:14:20 · 1804 阅读 · 0 评论 -
[linux 驱动]platform总线设备驱动详解与实战
device_driver 结构体(表示 设备驱动)中有个名为of_match_table的成员变量,此成员变量保存着驱动的compatible匹配表, 设备树中的每个设备节点的 compatible 属性会和 of_match_table 表中的所有成员比较,查看是 否有相同的条目,如果有的话就表示设备和此驱动匹配,设备和驱动匹配成功以后 probe 函数 就会执行。platform_device 结构体包含了设备的相关信息,如设备的 ID、资源(内存、IO 地址等)、设备名称和设备状态等。原创 2024-09-07 10:40:04 · 1527 阅读 · 0 评论 -
[linux 驱动]增加一个文件节点控制led灯亮灭
devm_gpio_request 函数的分析如下所示,该函数通过结合 devres 资源管理机制来简化 GPIO 的分配和释放过程,确保在设备驱动程序卸载时,GPIO 能够自动释放,减少了手动释放的负担。指向class_attribute结构体的指针,这个结构体定义了将要被创建的文件(属性)的属性,比如文件名、模式(只读、只写、可读可写)、显示和存储函数(用于从内核读取或写入内核的数据)等。1、在/sys/class/<class_name>/目录下为指定的类创建一个新的属性文件。用于创建新的设备类。原创 2024-09-05 08:54:14 · 1892 阅读 · 0 评论