huaifenzi256
驱动牛犊
驱动牛犊
  • 注册日期2003-03-12
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:1061回复:5

问大家一个问题

楼主#
更多 发布于:2003-03-20 17:05
请问:对网卡进行Remote DMA写和读的时候,地址0x4000-0x7fff与处理器的地址怎么样影映射。假设我设置8019AS的DMA START PAGE 寄存器是0x46,那么我从这页往里面写入2K的数据,并且相对于我的CPU来说我的8019AS的地址空间是0x8000-0xffff,那么该怎样设置地址呢?
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-21 01:15
0x8000-0xffff???系统空间还是局部空间?
huaifenzi256
驱动牛犊
驱动牛犊
  • 注册日期2003-03-12
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-21 09:20
0x8000-0xffff,是CPU对8019AS的寻址空间,尽管我只需要32个寄存器地址。我选择的是0xC000-0xffff。假设我想作DMA读和写,且我的开始寄存器是0x46,那么我想从这页开始读和写,那么我的起始地址是什么,一定不是0x4600,因为他不在0x8000-0xffff之间。

请问我该怎样确定地址呢?谢先。
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-21 11:59
是独立的系统还是基于PC的板卡?
如果是基于PC的板卡,是什么接口?PCI?ISA?
把问题说清楚,让回答的人打字越少越好
huaifenzi256
驱动牛犊
驱动牛犊
  • 注册日期2003-03-12
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-21 12:05
ISA接口。现在数据是完全读出来了,但是地址错位。举列如;想从起始地址为0x4c00开始读,但实际上从0x4B1D开始读的。

不好意思 ,给你们添麻烦了。
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-22 01:09
ISA的寻址能力是20位,前640K是系统基本内存,从0XA0000开始是显卡内存,所以不是你没理解就是你没说清。
看了半天猜测如下:
1)0x8000-0xffff是实模式下的段地址,实际地址是0x80000-0xffff0
2)0x8000-0xffff不是真正的地址而是指你的内存可以安排在这段区间内。你可以把他安排在0xc000或0xd000,0xe000有东西,0xf000是系统BIOS。
3)开始寄存器是0x46估计是0x80000+46*0x1000=0xc600,就是物理地址是0xc6000
4)实模式下:物理地址+偏移(0x4000-0x7fff)就可以了。
5)保护模式下(WINDOWS):把0xc6000影射到逻辑地址
6)用逻辑地址+偏移(0x4000-0x7fff)就可以了。
游客

返回顶部