0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式USB开发 来源:嵌入式Lee 作者:嵌入式Lee 2023-08-31 08:41 次阅读

转自公众号欢迎关注

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

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

一.前言

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

如下所示

wKgaomTv7TmARPccAAB715-4tFs084.png

二.MAC层回环

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

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

见手册16 Using the Loopback Mode

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

wKgZomTv7TmAemNZAAC08pFmVCw142.png

有以下需要注意的地方:

1.只能使用全双工模式

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

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

wKgaomTv7TqAYgVqAAJNGpil5zU184.png

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

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

wKgZomTv7TuAM6COAACikgoDESI795.png

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

3.不要回环大包

三.PHY层回环

配置PHY寄存器0的bit14为1

wKgaomTv7TuAToDHAAHzsZNacgM975.png

四.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可以自动填充。

wKgZomTv7TuAYlF_AAJHv81cH2A532.png

2.使用wireshark抓包确认

wKgaomTv7TyAeo__AAFrOXIeDvk285.png

wKgZomTv7TyAew9rAAFNcBRl-Zg050.png

五.总结

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

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

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

审核编辑 黄宇

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

    关注

    5068

    文章

    19008

    浏览量

    302905
  • 以太网
    +关注

    关注

    40

    文章

    5371

    浏览量

    171025
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119975
  • 数据流
    +关注

    关注

    0

    文章

    119

    浏览量

    14329
  • 驱动开发
    +关注

    关注

    0

    文章

    130

    浏览量

    12061
收藏 人收藏

    评论

    相关推荐

    基于DWC_ether_qos以太网驱动开发-MAC帧格式介绍

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-MAC帧格式介绍 (qq.com) 一.前言   在以太网
    的头像 发表于 08-30 09:23 2213次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-MAC帧格式介绍

    基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试 一.前言
    的头像 发表于 08-30 09:37 3604次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-MDIO<b class='flag-5'>驱动</b>编写与测试

    基于DWC_ether_qos以太网驱动开发-描述符链表介绍

    of descriptors)。DMA根据描述符链表自动在FIFO和用户指定的缓存之间搬运数据。对于熟悉新思的IP的用户来说,这种套路会有似曾相识的感觉,没错新思的大部分高速IP的数据流都是这么处理的,比如在DWC
    的头像 发表于 08-30 09:39 4349次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-描述符链表介绍

    基于DWC_ether_qos以太网驱动开发-收发驱动编写与调试

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-收发驱动编写与调试 (qq.com) https://mp.wei
    的头像 发表于 09-05 08:47 2208次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-收发<b class='flag-5'>驱动</b>编写与调试

    基于DWC_ether_qos以太网驱动开发-无OS环境移植LWIP

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-无OS环境移植LWIP (qq.com) https://mp.weixin.qq.com/s
    的头像 发表于 09-06 08:40 1491次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-无OS环境移植LWIP

    基于DWC_ether_qos以太网驱动开发-LWIP的堆管理介绍

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-LWIP的堆管理介绍 (qq.com) https://mp.weixin.qq.com/s
    的头像 发表于 09-08 08:40 1199次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的堆管理介绍

    基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试 (qq.com) https://mp.weixin.qq.com/s
    的头像 发表于 09-11 11:20 1910次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-RTOS环境移植LWIP与性能测试

    基于DWC_ether_qos以太网驱动开发-LWIP在PC上进行开发调试

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-LWIP在PC上进行开发调试 (qq.com) https://mp
    的头像 发表于 09-11 08:40 1893次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP在PC上进行<b class='flag-5'>开发</b>调试

    基于DWC_ether_qos以太网驱动开发-LWIP的定时器模块详解

    才会编译,也是默认配置。 2.2数据结构 定时器的核心数据结构是一个单向链表,链表的节点如下 struct sys_timeo { struct sys_timeo * next ; u32_t time;sys_timeout_handler h; void *arg;
    的头像 发表于 09-18 09:33 1550次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的定时器模块详解

    基于DWC_ether_qos以太网驱动开发-LWIP的ICMP模块介绍与PING收发测

    Protocol因特网控制消息协议。 ICMP是网络层协议,IP不可分割的一部分。 ICMP用于报告数据报处理中的错误,比如以下情况下时发送ICMP消息:当数据报无法到达其目的地时,当网关没有转发数据
    的头像 发表于 09-18 17:51 1806次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的ICMP模块介绍与PING收发测

    设计软件核心以太网服务质量数据手册免费下载

    本文描述Synopsys设计软件核心以太网服务质量DWC以太网QoS核心5.10A。DWC以太网
    发表于 10-23 08:00 16次下载
    设计软件核心<b class='flag-5'>以太网</b>服务质量<b class='flag-5'>数据</b>手册免费下载

    DesignWare核心以太网服务质量数据

      本文档介绍Synopsys DesignWare核心以太网服务质量(DWC_Ethernet_qos)核心,5.10a。DWC_Ethernet_qos实现了与MAC层相关的以太网
    发表于 03-31 15:11 3次下载

    基于DWC_ether_qos以太网驱动开发-包过滤

    以太网数据非常多,如果所有数据都接收交给软件去处理软件负载会非常重,所以一般只需要接收发给自己的数据即可
    的头像 发表于 09-02 09:19 1616次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-包过滤

    基于DWC_ether_qos以太网驱动开发-软复位介绍与问题案例

    一般模块都会有软复位的功能,软复位在驱动编写中很重要。一般初始化时执行软复位使得模块进入确定的初始状态以提高可靠性,异常时也可以重新初始化来恢复,所以软复位在驱动中一般是必须要做的动作。
    的头像 发表于 09-02 09:17 1525次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-软复位介绍与问题案例

    基于DWC_ether_qos以太网驱动开发-描述符格式介绍

    前面我们介绍了描述符链表的工作模式,重点是了解环形链表是如何环形的,以及相关的寄存器。驱动编写就需要更进一步,了解描述符的具体内容,即4个描述符的每个字段的含义。
    的头像 发表于 09-04 14:14 2379次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-描述符格式介绍