基于DWC_ether_qos的以太网驱动开发-数据流验证过程

描述

转自公众号欢迎关注

https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA

基于DWC_ether_qos的以太网驱动开发-数据流验证过程 (qq.com)

一. 前言

以太网驱动的编写与调试是以数据流为导向的,数据流的确认我们可以采取层层推进的方式进行验证。即先验证MAC层,再验证PHY层,再验证接具体的设备比如PC收发数据。

如下所示

驱动开发

二. MAC层回环

MAC层回环可以确认MAC的DMA和PHY接口等是否工作正常.

MAC层回环即MAC的MII接口内部回环,不到外部PHY上,但是也验证到了MAC的PHY接口。

见手册16 Using the Loopback Mode

使能MAC回环需要配置寄存器MAC_Configuration的LM位为1

驱动开发

有以下需要注意的地方:

1.只能使用全双工模式

2.MAC回环也需要RXC时钟,正常RXC时钟来源于PHY,所以要不就使用PHY正常工作,要不就使用其他方式提供RXC时钟。很多时候MAC回环不通就是RXC或者TXC没有,所以先使用示波器确认这两个信号。

对于RTL8211F可以通过如下寄存器查看RXC是否输出

驱动开发

同时确认如下寄存器是否是LPI停止了RXC

最好如下寄存器按照默认配置为0,即LPI时不停止RXC

驱动开发

还有需要注意的是我这里实测是要接上网线到电脑,Link OK状态BMSR的bit2为1,才能MAC回环。否则MAC回环不通。

3.不要回环大包

三. PHY层回环

配置PHY寄存器0的bit14为1

驱动开发

四. ARP测试数据收发

发送ARP请求,电脑会自动返回ARP响应以测试回路。

ARP请求包格式如下

DA 6字节目的MAC地址,设置为全FF广播  
SA 6字节源MAC地址  
Type 2字节Type 0x0806  
HWType 2字节 0x0001  
ProtocolType 2字节0x0800  
HWSize 1字节0x06  
ProtocolSize 1字节0x04  
Opcode 2字节0x0001  
  6字节发送端MAC地址  
  4字节发送端IP地址  
  6字节目的端MAC地址,未知所以全0  
  4字节目的端IP地址  
  18字节填充0,使得包长(DA到FCS)64字节  

ARP响应包,和请求对比Opcode不一样,MAC和IP的源和目的反向。

DA 6字节目的MAC地址  
SA 6字节源MAC地址  
Type 2字节Type 0x0806  
HWType 2字节 0x0001  
ProtocolType 2字节0x0800  
HWSize 1字节0x06  
ProtocolSize 1字节0x04  
Opcode 2字节0x0002  
  6字节发送端MAC地址  
  4字节发送端IP地址  
  6字节目的端MAC地址,未知所以全0  
  4字节目的端IP地址  
  18字节填充0,使得包长(DA到FCS)64字节  

1.注意最低64字节的帧长要求

TDES3的CPC设置为00可以自动填充。

驱动开发

2.使用wireshark抓包确认

驱动开发

驱动开发

五. 总结

1.MAC层回环不通,则确认RXC和TXC是否有时钟,确认DMA_Debug_Status0的收发状态和描述符的相关寄存器(后面会单独详讲收发的调试)。

2.PHY层回环不通则确认PHY是否处于LINK Ok状态,逻辑分析仪监控MII接口等。

3.ARP测试不通,则确认发送包是否填充到了64字节;确认网线,硬件分析仪抓包等。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分