VxWorks操作系统下实现ComPactPCI总线驱动
为阐明在VxWorks操作系统下如何实现CompaetPCI总线设备的驱动,需了解PCI设备的配置寄存器空间。PCI设备有3种物理存储空间:配置寄存器空间、存储器空间和I/O空间。PCI局部总线设备中配置寄存器空间是一容量为256 KB并具有特定记录结构的地址空间,该空间分为头标区和设备有关区两部分,空间头标区的定义如图2所示。
在配置空间中,只读空间有设备标识、供应商代码、修改版本、分类代码以及头标类型。其中供应商代码用来标识设备供应商;设备标识用来标识某一特殊的设备;修改版本标识设备的版本号;分类代码用来标识设备的种类;而头标类型用来标识头类型以及是否为多功能设备。除供应商代码之外,其他字段的值由供应商分配。
PCI设扁平线圈电感器备可以在地址空间中重定位是其重要功能之一,使得系统可合理地分配资源,甚至完全相同的两块PCI卡也能够在同一总线内工作而不会产生地址冲突。基地址寄存器的功能是分配PCI设备的系统地址空间,在基地址寄存器中,位0(最低位)均为只读位并且用来标识是存储器空间还是I/O地址空间。如果该位为0,表示映射到存储器空间。映射到I/O空间的基址寄存器宽度总是32 bit,其中位0值为1 (用硬件实现),位1为保留位并且其读出值必须为0,其余各位用来把设备映射到I/O空间。映射到存储器空间的基址寄存器可以是32 bit宽度,也可以是64 bit宽度。其中位0也要用硬件方式使其恒为0。位2和位1两位用来表示映射类型,其余各位用来将设备映射到存储器空间。
系统配置软件通过向基址寄存器写入全“1”后再读回的方式确定设备要求的地址空间范围,与地址空间无关的位其返回值为0。