![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux设备模型
文章平均质量分 93
坤昱
这个作者很懒,什么都没留下…
展开
-
linux设备模型:pci驱动程序注册过程
MANF_ID 表示厂商ID 是一个数字ID,如0xfead 或 PCI_ANY_ID(表示通用),如果有真实硬件应与硬件ID一致MODEL_CODE 表示厂商设备 是一个数字ID,如0x1234 或 PCI_ANY_ID(表示通用),如上默认情况下,子系统的厂商ID和厂商设备ID不用设置,它们采用PCI_ANY_ID(表示通用),class、class_mask等成员默认也不需要指定,在设备创建后,创建相关对象关联设备节点即可(或创建时指定父级)pci_probe: 驱动探测函数,可在函数内原创 2022-11-28 01:32:51 · 2193 阅读 · 0 评论 -
linux设备模型:固件设备及efi固件(平台)设备节点创建过程分析
本篇分析固件系列(以efi为例),固件可以分为(系统)引导阶段(efi stub启动模式)、固件内存映射(物理地址映射到虚拟地址等等)、固件注册到平台设备、平台设备运行等等。固件设备具有更广泛的意义,当然复杂度也更高一些。 固件系列更偏向于开发板,通常由内核模块(服务)与应用程序完成一些硬件级上电/下电及设备形式控制(如更新固件)等等。参考Documentation中一些文章内容原创 2022-11-17 23:23:05 · 927 阅读 · 0 评论 -
linux设备模型:设备及设备节点创建过程分析
本篇分析设备的初始化及注册过程,包括设备与驱动绑定,设备与电源管理之间的联系、中断域的储存及物理设备之间的关系等等。这一篇内容较多,结合kobject、kset、class、bus等众多概念,也是从理论阶段转换为实际使用阶段的重要过程。 设备初始化阶段,创建kset容器结构对象devices_kset,用于设备的uevent(用户事件通知)操作。dev_kobj表示设备根对象,在它的基础上扩展(延伸)sysfs_dev_block_kobj("block") 块设备根对象和sysfs_dev_ch原创 2022-11-13 21:38:01 · 616 阅读 · 0 评论 -
linux设备模型:devtmpfs虚拟文件系统分析
devtmpfs是一个设备文件系统,它将其所有文件保存在虚拟内存中。devtmpfs中的所有内容都是临时的,因为不会在您的硬盘驱动器上创建任何文件。如果卸载devtmpfs实例,其中存储的所有内容都将丢失。 devtmpfs的根路径在/dev,它通过文件系统上下文创建mount(挂载)对象,使得用户层可以访问。 devtmpfs通过devtmpfsd线程函数,分配新的命名空间代理(nsproxy)对象,并分配、关联多类命名空间,如mnt、uts、ipc、pid、cgroup、n原创 2022-11-10 01:00:29 · 3118 阅读 · 1 评论 -
linux设备模型:bus概念及pci_bus分析
bus(总线)是一种特殊的抽象框架,与class有着本质上的不同,class感觉上只是把一些核心组件聚集在一起,它主要为访问组件提供便利(如提供组件地址),而bus则是实实在在的功能性框架,它即可负责管理、维护驱动与设备之间的关系,也可作为主桥设备与硬件之间的访问通道等等。如pci总线,当pci硬件设备插入卡槽后,首先通过pci_bus_type(pci总线操作结构) 中的 pm(电源操作结构)操作相关函数唤醒设备,然后通过pci_bus_match函数查找硬件设备是否被注册到驱动(通过pc原创 2022-11-06 14:40:26 · 1096 阅读 · 0 评论 -
linux设备模型:kset及设备驱动抽象类(class)分析
kset属于kobject属于特定子系统的一组特定类型的kobject,与其说是一组特定类型,倒不如说用kset表示一组特定类型的kobject更方便与管理、遍历等操作,实际场景中如果需要以某个根为目标的多组特定类型的kobject,可以编写复合型kset容器,以根kset容器为基础(实际还是根kobject),在它之后继续关联多个不同的kset容器,当然,这也是linux内核中设备驱动的现状。kset容器相对于kobject来说,主要多了kobjs的uevent操作,用于记录原创 2022-11-05 00:50:36 · 720 阅读 · 0 评论 -
linux设备模型:sysfs(kobject)解析
sysfs 是一个最初基于 ramfs 且位于内存的文件系统。它提供导出内核数据结构及其属性,以及它们之间的关联到用户空间的方法。任何 kobject 在系统中注册,就会有一个目录在 sysfs 中被创建。这个目录是作为该 kobject 的父对象所在目录的子目录创建的,以准确地传递内核的对象层次到用户空间。sysfs中的顶层目录代表着内核对象层次的共同祖先;例如:某些对象属于某个子系统。 在与其目录关联的 kernfs_node 对象中内部保存一个指向实现目录的原创 2022-10-30 13:04:25 · 1263 阅读 · 0 评论