设备驱动归纳总结(八):1.总线、设备和驱动 —— 总线的注册

本文详细介绍了Linux内核设备模型中的总线、设备和驱动程序的概念及注册过程。文章通过实例展示了如何注册总线、设备和驱动,以及如何通过sysfs文件系统进行设备属性的添加、删除。通过设备模型,内核实现了设备的电源管理、用户空间通信、热插拔支持等功能,并提供了设备的拓扑结构图。
摘要由CSDN通过智能技术生成
Linux设备驱动学习涉及到理解Linux内核中的设备模型以及设备驱动的开发流程Linux设备模型的目的是为内核建立起一个统一的设备模型,通过对硬件设备归纳、分类和抽象,简化设备驱动的开发。设备模型主要支持电源管理、系统关机、与用户空间的通讯、热插拔设备设备类型以及对象生命周期等任务。 在学习Linux设备驱动时,需要了解设备驱动程序的注册和注销过程。对于PCI设备驱动注册过程包括将驱动程序的总线指向pci_bus_type,并将probe和remove函数指向PCI核心内的相关函数,同时设置驱动程序的属性文件。然后使用driver_register函数注册驱动程序到内核中。 设备驱动的开发还需要了解设备驱动的删除过程。对于PCI驱动,删除设备驱动程序需要调用pci_unregister_driver函数,该函数使用传递给它的struct pci_driver指针调用驱动核心函数driver_unregister。在driver_unregister函数中,会清理与驱动相关的sysfs属性,并为连接到该驱动设备调用release函数进行清理。 此外,学习Linux设备驱动还需要了解设备的探测过程。在PCI总线中,当一个PCI设备被发现时,PCI核心会在内存中创建一个pci_dev类型的结构变量。该结构变量包含设备的各种信息,如设备号、厂商ID、设备ID、子系统厂商ID、子系统设备ID、设备类别等。 总结来说,学习Linux设备驱动需要理解Linux设备模型、设备驱动注册和注销过程,以及设备的探测过程。通过深入学习这些内容,可以掌握设备驱动开发的基本原理和技巧。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux设备驱动程序学习(十三)——Linux设备驱动模型](https://blog.csdn.net/baidu_38661691/article/details/95642000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a746742897

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值