Linux总线设备驱动模型

1. 简介

  • 驱动模型中的总线可以是真实存在的物理总线(USB总线,I2C总线,PCI总线),也可以是为了驱动模型架构设计出的虚拟总线(Platform总线)。为此linux设备驱动模型都将围绕"总线–设备–驱动"来展开

  • 设备驱动模型有三个重要组件,分别是总线( bus type )、设备( platform_device ) 和驱动 ( platform_driver )。三者关系如图所示:

Linux总线设备驱动模型_第1张图片

  • 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机制,异步通知

你可能感兴趣的:(ArmSoM-W3,RK3588,开发板,linux,运维,服务器,arm开发,驱动开发,物联网)