rwx12345
驱动牛犊
驱动牛犊
  • 注册日期2003-03-01
  • 最后登录2004-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:994回复:3

怎么会得到80h和00000300h呢?(急救!!)

楼主#
更多 发布于:2003-05-27 09:31
各位老大:
   下面怎么会得到80h和00000300h呢?
   For example, the first base address register returns FFFFFF81h indicating an I/O space (D0=1) of size 80h. This means that the 5920’s internal registers can be selected for I/O addresses between 00000300h through 0000037Fh,
in this example. (example 300h, 380h etc.; 338h,
340h would not be allowable).

注:base address register 是PCI配置空间的基址寄存器
  
请各位老大帮忙!

[编辑 -  5/27/03 by  rwx12345]
dos
dos
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2010-02-24
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-28 01:04
你的文字好像不完整。前面应该还有一段。根据你提供的部分文字,这个寄存器直接读出来应该是0x00000301。1表明是I/O。如果写0xffffffff到这个寄存器,然后再读回来,得到0xffffff81。去掉bit0,0xffffff80。取反得0x0000007f。说明地址偏移量的范围是0~0x7f。
rwx12345
驱动牛犊
驱动牛犊
  • 注册日期2003-03-01
  • 最后登录2004-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-03 16:47
多谢楼上的老大!
感激不尽!!
ilovelele
驱动牛犊
驱动牛犊
  • 注册日期2003-05-23
  • 最后登录2003-09-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-08 10:51
laoda:
直接读出来的0x00000301是如何得到的?是我们首先在该位置写入I/O区域大小(0XFFFFFF81H)然后系统BOOT LOAD读进去后,系统根据请求分配相应大小区间,再将分配区间首地址写入该基址寄存器而得到的吗?它写入的是0x00000301还是0x0000030?再问一下:BARD0的地址是谁的首地址?谢谢
游客

返回顶部