- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pci总线:用I/O命令访问PCI总线设备配置空
间
疯狂代码 http://CrazyC/ ĵ http:/CrazyC/NetworkProgramming/Article33380.html
摘要:通过对PCI协议配置机制分析提出种直接用I/O命令访问PCI总线设备配置空间方法给出了相应C语言并在
实际应用中得到验证从而在大多数情况下避免了复杂驱动开发 ; ; ; 关键词:PCI总线 配置空间 操作系统
PCI总线推出以来以其独有特性受到众多厂商青睐已经成为计算机扩展总线主流目前国内许多技术人员已经具备
开发PCI总线接口设备能力但是PCI总线编程技术也就是对PCI总线设备操作技术直是件让技术人员感到头疼事
情PCI总线编程核心技术是对相应板卡配置空间理解和访问般软件编程人员基于对硬件设备原理生疏很难理解并
操作配置空间希望硬件开发人员直接告诉他们怎样操作;而PCI总线硬件开发人员虽深刻地理解了其意义在没有
太多编程经验地前提下也难于轻易地操作PCI板卡结果大多是硬件技术人员花费大量时间和精力去学习DDK、
WINDRVER等驱动开发软件
作者在开发PCI总线接口设备时经过对PCI总线协议深入研究从协议本身角度出发找到种方面而快捷PCI配置空
间操作方法只使用简单I/O命令即可找到特定PCI总线设备并对其所有配置空间进行读写操作旦读得其配置空间
内容即可中得到担任系统对该PCI总线设备资源分配
1 PCI总线配置空间及配置机制
为避免各PCI设备在资源占用上发生冲突PCI总线采用即插即用协议即在系统建立时由操作系统按照各设备要求
统分配资源资源分配信息由系统写入各PCI设备配置空间寄存器并在操作系统内部备份各PCI设备有其独自配置
空间设计者通过对积压设备(或插槽)ISDEL引脚驱动区分不同设备配置空间配置空间前64个字节称为配置空
间预定自区它对每个设备都具有相同定义且必须被支持;共后空间称为设备关联区由设备制造商根据需要定义
与编程有关配置空间信息主要有:
(1)设备号(Device ID)及销售商号(Vendor ID)配置空间偏移量为00h用于对各PCI设备区分和查找为了
保证其唯性Vendor ID应当向PCI特别兴趣小组(PCI SIG)申请而得到
(2)PCI基地址(PCI Base Address)配置空间偏移量为10~24h设备通过设定可读写高位数值来向操作系统
指示所需资源空间大小比如某设备需要64K字节内存空间可以将配置空间某基地址寄存器高16位设成可读写而
将低16位置为0(只可读)操作系统在建立时先向所有位写1实际上只有高16位被接收而被置成了1低16位仍为
0.这样操作系统读取该寄存器时返回值为FFFF0000h据此操作系统可以断定其需要空间大小是64K字节然后分
配段空闲内存空间并向该寄存器高16位填写其地址
其它可能与编程有关配置空间定义及地址请参阅参考文献[1]
由于PC-AT兼容系统CPU只有内存和I/O两种空间没有专用配置空间PCI协议规定利用特定I/O空间操作驱动
PCI桥路转换成配置空间操作目前存在两种转换机制即配置机制1#和配置机制2#配置机制2#在新设计中将不再
被采用新设计应使用配置机制1#来产生配置空间物理操作这种机制使用了两个特定32位I/O空间即CF8h和
CFCh这两个空间对应于PCI桥路两个寄存器当桥路看到CPU在局部总线对这两个I/O空间进行双字操作时就将该
I/O操作转变为PCI总线配置操作寄存器CF8h用于产生配置空间地址(CONFIG-ADDRESS)寄存器CFCh用于
保存配置空间读写数据(CONFIG-DATA)
配置空间地址寄存器格式如图1 width=410 align=right vspace=1 border=0
CF8H(局部总线):
当CPU发出对I/O空间CFCh操作时PCI桥路将检查配置空间地址寄存器CF8h31位如果为1就在PCI总线上产生个
相应配置空间读或写操作其地址由PCI桥路根据配置空间地址寄存器内容作如图2所示转换
CFCh (局部总线):
设备号被PCI桥路译码产生PCI总线地址高位地址它们被设计者用作IDSEL信号来区分相应PCI设备6位寄存器号
用于寻址该PCI设备配置空间62个双字配置寄存器(256字节)功能号用于区分多功能设备某特定功能配置空间
对常用单功能设备为000某中PCI插槽总线号随系统(主板)不同稍有区别大多数PC机为1工控机可能为2或3为
了找到某设备应
文档评论(0)