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

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

3天内不再提示

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

嵌入式USB开发 来源:嵌入式USB开发 作者:嵌入式USB开发 2023-09-02 09:17 次阅读

一.前言

一般模块都会有软复位的功能,软复位在驱动编写中很重要。一般初始化时执行软复位使得模块进入确定的初始状态以提高可靠性,异常时也可以重新初始化来恢复,所以软复位在驱动中一般是必须要做的动作。对应复杂的IP其复位过程其实是很复杂的,有很多前提和依赖,对于驱动编写来说也有一些需要注意的地方甚至是有一些坑,所以本篇单独来讲讲DWC_ether_qos的软复位。如果你有遇到DWC_ether_qos软复位的问题,建议可以看看本文章,说不定就有你的问题的答案!

二.DWC_ether_qos的软复位

软复位的作用简单的可以总结为复位控制逻辑(比如状态机等),和相关的资源(比如寄存器值恢复到默认状态等)。

DWC_ether_qos的软复位参考手册P1013,偏移0x1000的寄存器DMA_Mode寄存器的位0,SWR的解释。

图片

从以上描述可以看出其实信息量是很多的,换句话说需要注意的地方是很多的,以下做一个总结

1.触发软复位,MAC和DMA控制器会复位DMA,MTL,MAC这几个子系统的内部逻辑和相关寄存器。

2.该位是自清零的,即软件写1触发软复位,硬件复位完成清零。

3.必须等到DWC_ether_qos所有的时钟域都完成复位才会完成,才会清零该位。

4.该位为0之前,即为1时不能写DWC_ether_qos的任何寄存器。

  1. 该位置位后,不能立马去回读该位,需要等待4个CSR周期后才能读 ,因为状态更新需要时间(具体的原因就涉及具体的总线协议了)。这里是驱动编写的一个容易掉坑的地方需要注意。立即读可能读出0认为复位完成了(实际复位还未完成)马上去操作其他寄存器会导致不可预知结果,这种结果是随机的导致的现象更可能是随机加随机。
  2. 复位需要PHY的所有input时钟比如RXC有效 ,这一点也是驱动编写容易掉坑的地方,如果RXC引脚映射错误,PHY未就绪,都可以导致没有RXC时钟而不能完成复位。如果你遇到不能软复位的问题第一步就查这里吧!
  3. 复位完成时间是不确定的 ,需要等到所有时钟域完成复位才算,所以要等最慢的那个完成才算。底层接口最好只提供set_rst和get_rst两个接口,由上层去调用该两个接口实现等待查询操作。因为时间不定,所以调用者可以使用线程等待,超时重试等处理,而如果底层接口使用指令死等则效率太低,会占用CPU,并且也不知道设置死等多长时间合适(指令死等时间受主频等影响,使用定时器则需要占用硬件外设且不具备可移植性)。

三.软复位不能完成的案例

我驱动开发时就遇到过不能软复位的案例,后面调试发现一个是RXC引脚映射错误导致的,另外一个就是PHY没有输出RXC的时钟导致的,所以如果你遇到类似问题先查上述原因吧。

另外触发复位后等待4个CSR时钟以上再去查询这点也很重要,因为这个很可能导致随机问题,也就是你可能立马回读读到的是1,那么继续等待为0复位完成,没问题。也可能是立马读到0,没有复位你认为复位了继续去操作寄存器,此时操作寄存器操作行为不可预料。所以很可能导致随机异常,并且很难定位。这个时候你可能会遇到白天有问题,晚上没问题(因为温度导致读写时序细微差异可能导致立马回读的状态不一样),重新编译一下运行有问题,再重新编译一下运行没问题,加个打印有问题,去掉又没问题等各种诡异的问题,此时你可能会觉得这是神学了,只能烧香拜佛了。实际上任何问题都有确定的原因的只是你不知道而已,所以驱动开发者遇到问题从来不说神学,也从来不瞎试,而是从原理分析,看手册,梳理原理,梳理路径,反推,测信号,逐步推进等方式去定位根本原因。这就是驱动开发与一般开发的区别。如果还找不到原因,上厕所时翻翻手册吧,你可能会有所发现。随手翻手册,手册当小说看,是驱动开发的必备素养,基本上我每开发一个IP驱动,至少手册的所有文字都要看一遍以上,尤其是标注*号的,note的,其他就是各个模块调试时详读具体章节加翻阅,寄存器至少是每一个寄存器的每一个bit都要看一遍的。当然开发阶段熟读手册,勘误手册,积累,多调试不通配置的效果等很重要,这样才可能遇到问题知道查哪,才有可能上厕所时灵感迸发。

四.总结

驱动开发需要注重细节,了解原理很重要,手册一定要熟读,经验积累也很重要,一定要充分调试各个功能,多去尝试不同配置对应的不同效果。

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

    关注

    52

    文章

    8236

    浏览量

    146353
  • 嵌入式
    +关注

    关注

    5082

    文章

    19123

    浏览量

    305140
  • 以太网
    +关注

    关注

    40

    文章

    5424

    浏览量

    171698
  • 寄存器
    +关注

    关注

    31

    文章

    5343

    浏览量

    120345
  • PHY
    PHY
    +关注

    关注

    2

    文章

    303

    浏览量

    51741
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27539
收藏 人收藏

    评论

    相关推荐

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

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

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

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试 一.前言
    的头像 发表于 08-30 09:37 3766次阅读
    基于<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以太网驱动开发-描述符链表介绍

    本文转自公众号欢迎关注 一.描述符概述 1.0 前言 对于DWC Ethernet QoS驱动的编写来说,初始化完成之后,核心操作就是DMA的描述符链表配置(linked list
    的头像 发表于 08-30 09:39 4534次阅读
    基于<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以太网驱动开发-数据流验证过程

    转自公众号欢迎关注 https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA 基于DWC_ether_qos以太网驱动开发-数据流验证过程
    的头像 发表于 08-31 08:41 2053次阅读
    基于<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 2340次阅读
    基于<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 1612次阅读
    基于<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.wei
    的头像 发表于 09-08 08:40 1318次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的堆管理<b class='flag-5'>介绍</b>

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

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试 (qq.com) https://mp.weixin.qq.com/s
    的头像 发表于 09-11 11:20 2129次阅读
    基于<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 2039次阅读
    基于<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的ARP模块介绍

    TCP/IP通讯第一步需要先调通ARP,否则TCP/IP包都不知道MAC地址要发给谁。这一篇来基于LWIP的ARP实现进行相关的分析。
    的头像 发表于 09-18 09:34 1915次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的ARP模块<b class='flag-5'>介绍</b>

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

    本文转自公众号欢迎关注 https://mp.weixin.qq.com/s/6MTNop3zBKdQ-gabbWo63Q 一. 前言 ICMP即Internet Control Message Protocol因特网控制消息协议。 ICMP是网络层协议,IP不可分割的一部分。 ICMP用于报告数据报处理中的错误,比如以下情况下时发送ICMP消息:当数据报无法到达其目的地时,当网关没有转发数据报的缓冲能力时,以及当网关可以指示主机在较短的路由上发送数据时。 互联网协议的设计并不是绝对可靠的。ICMP这些控制消息的目的是提供有关通信环境中问题的反馈
    的头像 发表于 09-18 17:51 2007次阅读
    基于<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模块<b class='flag-5'>介绍</b>与PING收发测

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

    本文描述Synopsys设计软件核心以太网服务质量DWC以太网QoS核心5.10A。DWC以太网
    发表于 10-23 08:00 16次下载
    设计软件核心<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 1790次阅读
    基于<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 2663次阅读
    基于<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>