bus_register //注册一条总线
bus_unregister //注销总线
平台总线的注册如下:
2. 总线设备(硬件)
● struct device 结构:
在最底层,Linux 系统中每一个设备都用 device 结构的一个实例来表示:
struct device //device.h
{
struct bus_type \*bus;//代表该设备挂在哪条总线上
void (\*release)(struct device \*dev); //release 是必须实现的
...
}
● 设备注册:
device\_register(struct device \*dev)
device\_unregister(struct device \*dev)
3. 设备驱动(软件)
设备模型跟踪所有系统所知道的设备,进行跟踪的主要原因是让驱动程序核心协调驱动程序与新设备之间的关系。
设备驱动程序可以导出信息和配置变量,这些是独立于任何特定设备的。
● device_driver 结构:
struct device_driver //device.h
{
//用于和硬件进行匹配
const char \*name;
struct bus_type \*bus;
int (\*probe) (struct device \*dev);
int (\*remove) (struct device \*dev);
...
}
● 注册函数:
driver\_register(struct device_driver \*drv)
driver\_unregister(struct device_driver \*drv)
二、platform 平台总线
为了达到所有硬件都可以按照总线设备驱动模型来实现驱动,内核中建立一条虚拟的总线platform,它可以将那些没有真正挂在具体总线上的硬件, 虚拟的认为挂在了platform总线上,达到统一。
而其中用户最需要做的就是填充 platform_driver 驱动 和 platform_device设备。