简单的网络(三)

本文详细介绍了NE2K系列网络适配器的工作原理和技术细节,包括寄存器配置、DMA内存地址分配等内容,并提供了简单的实例演示。

简单的网络(一)了解PCI

简单的网络(二)环境模拟搭建

简单的网络(三)

简单的网络(四)发收包

一、题外话

        没有碰我的os有一段时间了,忘得都差不多了,当时是遇到问题了也找了一些资料(E文不过关啊),也有点想放松下就放一旁了。

        最近又不知道干嘛了,打算重新走完网络这一块。

        最重要的是刚闲搞的时候居然正常跑起来了,神啊这是什么情况。

        这里对简单的网络(二)环境模拟搭建做点补充来,但是还有问题,明白原因后会补上来的

#BOCHS 2.6.2配置
ne2k: ioaddr=0x300, irq=3, mac=b0:c4:20:00:00:00, ethmod=win32, ethdev=\Device\NPF_{927D22EC-523E-4C78-9DC2-8EFCC9E4FF67}

pci: enabled=1, chipset=i440fx    
pci: enabled=1, chipset=i440fx, slot1=ne2k  OK了       
#下面这个挂在就会导致端口的访问不正确,暂且不知道确切原因,有知道告诉我
#pci: enabled=1, chipset=i440fx , slot1=pcivga, slot2=ne2k

      ps:debug的时候可以看配置的一个方面是通过生成的log

                                               一个方面是通过命令 info device 'ne2k'

二、长篇累牍的内容

   2.1 NE2K系列有4页寄存器,兼容的只有前3页,PAGE0~PAGE2.

       其实是0x00-0x1f分为四组寄存器,但是ne2k只兼容前面三组

  2.3 NE2k的IO访问范围

     端口地址可以在 0x280---》0x380的任意地方,通常配置在0x300地方

端口偏移:00--0F 寄存器地址
       
          10--17 作用一样是DMA地址
 
          18--1F 复位端口 
/*
CR---命令寄存器       
TSR---发送状态寄存器        
ISR---中断状态寄存器 
RSR---接收状态寄存器  
RCR---接收配置寄存器        
TCR---发送配置寄存器 
DCR---数据配置寄存器  
IMR---中断屏蔽寄存器        
NCR---包发送期间碰撞次数 
FIFO---环回检测后 查看 FIFO 内容 
CNTR0---帧同步错总计数器 
CNTR1---CRC 错总计数器 
CNTR2---丢包总计数器 
PAR0-5---本节点 MAC 地址 
MAR0-7---多播地址匹配 
*/ 

 2.3 ne2k的DMA内存地址

网卡含有16K字节的RAM,地址为0x4000-0x7fff(指的是网卡上的存储地址,而不是ISA总线的地址,是网卡工作用的存储器),每256 个字节称为一页,共有64页。页的地址就是地址的高8位,页地址为0x40--0x7f 。这16k的ram的一部分用来存放接收的数据包,一部分用来存储待发送的数据包。当然也可以给用户使用。
网卡除了16k(地址0x4000-0x7FFFF)的接收发送存储RAM之外,还有别的RAM,还有一块大小为256字节的RAM,地址为0x0000 -0x00FF,这部分RAM是eeprom 93C46的影像存储(不完全一样),存储的内容的一部分跟93C46存储的是一样的。 网卡在上电的时候将93C46的一部分内容读到这256字节的RAM里。存储是WORD类型,其中地址:
    0x0000-0x000b共12个字节是网卡的物理地址。(网卡的物理地址是6个字节的,为什么要用12字节?因为这12字节是重复存储的。例如网卡物理地址0x52544CC118CF,存储在0x0000-0x000b里是这样的:
    525254544C4CC1C11818CFCF
    我们可以看到单和双的地址存储的是一样的。0x000b后面的地址存储的是生产厂商的代码和产品标识代码,也是单双地址重复存储,这里就不说了。

三、简单的例子

       3.1重置

           在复位端口发送任何数据都可以,然后检测ISR的第七位如果置位就说明成功

       3.2读取RAM的地址

          1.通过CR寄存器设置读写 页数
          2.设置起始开始低地址、高地址

          3.设置去读的开始低地址、高地址

          4.开启命令

         


转载于:https://my.oschina.net/findurl/blog/282687

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值