随笔分类 -  驱动大全新时代

信号量 semaphore的实现 -06
摘要:1 semaphore的内核结构体 注意:这是信号量,不是信号。在前面学习异步通知时,驱动程序给应用程序发信号。现在我们讲的信号量是一种同步、互斥机制。 信号量的定义及操作函数都在Linux内核文件include\linux\semaphore.h中定义,如下: 初始化semaphore之后,就可以 阅读全文

posted @ 2024-05-05 16:10 拉风摊主 阅读(40) 评论(0) 推荐(0)

自旋锁spinlock的实现-05
摘要:自旋锁,顾名思义:自己在原地打转,等待资源可用,一旦可用就上锁霸占它。 问题来了,假设别人已经上锁了,你原地打转会占住CPU资源了,别的程序怎么运行?它没有CPU怎么解锁? 这个问题,有2个答案: ① 原地打转的是CPU x,以后CPU y会解锁:这涉及多个CPU,适用于SMP系统; ② 对于单CP 阅读全文

posted @ 2024-05-05 15:54 拉风摊主 阅读(348) 评论(0) 推荐(0)

linux锁的介绍和使用 -04
摘要:本节参考: https://www.kernel.org/doc/html/latest/locking/index.html https://mirrors.edge.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/ 锁的类型 Lin 阅读全文

posted @ 2024-05-03 16:11 拉风摊主 阅读(697) 评论(0) 推荐(0)

原子操作的实现原理与使用-03
摘要:所谓“原子操作”就是这个操作不会被打断。Linux有2种原子操作:原子变量、原子位。 原子变量的内核操作函数 原子变量的操作函数在Linux内核文件arch\arm\include\asm\atomic.h中。 原子变量类型如下,实际上就是一个结构体(内核文件include/linux/types. 阅读全文

posted @ 2024-05-03 15:18 拉风摊主 阅读(512) 评论(0) 推荐(0)

同步与互斥的失败例子-02
摘要:一句话理解同步与互斥:我等你用完厕所,我再用厕所。 什么叫同步?就是条件不允许,我要等等。 什么是互斥?你我早起都要用厕所,谁先抢到谁先用,中途不被打扰。 同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“ 阅读全文

posted @ 2024-05-03 14:22 拉风摊主 阅读(41) 评论(0) 推荐(0)

使用GPIO模拟I2C的驱动程序分析-13
摘要:参考资料: i2c_spec.pdf Linux文档 Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.t 阅读全文

posted @ 2023-09-24 20:23 拉风摊主 阅读(468) 评论(0) 推荐(0)

完善虚拟的I2C\_Adapter驱动并模拟EEPROM-12
摘要:参考资料: Linux内核文档: Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux内核 阅读全文

posted @ 2023-09-24 20:11 拉风摊主 阅读(137) 评论(0) 推荐(0)

I2c_Adapter驱动框架讲解与编写-11
摘要:参考资料: Linux内核文档: Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux内核 阅读全文

posted @ 2023-09-24 16:53 拉风摊主 阅读(134) 评论(0) 推荐(0)

编写设备驱动之i2c_client -10
摘要:编写设备驱动之i2c_client 参考资料: Linux内核文档: Documentation\i2c\instantiating-devices.rst Documentation\i2c\writing-clients.rst Linux内核驱动程序示例: drivers/eeprom/at2 阅读全文

posted @ 2023-07-30 21:34 拉风摊主 阅读(226) 评论(0) 推荐(0)

编写设备驱动之i2c_driver -9
摘要:参考资料: Linux内核文档: Documentation\i2c\instantiating-devices.rst Documentation\i2c\writing-clients.rst Linux内核驱动程序示例: drivers/eeprom/at24.c 本节代码:GIT仓库中 框架 阅读全文

posted @ 2023-07-30 19:18 拉风摊主 阅读(58) 评论(0) 推荐(0)

通用驱动i2c-dev分析 -7
摘要:参考资料: Linux驱动程序: drivers/i2c/i2c-dev.c I2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ AT24cxx.pdf 1. 回顾字符设备驱动程序 怎么编写字符设备 阅读全文

posted @ 2023-07-30 17:04 拉风摊主 阅读(124) 评论(0) 推荐(0)

基于ICTOOL编写APP直接访问EEPROM-6
摘要:编写APP直接访问EEPROM 参考资料: Linux驱动程序: drivers/i2c/i2c-dev.c I2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ AT24cxx.pdf 本节源码:G 阅读全文

posted @ 2023-07-23 21:05 拉风摊主 阅读(81) 评论(0) 推荐(0)

无需编写驱动直接访问设备\_I2C-Tools介绍 -5
摘要:无需编写驱动直接访问设备_I2C-Tools介绍 参考资料: Linux驱动程序: drivers/i2c/i2c-dev.c I2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ AP3216C: 阅读全文

posted @ 2023-07-16 21:40 拉风摊主 阅读(346) 评论(0) 推荐(0)

I2C系统的重要结构体 -4
摘要:I2C系统的重要结构体 参考资料: Linux驱动程序: drivers/i2c/i2c-dev.c I2CTools: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 1. I2C硬件框架 2. I2C传输协议 写操作 读 阅读全文

posted @ 2023-07-16 21:37 拉风摊主 阅读(138) 评论(0) 推荐(0)

SMBus协议-3
摘要:参考资料: Linux内核文档:Documentation\i2c\smbus-protocol.rst SMBus协议: http://www.smbus.org/specs/ SMBus_3_0_20141220.pdf I2CTools: https://mirrors.edge.kernel 阅读全文

posted @ 2023-07-16 16:35 拉风摊主 阅读(394) 评论(0) 推荐(0)

IIC协议 -2
摘要:1. 硬件连接 I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻,原因见3.4 2. 传输数据类比 怎么通过I2C传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输 阅读全文

posted @ 2023-07-16 15:11 拉风摊主 阅读(125) 评论(0) 推荐(0)

IIC基本介绍-1
摘要:1. I2C硬件框架 在一个芯片(SoC)内部,有一个或多个I2C控制器 在一个I2C控制器上,可以连接一个或多个I2C设备 I2C总线只需要2条线:时钟线SCL、数据线SDA 在I2C总线的SCL、SDA线上,都有上拉电阻 2. I2C软件框架 以I2C接口的存储设备AT24C02为例: APP: 阅读全文

posted @ 2023-07-16 15:03 拉风摊主 阅读(124) 评论(0) 推荐(0)

导航