whistlezl
驱动小牛
驱动小牛
  • 注册日期2003-01-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1118回复:4

诚恳的问:几个地址问题(给分)

楼主#
更多 发布于:2003-07-11 13:09
  
  上次问题没给分,因为我还是第一次在论坛问问题,请见谅。这次补上。另外多谢xyyln的提醒。(为什么最多只能为20分呢?)

  我只知道:比如ISA板卡的某个寄存器相对于基地址的偏移为2,那么PC的CPU在访问这个数据寄存器时,该寄存器的地址是:基地址 + 偏移地址2 。

 我的疑问是:
1)基地址是如何确定的?
我开发的是一个ISA的网卡,那么I/O基地址是我从.inf文件里告诉系统,还是在该网卡的驱动程序里确定呢?

2)对于ISA插槽,其基地址是不是固定的?如果PC机有三个ISA插槽,那么I/O基地址又是如何分配的呢?

3)我使用的网卡的用户手册上有这么一句话:\"本板上的双口RAM用于板内80C196单片机与所驻留的PC机交换数据。……双口RAM在ISA总线侧(PC机侧)所占内存地址出厂配置为E000:0-3FFH(1k器件)。……\"

   请问(1)这个地址\"E000:0-3FFH\"的具体含义是什么?开始的E是什么意思?\":0\"又是什么意思?

       (2)PC系统规定,ISA总线标准中,CPU能访问的I/O地址空间在 0X0100---0X03FF之间.
那么,如果我采用这块网卡的出厂配置(E000:0-3FFH)是不是就不行?

       (3)这块网卡支持跳线,可以通过跳线来改变内存映象地址,其用户手册上说明如下:
\"
S1跨接器用于选择ISA总线侧双口RAM的内存映象地址(A11-A18,A19恒为1).
跨接器针 对应ISA总线地址位 跨接时地址位值 不跨接时地址位值
1-2             A11             0               1
3-4             A12             0               1
5-6             A13             0               1
7-8             A14             0               1
9-10            A15             0               1
11-12           A16             0               1
13-14           A17             0               1
15-16           A18             0               1

S1的出厂配置为1-2、3-4、5-6、7-8、9-10、11-12跨接,13-14、15-16不跨接,所选起始地址为E000:0-3FFH
\"
请问这个地址是如何计算的?\"E000:0\"是什么意思?

最新喜欢:

studyzhongstudyz...
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-11 16:12
 
  上次问题没给分,因为我还是第一次在论坛问问题,请见谅。这次补上。另外多谢xyyln的提醒。(为什么最多只能为20分呢?)

  我只知道:比如ISA板卡的某个寄存器相对于基地址的偏移为2,那么PC的CPU在访问这个数据寄存器时,该寄存器的地址是:基地址 + 偏移地址2 。

 我的疑问是:
1)基地址是如何确定的?
我开发的是一个ISA的网卡,那么I/O基地址是我从.inf文件里告诉系统,还是在该网卡的驱动程序里确定呢?

   我是用DS写的ISA的驱动,因为ISA是非PNP的,所以我写成NT式 的了,不存在。INF文件,我把硬件的信息写在注册表里,驱动程序查询注册表,获得这些资源然后向系统报告资源,申请资源。你的WDM的驱动,我想硬件资源应当是写在。INF文件里的。


2)对于ISA插槽,其基地址是不是固定的?如果PC机有三个ISA插槽,那么I/O基地址又是如何分配的呢?

    查看板卡的手册,有详细的地址分配信息,ISA的地址是死的,或者用跳线来选择,对于驱动来说,就是一个符号,没什么,完全由硬件来决定。

3)我使用的网卡的用户手册上有这么一句话:\"本板上的双口RAM用于板内80C196单片机与所驻留的PC机交换数据。……双口RAM在ISA总线侧(PC机侧)所占内存地址出厂配置为E000:0-3FFH(1k器件)。……\"
    
   请问(1)这个地址\"E000:0-3FFH\"的具体含义是什么?开始的E是什么意思?\":0\"又是什么意思?

     EOOO:0-3FFF是内存映射空间,是把双口RAM映射到了主机的内存空间,E000是双口RAM的物理基地址,0是偏移量,3FF正好是1K。

       (2)PC系统规定,ISA总线标准中,CPU能访问的I/O地址空间在 0X0100---0X03FF之间.
那么,如果我采用这块网卡的出厂配置(E000:0-3FFH)是不是就不行?
      
   在这里你应当搞清两个概念,就是I/O影射和内存影射,0X0100---0X03FF是I/O地址空间,E000:0-3FFH是内存影射空间,CPU访问I/O空间和内存空间使用的命令是不一样的。如果你用DS写驱动的话,对应的要用到KIORANGE和KMEMORYRANGE这两个类。

       (3)这块网卡支持跳线,可以通过跳线来改变内存映象地址,其用户手册上说明如下:
 \"
S1跨接器用于选择ISA总线侧双口RAM的内存映象地址(A11-A18,A19恒为1).
跨接器针 对应ISA总线地址位 跨接时地址位值 不跨接时地址位值
1-2             A11             0               1
3-4             A12             0               1
5-6             A13             0               1
7-8             A14             0               1
9-10            A15             0               1
11-12           A16             0               1
13-14           A17             0               1
15-16           A18             0               1

S1的出厂配置为1-2、3-4、5-6、7-8、9-10、11-12跨接,13-14、15-16不跨接,所选起始地址为E000:0-3FFH
\"
请问这个地址是如何计算的?\"E000:0\"是什么意思?
 

这是硬件设计的事,就是地址译码的问题,好好看看接口方面的书,有详细的介绍,对于驱动开发者来说,其实掌握这个是没有必要的,你要知道地址范围就可以了,具体,硬件上怎么来实现是硬件的工作!

个人之见!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-23 18:00
吼吼,我把那个没给分的帖子回了,
回完一抬头发现你在这儿放分儿,呵呵。 :P
助人乃快乐之本 有人给分就更快乐了 :-)
whistlezl
驱动小牛
驱动小牛
  • 注册日期2003-01-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-25 02:53
吼吼,我把那个没给分的帖子回了,
回完一抬头发现你在这儿放分儿,呵呵。 :P


不好意思,我已经给过分了,好像不能在给你分了,特谢谢你的解答。
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-25 09:20
没关系啦。
如果只为了分儿,
就不会在你那个没给分的版面回答了。
助人乃快乐之本 有人给分就更快乐了 :-)
游客

返回顶部