导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→《NE2000网卡驱动程序》文章中问题请教!

* 30494: 《NE2000网卡驱动程序》文章中问题请教!

   hitliusb 
hitliusb发表的帖子 

 《NE2000网卡驱动程序》文章中问题请教!
1。网卡中数据发送的顺序是什么,是先低地址后高地址,还是先高地址后低地址?在WINDOWS2000里面用命令ipconfig -all得到的physical address是00-00-21-E6-F9-4A,高地址在左边还是右边啊?通过DMA口(REG10)将数据写入网卡RAM区时,是将数据按桢格式----目的网卡地址,源网卡地址,数据类型,数据----依次写入网卡RAM区的吗?

     2。send_packet函数里面有这样的语句:
    for(i=0;i  <6;i++){                     //最多重发6次
        for(ii=0;ii  <1000;ii++)             //检查txp为是否为低
            if((reg00&0x04)==0) break;
        if((reg04&0x01)!=0)   break;      //表示发送成功        
        reg00=0x3E;
    }
    为什么检查txp为是否为低需要循环1000次呢?reg00能记录那么多的数据(1000个)吗?事实上,只要最后一个发送的数据发送完了(即TXP位为1),则最终reg00仍可表示整个1000个数据都发送完了,这就没有意义了。
    另外,reg00=0x3E;是表示发送数据到网上,那“重发6次”指的是重发到网上还是重发到网卡RAM里面呢?如果是指重发到网上,
前面也没有reg00=0x3E;语句啊(这个循环之后才有),只有reg00=0x12; 语句,
如何重发啊?
    还有,sourcenodeid[],destnodeid[]好象没有通过DMA端口写入网卡RAM里面啊,这在启动发送命令时是如何把数据发送出去的呢?

     3。bit recv_packet(union netcard *rxdnet)函数里面有这样的语句:

     if(curr==0)    return 0;             //读的过程出错    
    判断curr==0就可以知道“读的过程出错”吗?这是从那里知道的?我查了一下RTL8019的资料手册,好象没有提到这些。这是规定的吗?我想确认一下。
    bnry=rxdnet->  bytes.bytebuf[1]-1;   //next page start-1 
    这里下一页指针的含义是什么,是相对谁而言的(当前读,还是当前写),为什么要减1呢

谢谢各位大虾赐教!


发表时间:2003年5月15日19:34:03

  
回复该帖

本主题共有 7 帖,分页:>>>>>该主题的所有内容[7]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  30634.[详细]谁来帮帮我啊
摘要:......(无内容)
- [hitliusb][1019次] 2003年5月16日

  31004.[详细]谁来帮帮我啊?谢谢了
摘要:......(无内容)
- [hitliusb][776次] 2003年5月19日

  31011.[详细]我很需要NE2000的资料,你在哪里找的?哪本书?能否告知?
摘要:......(无内容)
- [yibuerli][1098次] 2003年5月19日

[上一篇帖子]:[求助]请教PCF8583的中文资料,或程序段,谢谢![em05]
[下一篇帖子]:关于Micro-c51[color=#008B8B]请问哪位仁兄有DAVE DUNFIEL