linux内核的设备驱动模型和平台设备驱动

为了解决这种驱动代码和设备信息耦合的问题,linux 提出了设备驱动模型。设备驱动模型中包括总线,驱动,设备

  • 设备 (device) :挂载在某个总线的物理设备;
  • 驱动 (driver):与特定设备相关的软件,负责初始化该设备以及提供一些操作该设备的操作方式;
  • 总线(bus):负责管理挂载对应总线的设备以及驱动,匹配设备和驱动,它维护着两个链表,里面记录着各个已经注册的设备和驱动。;

在设备驱动模型中,引入总线的概念可以对驱动代码和设备信息进行分离。对于I2C、SPI、USB这类常见的物理总线来说,linux内核回自动创建与之对应的驱动总线,因此I2C设备,SPI设备,USB设备自然是注册挂载在相应的总线上。
物理总线:芯片与各个功能外设之间传送信息的公共通信干线,其中又包括数据总线、地址总线和控
制总线,以此来传输各种通信时序。
驱动总线:负责管理设备和驱动。制定设备和驱动的匹配规则,一旦总线上注册了新的设备或者是新
的驱动,总线将尝试为它们进行配对。
但是实际项目中,比如led,rtc,beep,key这类结构简单的设备,它们的控制不需要时序,它们没有相应的物理总线。所以linux内核不会为它们创建驱动总线。为了是这部分设备的驱动开发也能够遵循设备驱动模型,linux内核引入了一种虚拟的总线——平台总线(platform bus).

原文地址:https://www.cnblogs.com/Rainingday/p/14319249.html