Windows Phone 8.1 驱动开发——SPB 简介

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):

Windows Phone 8.1 驱动开发——SPB 简介Windows Phone 8.1 驱动开发——SPB 简介

或是这幅图:

Windows Phone 8.1 驱动开发——SPB 简介


关于SPB驱动更详细的信息,请查阅MSDN官方文档:Simple Peripheral Buses

Windows Phone 8.1 驱动开发——SPB 简介

上一篇:winform 窗体实现增删改查(CRUD)共用模式


下一篇:Win7 装 Ubuntu 双系统,不需要U盘