为了统一芯片设备驱动框架
内核中设计了一套
1.总线
struct bus_type{ //描述总线
const char *name;
}
bus_register
void bus_unregister(struct bus_type *bus);
ls /sys/bus/
2.设备
struct device{ //device.h 描述设备
struct bus_type *bus; //该设备挂在那条总线上
...
}
int device_register(struct device *dev);
void device_unregister(struct device *dev);
3.设备驱动
struct device_driver{ //device.h 描述设备的逻辑驱动
const char *name;
struct bus_type *bus;
...
}
int __must_check driver_register(struct device_driver *drv);
void driver_unregister(struct device_driver *drv);
问题:按键设备挂在了哪条总线上?没有挂在具体的总线上
那些没有挂在具体总线上的设备
就无法按照总线驱动模型框架完成驱动程序
linux为了该问题,虚拟出了一条总线:platform总线
让那些没有挂在具体总线上的设备,可以人为想象成挂在了platform总线上
从而使得该类型设备也可以按照总线驱动模型的框架完成驱动程序
统一了设备的驱动编程框架