7708|3

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

PCI配置空间基地址寄存器的地址分配问题 [复制链接]

请问pci设备配置空间的基地址寄存器是不是由主板BIOS分配的呢?
如果是,BIOS根据什么给PCI设备分配地址呢?PCI设备的地址空间大小
如何确定呢?
另外,如果采用内存映射方式,是不是仅仅是PCI设备和内存空间统一编址,
即线性地址空间的一段地址?
还有一个问题,线性地址空间是什么?和物理内存有什么区别,对设备分配
地址是不是仅仅是分配线性地址空间的一个地址,访问这个内存实质上还是直接
访问设备?还是要映射到物理地址空间?
谢谢!!

最新回复

取反前首先要清一下最低位(或最低3位),然后加一 PCI的文档里是这样写的 Software saves the original value of the Base Address register, writes 0FFFFFFFFh to the register, then reads it back. Size calculation can be done from the 32-bit value read by first clearing encoding information bits (bit 0 for I/O, bits 0-3 for memory), inverting all 32 bits (logical NOT), then incrementing by 1.  详情 回复 发表于 2008-8-6 16:20
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
对的 BAR是BIOS分配的
BIOS掌握着整个系统内存空间和IO空间,它扫描设备然后分配合适的地址和大小给设备
地址空间的大小是通过向BAR寄存器写入全1,再读回,低位的bit会变成0,看多少为bit变为0,就可以知道大小了

应该说PCI的MEM分配方式分配的是PCI Bus地址
和处理器线性地址没有特定关系

处理器的线性地址转换到Bus地址还有一层转换关系
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
借贵宝地问下楼上大侠,那写入全1后,读出来的有没有可能是ffffff01,(最后1位为1表示IO空间),
这样的话,地址空间的大小是不是~(0xffffff01)+1=0x000000ff ?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
取反前首先要清一下最低位(或最低3位),然后加一

PCI的文档里是这样写的
Software saves the original value of the Base Address register,
writes 0FFFFFFFFh to the register, then reads it back. Size calculation can be done from
the 32-bit value read by first clearing encoding information bits (bit 0 for I/O, bits 0-3 for
memory), inverting all 32 bits (logical NOT), then incrementing by 1.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表