虚拟总线在linux驱动模型中出现,目的很明确,为众多没有“实际领袖”bus的controller找个共同的虚拟的“精神领袖”,既然是虚拟的,当然就可以挂接很多controller了,比如SPI controller, I2C controller等等;
那为什么驱动都要找个Bus挂接一下呢?---- 是为了管理大量的同类资源及其驱动而出现的一种管理方式,Bus-x负责所有X设备及其驱动的load-unload的管理工作;【如sysfs以及电源管理】
虚拟总线和普通总线一样,为Device驱动程序的“可移植”提供了必备的基础,有了Bus,就可以隔离BSP和具体的device driver,BSP上面的x-bus定义了当前board所需x-device的资源及其配置信息,然后随便取一个通用的device driver,就可以调用bus提供的API去获取“data”了,当然,你临时为此board写的driver,也可以被其他board借用了!