1. 简介
-
驱动模型中的总线可以是真是存在的物理总线(USB总线,I2C总线,PCI总线),也可以是为了驱动模型架构设计出的虚拟总线(Platform总线)。为此linux设备驱动模型都将围绕"总线–设备–驱动"来展开
-
设备驱动模型有三个重要组件,分别是总线( bus type )、设备( platform_device ) 和驱动 ( platform_driver )。三者关系如图所示:
-
platform_device现已使用dts来描述设备硬件的信息。硬件resouce资源
-
platform_driver是设备的驱动程序代码
-
platform_device链表和platform_driver链表通过compatible属性相互匹配,匹配成功之后执行platform_driver的probe回调函数。
-
在驱动的init函数或者probe函数中注册file_operations结构体,并定义结构体的open,read,write…函数。file_operations结构体是驱动的核心,应用层与驱动层通过file_operations结构体的open,read,write…来交互传递信息。
-
Init:负责驱动的一些初始化工作
register_chrdev:注册file_operations结构体
class_create device_create -
Exit: 负责驱动的一些释放销毁卸载工作,类似C++的析构函数
Class_destroy device_destroy free unregister_chrdev -
驱动程序的基石:中断,休眠唤醒,poll机制,异步通知