嵌入式Linux设备驱动程序开发指南(原书第2版)
上QQ阅读APP看书,第一时间看更新

2.3 设备驱动

设备驱动通过调用driver_register()把自己注册到总线核心驱动中。然后设备模型核心会尝试将新注册的驱动与设备绑定。当一个能够被特定驱动处理的设备被发现后,驱动的probe()函数会被调用,设备的配置信息则通过设备树获取。

设备驱动负责实例化和注册一个device_driver数据结构(定义在include/linux/device.h)实例到设备模型核心。device_driver数据结构的定义如下:

063-01
  • bus成员是一个指向bus_type数据结构的指针,用来标识驱动注册到哪个总线上。
  • probe成员是一个回调函数,每当驱动支持的设备被发现时会调用该函数。驱动为各设备初始化自身,并且初始化具体的设备。
  • remove成员也是一个回调函数,调用该函数来将设备和驱动解绑。这种情况一般发生在设备移除、驱动卸载或者系统关闭的时候。

Linux设备模型如图2-1所示。

064-01

图2-1 Linux设备模型