统一设备模型
文章平均质量分 88
linux 统一设备模型
雪饼android之路
这个作者很懒,什么都没留下…
展开
-
Linux common clock framework(2)_clock provider
我们在上面提到了clock provider的两种DTS定义方式,哪一种好呢?从规范化、条理性的角度,毫无疑问方式2是好的,它真正理解了Device Tree的精髓,并细致的执行。且可以利用很多clock framework的标准实现(后面会讲)。而方式1的优点是,DTS容易写,相应的clock driver也较为直观,只是注册一个一个clock provider即可,没有什么逻辑可言。换句话说,方式1比较懒。后面的API描述,蜗蜗会着重从方式2的角度,因为这样才能体会到软件设计中的美学。转载 2023-12-03 17:49:40 · 92 阅读 · 0 评论 -
linux 怎么判断一个dirver有没有被加载成功
2.因为是module_platform_driver(imx_blk_ctrl_driver);就找platform。如果是module_i2s_driver那就找下面的i2s。因此去/sys/bus目录下找platform。当然如果你的driver被模块化了,你可以通过lsmod或者rmmod + 模块名字,来查看加载的模块或者移除模块。3.进入drivers以后可以看到上面代码中name = "imx-blk-ctrl"对应的文件。就是对的driver连接(probe成功到)到。原创 2023-11-17 23:00:00 · 88 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(8)_platform设备
在Linux设备模型的抽象中,存在着一类称作“Platform Device”的设备,内核是这样描述它们的(Documentation/driver-model/platform.txt)概括来说,Platform设备包括:基于端口的设备(已不推荐使用,保留下来只为兼容旧设备,legacy);连接物理总线的桥设备;集成在SOC平台上面的控制器;连接在其它bus上的设备(很少见)。等等。这些设备有一个基本的特征:可以通过CPU bus直接寻址(例如在嵌入式系统常见的“寄存器”)。转载 2022-12-14 22:00:00 · 360 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(7)_Class
在设备模型中,Bus、Device、Device driver等等,都比较好理解,因为它们对应了实实在在的东西,所有的逻辑都是围绕着这些实体展开的。而本文所要描述的Class就有些不同了,因为它是虚拟出来的,只是为了抽象设备的共性。举个例子,一些年龄相仿、需要获取的知识相似的人,聚在一起学习,就构成了一个班级(Class)。这个班级可以有自己的名称(如295),但如果离开构成它的学生(device),它就没有任何存在意义。另外,班级存在的最大意义是什么呢?是由老师讲授的每一个课程!转载 2022-12-09 22:00:00 · 247 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(6)_Bus
在Linux设备模型中,Bus(总线)是一类特殊的设备,它是连接处理器和其它设备之间的通道(channel)。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是一个内部Bus、虚拟Bus或者Platform Bus。内核通过struct bus_type结构,抽象Bus,它是在include/linux/device/bus.h中定义的。本文会围绕该结构,描述Linux内核中Bus的功能,以及相关的实现逻辑。最后,会简单的介绍一些标准的Bus(如Platform),介转载 2022-12-05 22:00:00 · 338 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(5)_device和device driver
device和device driver是Linux驱动开发的基本概念。Linux kernel的思路很简单:驱动开发,就是要开发指定的软件(driver)以驱动指定的设备,所以kernel就为设备和驱动它的driver定义了两个数据结构,分别是device和device_driver。因此本文将会围绕这两个数据结构,介绍Linux设备模型的核心逻辑,包括:设备及设备驱动在kernel中的抽象、使用和维护;设备及设备驱动的注册、加载、初始化原理;设备模型在实际驱动开发过程中的使用方法。注:在介绍device转载 2022-12-04 15:44:28 · 917 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(4)_sysfs
在sysfs中,为什么会有attribute的概念呢?其实它是对应kobject而言的,指的是kobject的“属性”。我们知道,sysfs中的目录描述了kobject,而kobject是特定数据类型变量(如struct device)的体现。因此kobject的属性,就是这些变量的属性。它可以是任何东西,名称、一个内部变量、一个字符串等等。而attribute,在sysfs文件系统中是以文件的形式提供的,即:kobject的所有属性,都在它对应的sysfs目录下以文件的形式呈现。转载 2022-12-02 23:00:00 · 282 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(3)_Uevent
Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,会做相应的处理。该机制通常是用来支持热拔插设备的,例如U盘插入后,USB相关的驱动软件会动态创建用于表示该U盘的device结构(相应的也包括其中的kobject),并告知用户空间程序,为该U盘动态的创建/dev/目录下的设备节点,更进一步,可以通知其它的应用程序,将该U盘设备mount到系统中,从而动态的支持该设备。转载 2022-12-02 22:00:00 · 407 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(2)_Kobject
Kobject是Linux设备模型的基础,也是设备模型中最难理解的一部分(可参考Documentation/kobject.txt的表述)。因此有必要先把它分析清楚。转载 2022-12-02 00:30:00 · 147 阅读 · 0 评论 -
【Linux kernel】Linux设备模型(1)_基本概念
在“Linux内核的整体架构”中,蜗蜗有提到,由于Linux支持世界上几乎所有的、不同功能的硬件设备(这是Linux的优点),导致Linux内核中有一半的代码是设备驱动,而且随着硬件的快速升级换代,设备驱动的代码量也在快速增长。个人意见,这种现象打破了“简洁就是美”的理念,是丑陋的。它导致Linux内核看上去非常臃肿、杂乱、不易维护。但蜗蜗也知道,这不是Linux的错,Linux是一个宏内核,它必须面对设备的多样性,并实现对应的驱动。转载 2022-12-01 22:00:00 · 177 阅读 · 0 评论