<网络模型>
OSI七层模型
特点:过于复杂
应用层——表示层——会话层——传输层——网络层——数据链路层——物理层
作用:数据传输的时候按照每层的协议对数据进行封装
Linux四层模型
特点:相对来说简单
(应用层/表示层/会话层) ———传输层———网络层————(数据链路层/物理层)
应用层—————————传输层————IP层—————网络接口层
<网卡硬件结构>
硬件总他架构
注意:网卡的实质就是MAC通过MII接口控制PHY的过程。
网卡中最主要的几个部分:
MAC:数据数据链路层
作用分析:主要负责数据帧的构建,数据差错检验,传输控制
PHY:属于物理层
作用分析:PHY是物理接口收发器,属于物理层,当收到MAC发过来的数据,他就会加上校验码,然后根据物理层的规则对数据进行编码。再发送到传输介质。
MII接口(media independent interface):媒体独立接口,表明MAC独立的情况下,phy都可以独立工作。
<DM9000工作特性>
编程接口:DM9000没有提供可可直访问的编程接口,只是提供了INDEX和数据接口,如果想要 访问其中的寄存器,只能往INDEX中写入偏移地址。旺数据寄存器中写入相应的数据。后面的过程由网卡自动处理。
片选:DM9000是一个独立于CPU系统以外的硬件,想要访问这个硬件,就必须提供片选信号。
DM9000:
2440中INDEX地址:20000300
其中的2000000是DM9000的片选地址。
300来自于其IObase;
注意:(GCS4)
2440中的数据地址:20000304
在2440中数据传输和地址传输,都是使用的引脚(SD0-SD15),在某个时间段使用的是数据还是地址,就使用的一个叫做CMD的引脚来区分。
CMD=1 使用数据端口
CMD=0 使用地址端口
这就是数据地址为什么比地址地址大4的原因。
《网卡驱动》
<片选>
总线宽度和等待状态寄存器
控制字详情(片选4数据宽度)
bank4控制寄存器
作用分析:
用于初始化片选的时序信号
<中断初始化>
由上图可以知道DM90000接的是EINT7中断源 。
由上图可以知道需要将该GPIO引脚配置成中断功能。
GPF引脚控制寄存器
控制字详情
外部中断控制寄存器
EXTINT(externale interrupt control register)
控制字详情(设置成高电平触发)
总的中断屏蔽寄存器
控制字详情(使能EINT4_7)
扩展中断屏蔽寄存器
控制字详情(使能EINT7)
中断状态寄存器
作用分析:
用于表示前一个中断是否处理完成
控制字详情:
总中断状态寄存器:
用于表示前一个中断是否处理完成
控制字详情(注意清零是往里面写1,这一点有点不一样)
<复位网卡>
GPSR控制寄存器偏移地址
控制位详情
GPR控制字详情
NCR控制寄存器偏移地址
控制字详情
<捕获网卡>
网卡信息数据的寄存器偏移地址
产品信息详情
<MACA初始化>
SMCR寄存器
控制字详情
<填充MAC地址>
由上图可知MAC地址是一个唯一的地址,总共分为六个段
DM9000中的屏蔽寄存器
作用分析:
在数据发送的过程中,不想被中断,所以屏蔽中断器,在DM9000内部就有该寄存器,所以不用设置INTMSK这个寄存器
控制字详情
DM9000中数据待发送寄存器
作用分析:
将要发送的数据写入该寄存器中,DM9000就会将该数据写入DM9000的RAM中
发送控制寄存器
作用分析:
用于启动发送
控制字详情
DM9000状态寄存器
作用分析:
用于将清除发送状态
控制字详情
中断状态寄存器
控制字详情