SwordMan
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2007-07-27
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1832回复:12

rtl8139的问题,请多指点!

楼主#
更多 发布于:2002-11-05 14:20
在每收到一个数据包后,更新CAPR寄存器,为什么要减去16?

调用READ_PORT_USHORT读ISR寄存器后立即调用WRITE_PORT_USHORT写入刚读出的值,有什么用处?

当清除ISRMASK后,中断被disable,在enalbe之前,nic不会产生中断,即不会置ISR STATUS寄存器中的数据位,哪么这个中间本应产生的中断是否会丢失?请描述一下硬件产生中断,设置ISR STATUS寄存器及系统如何响应的原理?

谢谢!

(参见本站rtl8139的代码)
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-14 09:39
ISRMASK和ISR STATUS是两个不同的寄存器,一旦有接收发送,网线连上断开等事件,都会在ISR STATUS中对相应的位置位,而不管ISRMASK如何。产不产生中断信号则要看ISRMASK中的位了,举个例子,如果ISRMASK中只有一个接收位使能了,那么只有接收到数据包时,才会在硬件上产生中断,至于发送,只会在ISR STATUS中置位耳不产生中断。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-14 09:42
其他两个问题,我需要看看源代码。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
SwordMan
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2007-07-27
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-14 10:18
谢谢silan!

第二个问题我已经知道了,是通过写寄存器清除相应位。

第一个问题还不明白。

本想给分,但不知道怎么给,下次补上,呵呵
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-14 14:36
ISR寄存器好像是读自清零,也就是读一次,ISR自动会变成零。至于CAPR,每次接收数据,网卡会自己在数据包后面加上一些信息,如CRC,这是硬件加的,不应该属于数据包的范畴,所以我怀疑CAPR减16和它有关系。我手头上没有源代码,只是凭印象,还是你自己拿主意吧。如果方便的话,把源代码发给我吧:zhangba@cmmail.com,我帮你看看。呵呵。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
SwordMan
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2007-07-27
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-14 16:21
源代码就是本站资源中的8139的代码,我也给你发了一份,望查收
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-15 09:33
我看了一下源代码,也觉得没必要接收后CAPR-16。但是我听别人说,对8139而言,如果读指针和写指针相同的话,就不会产生接收中断了,如果直接写入CAPR的话,就有可能造成读写指针相同。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
SwordMan
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2007-07-27
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-15 12:41
谢谢
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-19 15:55
看样子是拿不到分了,呵呵。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
SwordMan
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2007-07-27
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-19 16:09
不好意思,我找了半天不知道怎么给分:(

指导一下,分一定给
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-19 17:16
你发的第一个贴子程度最下面就有“给分”。呵呵,问题解决得怎么样?
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
SwordMan
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2007-07-27
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-19 17:19
呵呵,问题搞定了。

分数给了!
kevinbobo
驱动牛犊
驱动牛犊
  • 注册日期2007-06-11
  • 最后登录2010-02-23
  • 粉丝0
  • 关注0
  • 积分101分
  • 威望21点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-01-10 17:36
最后是怎么回事,更新CAPR寄存器,为什么要减去16啊?
游客

返回顶部