suyuanping
驱动牛犊
驱动牛犊
  • 注册日期2003-03-19
  • 最后登录2008-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1613回复:4

请教高手PCI配置空间中的基址寄存器0位的硬件实现问题

楼主#
更多 发布于:2003-06-27 22:40
这个问题可能问的有点菜,不过本人是初学者,没办法,谁叫俺不懂呢,是这样的,最近找了一本PCI开发指南的书,书上说对于配置空间的基址寄存器的最低位都是只读位,若该位为0,则映射I/O空间,若该位为1,则映射存储器空间,既然是只读位当然只能读不能写了,但是该位怎样来实现呢,书上说是用硬件的方法来使该位置0或置1,我就不明白既然是做好了芯片比如PCI9052,要怎么样才能使该位只读呢,用硬件怎么样才能实现
lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-06-28 14:45
好象正真的高手都不愿意回答呵,那我就来充充数吧!
基址寄存器的最低位只读,是对于PCI总线而言的,首先你要搞清楚基址寄存器在PCI设备中的实现方式。
简单地说,基址寄存器在PCI设备上电初始化前后,起到两个不同的作用。初始化前,寄存器里保存的是PCI设备向系统申请的资源类型和数量,比如最低位表示是IO资源还是MEM资源。初始化时,PCI配置机构从中获得必要的信息,然后分配资源给PCI设备,这时,配置机构就会把分配到的资源(也就是地址)重写回基址寄存器,PCI设备以其中的值做为总线地址译码的依据。
很显然,基址寄存器的位0是用来标志资源类型的,总线配置机构没必要修改这个东西,因此它被规范设计为只读。

9052的基址寄存器当然是在9052内部做好的,但是它要通过EEPROM来配置。9052上电后,首先要读EEPROM,配置好基址寄存器的内容,用来按你的设计意图向系统申请资源,这个时候任何位都是可写的,包括那个最低位。明白了吗?明白了就给分吧!呵呵
lvhaow
lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-06-28 14:48
晕~~~~~~~才1分?你小子太抠门了啊!哈哈
lvhaow
suyuanping
驱动牛犊
驱动牛犊
  • 注册日期2003-03-19
  • 最后登录2008-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-28 22:43
谢谢了,分是给少了点,不过非常感谢你的回答,我再给十分给你,怎么样,够意思吧
suyuanping
驱动牛犊
驱动牛犊
  • 注册日期2003-03-19
  • 最后登录2008-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-28 22:44
谢谢了,分是给少了点,不过非常感谢你的回答,我再给十分给你,怎么样,够意思吧,但不知道怎样给分
游客

返回顶部