LINUX驱动模型中bus与platform_bus区别和异同
首先要明确的是platform_bus是BUS的一个字集,也就是说platform_bus是BUS定义的一个总线类型。可以看到platform与其它BUS下的总线是等级的。也就是说platform也是总线的一种。我们可以看到I2C,USB等总线下面都可以挂接多个相关设备,这说明i2c usb等总线是管理这类设备的一个主控制器。因此对于一个主控制器可以管理很多同类外围设备的就可以用bus_register注册一个总线,会对应的建立一个/sys/bus/xx总线名。这样就可以用device_register 和driver_register函数来完在对应子设备的添加和驱动注册。同时这个/sys/bus/xxp完成这类设备的管理和相关共用低层驱动的框架。那platform是什么了。我们从前面分析可以知道对于不具备主控制器功能既可以挂载多个子设备的,为了方便驱动和与设备的方便管理我们引入了虚拟总线platfrom平台设备总线。这个平台设备总线是由bus_register创建的。它下面可以挂载多个不同类型的设备,它们不具同一个类型的驱动关系。我们仅仅是借用platfrom来管理它们。这样platform就与其它平级的总一样挂载了多个子设备。但它们不具同类型的功能。Palftform与usb等总线是平级的。但usb总线下面挂载是同一个类型的设备。Plaftrom则相反。因此我们称plaftform为虚拟总线,并不是真正的总线的意思。Plaftform下面的子设备由platform_device_register platform_driver_register函数来完成建立。