资源描述:
《vxworks系统下pci总线设备的配置技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VxWorks系统下PCI总线设备的配置技术应用技术引言兰清华,王时龙.曹厚华(重庆大学软件学院,重庆400045)摘要:介绍了PCI总线设备的配置空间配置头的结构及其配置原理,给出了配置空间的访问方法;同时,实现了VxWorks基于x86架构的PCI总线串口扩展卡的配置和实现程序.关键词:VxWorks;PCI总线;串口扩展;配置空间;驱动程序近年来,随着嵌入式系统的广泛应用.新的嵌入式操作系统也不断地出现.在众多的嵌入式操作系统中,由美国WindRiver提供的VxWorks操作系统是其中最出色的一个,它具有小巧的内核,广泛的硬件支持以及第三方软件开发商的支持等优点
2、.类UNIX风格和POSIX规范兼容性使得广大UNIX程序员可以轻松地掌握该系统,同时.VxWorks所具有的良好开发环境极大地提高了程序的开发效率.在嵌入式系统和工业控制领域中.常常需要同时控制多个外部设备并与它们进行通信.而串口是各个外部设备与主板间最容易,最常见,应用最广泛的一种接口.在数据通信,工业控制,仪器仪表,GPs卫星定位,导航等系统中,串口被广泛应用.在这些特定的具有多个子模块的系统中.传统单串口或者双串口根本不能满足需求,多串口扩展就变得非常必要.常用的串口扩展方式有很多种,例如(ISPCI)总线扩展,USB总线扩展,以太网扩展,以及串口扩展串口方式.
3、相对于ISA总线,PCI(PeripheralComponentInterconnect1总线有更宽的数据带宽和更快的总线速度(最高工作频率可达33MHz,峰值吞吐率在32位时为132MB/s),具有存取延误小,中断共享等优点.且具有一个独立的配置地址空间,从而实现参数自动配置,使所有与PCI兼容的设备实现真正的即插即用fPLUG&PLAY).在串口扩展方面.基于PCI总线的产品得到更加广泛的应用本文阐述了在VxW0rks嵌入系统下PCI总路线设备的配置.针对基于x86体系结构下.PCI总线串口扩展卡进行配置和相关驱动程序的编写1PCI总线设备配置技术(1)PC
4、I总线的配置空间PCI桥是一种将局部总线转换成PCI总线的专用接口芯片,它实现PCI规范所要求的所有硬件接口信号和配置空间寄存器.图1表示PCI桥在PCI总线串口扩展中的作用.图1PCI桥在PCI总线串口扩展卡中的作用当系统启动的时候.PCI桥自动读取预先存放于串行EEPROM中的配置信息(包括制造商ID(VendorID)号和设备ID号(DeviceID))到PCI桥中,由系统BIOS或者操作系统软件自动查找并识别主机上的PCI设备.并根据配置信息为设备分配主机访问所必需的目标空间基地址,目标空间大小,中断等参数,并将所分配的值写入PCI桥的对应寄存器fPCI配置空间
5、)中,以便设备驱动程序对该设备进行控制,最终实现自动配置.(2)配置空间的配置头的结构PCI总线标准规定的配置空间总长度为256个字节.配置信息按一定的顺序和大小依次存放.前64个字节配置空间称为配置头,是任何PCI兼容设备都MODERNCOMPUTER2oo6.6现代计算机一总第二=一七期现代计算机^总第二=一七期v应用技术应实现的空间.配置头的主要作用是识别设备,定义主机访问的方式(i/o访问,MEM访问,中断号等),其余的192个字节根据不同的PCI设备有所不同.图2是NetMos9845芯片配置空间的配置头的结构图.其中偏移地址指的是该字段在配置空间中的位置.A
6、D3l24AD2316ADl58AD70偏移地址设备ID(DeviceID(9845)制造商ID(Vendor1~9710))0oH状态命令04H分类码(070002)修改版本Ⅱ)(O1)08H内建自测试J配置头的类型延迟时间缓存行的大小(08)0CHIIO(E1)BaseAddress10HIIO(F..2)BaseAddl4HIIO(E3)BaseAddress18HIIO(E4)BaseAddress1CHIIO(E5)BeseAddress2OHIIO(E6)BaseAddress24H保留28H子系统IDl子系统制造商m2CH保留30H保留34H保留38H优先
7、级请求(o0)l时间片请求(00)l中断脚(01)l中断线3CH图2NetMO89845配置空间的配置头结构图(3)PCI总线配置空间的访问PCI总线规范中定义了配置机制1和配置机制2两种配置访问机制.在本文选用配置机制1,它采用两个双字(DoubleWords)I/O地址来完成配置访问.这两个I/O地址分别是CF8H~CFBH和CFCH~CFFH,称为配置.地址(ConfigureAddress)和配置数据(ConfigureData)寄存器,均可读可写.ConfigureAddress寄存器为32位,格式如图3所示.0xCFBH0xC