标签:windows驱动开发 wdf windows phone 8 i2c
SPB是Simple Peripheral Bus的简称,直译过来就是简单外设总线,它包括I2C总线、SPI总线。SPB是在Windows 8以后才被驱动支持的,而在之前如果系统想访问I2C外围设备,则只能通过BIOS程序间接的访问,没法直接访问外设寄存器。在系统启动时,ACPI固件会根据配置表扫描SPB设备,并将它们的资源信息传递给PnP(即插即用设备)管理器,这些资源就包括I2C从设备地址、I2C总线时钟频率以及该设备的中断号。需要注意的一点,在ACPI资源配置表中,是不允许使用Memory32Fixed等这样的存储映射Method的,因为一个I2C设备是不能被系统地址映射的,它们只能通过I2C总线进行访问。关于I2C总线的协议并不是本文讨论的主要内容,如果有不了解的还请事先上网查阅,然后再来阅读本文。
和GPIO驱动一样,SPB驱动也分为SPB控制器驱动、SPB框架(SpbCx)和SPB外设驱动。
SPB控制器驱动:直接操作SPB(I2C)控制寄存器,与控制器硬件相关,并通过事件回调的方式将数据传送给SpbCx。
SPB框架:负责连接SPB Controller Driver 和 Periphera Device Driver 的中间层,实现外设驱动与控制器驱动之间数据交互的细节,也为平台移植提供了极大的好处。
SPB外设驱动:与SPB(I2C)所连接的具体外设驱动,与外设硬件相关,通过发送I/O请求给SpbCx进行外设的控制。它不关心底层SPB控制器的具体操作。
微软采用这样的架构极大的方便了手机驱动人员开发I2C外设驱动的工作,因为我们驱动人员只需要与SpbCx打交道,而不必关心SoC硬件平台的具体细节,就算以后换了个SoC,I2C控制器寄存器地址发生了变化,我们的外设驱动也不需要做任何改动就能正常工作,而往往与平台硬件相关的I2C控制器驱动则都是由SoC平台厂商去完成的,这样节省了手机驱动人员的开发工作量,缩短了项目开发周期。
下图很清晰的表明了三者的关系(图片来源于MSDN):
或是这幅图:
关于SPB驱动更详细的信息,请查阅MSDN官方文档:Simple Peripheral Buses
Windows Phone 8.1 驱动开发——SPB 简介
标签:windows驱动开发 wdf windows phone 8 i2c
原文地址:http://blog.csdn.net/hexiaolong2009/article/details/42709315