
Linux设备驱动
文章平均质量分 84
Linux设备驱动开发学习笔记与代码。
duapple
这个作者很懒,什么都没留下…
展开
-
七、GPIO中断控制器(2)—— pcf8575
上一小节,已经完成了基础的中断控制器驱动。现在需要完善并解决边缘检测的问题。这里可以参考驱动,仿造着它来实现,也可以直接参考驱动,这个官方的驱动。后者使用的是 gpiolib_irqchip 的新版本API,实现起来较为简单,需要在config中配置。这里介绍旧版本的API使用,无太大差异。原创 2025-03-24 22:55:57 · 329 阅读 · 0 评论 -
六、GPIO中断控制器(1)—— pcf8575
完成一个GPIO扩展芯片的GPIO驱动后,可以使用上一节实现的驱动进行简单的GPIO控制,但是对于中断输入功能,该驱动是不支持的。因此要实现完整的GPIO扩展芯片驱动,还需要使用内核中的中断子系统来实现中断功能。pcf8575是支持中断功能的,有一个中断引脚,在pcf8575的16个GPIO引脚发生电平变化时,会在终端引脚上发送脉冲信号。我们可以通过SoC的一个中断引脚来实现中断输入检测,只要检测到中断信号后,就能通过I2C通信读取GPIO扩展芯片的GPIO电平状态,找到真正触发中断的GPIO引脚。原创 2025-03-22 14:44:50 · 1056 阅读 · 0 评论 -
记录两个内核模块开发的坑
在remove函数中调用导致问题。timer的正常用法就时应该在remove函数中调用这个API进行释放。但是这里确遇到了问题,被告知timer是一个静态对象。由于需要在timer的回调里面使用自己的数据结构,因此只能使用静态分配的方式,然后通过container_of去获取自己的数据结构。按道理来说是不应该panic的。后来通过添加日志发现,是自己的数据结构的内存踩了,由于使用了void *作为函数参数,在传参时,错误的将自己的数据结构传进去了,导致timer对象内存被覆盖了导致的这个问题。原创 2025-03-20 14:19:03 · 173 阅读 · 0 评论 -
五、SPI客户端驱动——bmp280
spi子系统类似i2c子系统,驱动注册方式和i2c类似。没有什么可说的,主要区别在于SPI总线会多两个信号线。原创 2025-03-16 03:49:32 · 632 阅读 · 0 评论 -
四、GPIO控制器驱动 —— pcf8575
PCF8575 是一个16bit的GPIO扩展芯片,可以支持两组共16个GPIO的控制。但是由于较为简单,16个GPIO只能同时被配置为输入或者输出,不支持对单个GPIO的控制特殊控制。使用I2C通信,拥有一个中断引脚。电压支持2.5~5.5V,连接5V的输入,GPIO输出将支持到3.3V。原创 2025-01-24 00:50:32 · 900 阅读 · 0 评论 -
三、I2C客户端驱动 —— htu21d
和bmp280一样,使用i2c驱动注册。需要注意的是,设备reset需要15ms,可以使用读出来的第三个字节作为CRC8校验码,进行数据校验。另外,温湿度计算公式如果使用小数,可能编译器默认的参数不支持,可以将小数转化为整数进行计算。另外,htu21d的i2c支持两种模式,hold master模式支持SCL stretching,更加方便我们主机端读取数据,设备会在数据ADC采集完成之前,控制SCL,不让master继续后续操作,再数据完成采集后,再释放SCL,master才进行后续读取操作。原创 2025-01-21 22:15:23 · 1005 阅读 · 0 评论 -
二、设备-驱动 匹配机制探究
Linux总线和设备都会注册到总线驱动上,然后在添加新驱动时,会进行匹配查找,将适合的设备和驱动进行绑定,并将设备和驱动注册显示在sys的层级结构种去。当在使用i2c设备驱动时,遇到一个问题,一般会将定义i2c_device_id结构,注册到驱动的.id_table中去。再顶一个of_device_id,用于设备树风格的设备驱动匹配。按理来说,如果使用设备树匹配风格,那么不定义i2c_device_id结构应该也是可以的。原创 2025-01-19 18:01:15 · 922 阅读 · 0 评论 -
一、I2C客户端驱动 —— bmp280
在开始转Linux驱动开发的时候,就计划着把约翰·马迪厄的Linux设备驱动开发看完,然后找一些器件把上面的驱动实验都做一下的。因为各种各样的原因,一直没有做这个事情。现在也算是做了一点项目,计划深入并复习一下。于是乎,专门开个专栏记录一下,适配各个器件驱动的过程,内核API使用,驱动开发注意事项,以及调试代码。方便自己使用的时候查看,也为正在学习的童鞋做一个分享。Linux设备驱动开发并没有想象的那么难,难点主要还是在对芯片的了解,芯片的使用上,主要工作量还是在阅读理解芯片手册上面。原创 2025-01-16 23:44:53 · 690 阅读 · 0 评论