设备信息脱离出驱动代码 ------ 设备驱动模型(设备、驱动、总线)
设备(称为设备信息更为恰当):指的是CPU上的资源,比如一个LED接到GPIO1上,设备指的是CPU控制GPIO1所涉及的各个寄存器(时钟寄存器、方向寄存器等),而不是LED。
总线:设备信息和驱动代码分开后,总线作为桥梁,通过 name (无设备树)或者 compatible (设备树)字段内容是否一样匹配。
在总线上管理着两个链表,分别管理着设备和驱动,当我们向系统注册一个驱动时,便会向驱动的管理链表插入我们的新驱动,同样当我们向系统注册一个设备时,便会向设备的管理链表插入我们的新设备。在插入的同时总线会执行一个 bus_type 结构体中 match 的方法对新插入的设备/驱动进行匹配。 (它们之间最简单的匹配方式则是对比名字,存在名字相同的设备/驱动便成功匹配)。在匹配成功的时候会调用驱动 device_driver 结构体中 probe 方法 (通常在 probe 中获取设备资源,具体的功能可由驱动编写人员自定义),并且在移除设备或驱动时,会调用 device_driver 结构体中 remove 方法。