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

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

3天内不再提示

MMC中断的特点及解决方案

STM32单片机 来源:STM32单片机 作者:STM32单片机 2022-09-08 09:17 次阅读

1、前言

STM32H7 以太网的 MMC(MAC management counter)中断是个有点特别的中断。特殊之处在于它是默认使能。如果我们在代码里不针对 MMC 进行相关处理,就会造成一些异常现象。我们先来看一个真实的客户案例。

2、客户案例

客户使用 STM32H750 作为主控,与其他设备之间进行以太网通讯。

客户在压力测试中发现:

• 设备从第一次通讯开始,累计 7 到 8 天,就会发现 STM32H750 不再响应用户的请求。

• 客户通过使用 IDE 和添加辅助代码可以发现,STM32H750 会不停地进入以太网中断,导致所使用的操作系统无法进行有效的系统调度。

• 问题发生后,客户无论拔下网线或者再次连上网线,STM32H750 依然会不停的进入以太网中断。

• 客户尝试使用 IDE 查看所有以太网寄存器,会发现有时侯能够让系统恢复正常。

3、分析

系统不停的进入以太网中断,说明某个中断在被某种条件下被不停的触发,或者中断触发后没有被处理。进一步,当系统出现异常状况后,拔掉网线,中断依然不断的进入,说明该异常并不需要外界不停的输入,也就说明可能是中断没有被处理所导致。所以,客户首先想到的是补全所有使能的以太网中断的清除代码。然而,客户再次测试,却发现累计 7 到 8 天,问题再次发生。

在这种情况下,为了深刻了解该状况的原因,我们建议客户,抓取异常时的寄存器现场,然后和正常状态时的寄存器进行对比。我们在设备未发生异常前,抓取了以太网的三组寄存器 DMA、 MTL 和 MAC。同时,我们在发生异常后,在同一设备再次进行这三组寄存器的抓取。然后,我们使用文本比较工具,对两次的寄存器进行比较。我们很快就可以发现,MAC 寄存器存在值得关注的差异。MAC 寄存器对比如下:

7b81958c-2f0e-11ed-ba43-dac502259ad0.png

我们可以看到在系统异常情况下下,MMCRXIS 和 MMCIS 被置位了。

我们从参考手册 RM0433 (STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs)(直接搜索关键子 MMCRXIS)中可以看到 MMCRXIS 和 MMCIS 表示系统收到了 MMC 接收中断。

7ba9f158-2f0e-11ed-ba43-dac502259ad0.png

在两次三组寄存器的比较中,我们看到系统生成了 MMC 接收中断(MMC_RX_INTERRUPT 中 RXUCGPIS)。这个符合前文的 MMCRXIS 和 MMCIS 的状态。

7bd3d662-2f0e-11ed-ba43-dac502259ad0.png

从参考手册 RM0433 中我们可以看到,只要 MMC 选项使能,该中断标志就为有效。但是我们并没有使能 MMC 选项,甚至我们都没有使能 MMC 中断,为什么还是有中断产生呢?

4、MMC 中断的特点

MMC 选项其实是默认使能。我们可以从参考手册 RM0433 中看到这一点。

7bf72810-2f0e-11ed-ba43-dac502259ad0.png

在 MMC 默认使能的情况下,什么情况下会产生中断呢?

让我们在 RM0433 里搜索下两次寄存器比较发现的 RXUCGPIS 寄存器:

7c22b836-2f0e-11ed-ba43-dac502259ad0.png

综合这两点,我们可以认为,在长时间以太网收发包之后,MMC 中断几乎一定会发生。这符合客户案例的场景,例如,重现这个问题需要 7 到 8 天。当然从这里我们也可以推断出,我们如果加快测试数据包收发的发送,MMC 中断会发生更早。那么,如何避免在产品应用中这种问题发生呢?

5、解决方案

1.1. 使用 MMC 中断

MMC 中断是个有用的功能。如果我们要使用的话,可以参考 MMC Rx interrupt register (ETH_MMC_RX_INTERRUPT)和 MMC Tx interrupt register (ETH_MMC_TX_INTERRUPT)的描述。我们需要对 MMC 进行一个读的操作。

7c4baf2a-2f0e-11ed-ba43-dac502259ad0.png

7c80bae4-2f0e-11ed-ba43-dac502259ad0.png

这也解释了,客户为什么发现,通过调试器一个一个去读取以太网寄存器,会在某个操作时让异常状态恢复到正常。

1.2. 关闭MMC中断

在很多情况下,MMC 中断对实际产品没有意义。例如,在这个案例中,我们可以选择关闭 MMC中断。这就需要用到 MMC 中断的 mask 寄存器:

• MMC Rx interrupt mask register (ETH_MMC_RX_INTERRUPT_MASK)

• MMC Tx interrupt mask register (ETH_MMC_TX_INTERRUPT_MASK)

我们可以添加以下代码到我们的应用代码里

7cad0450-2f0e-11ed-ba43-dac502259ad0.png

客户反馈找不到 ETH 的定义。其实在 STM32H7 的例程里,我们可以很容易发现 ETH 定义在

STM32CubeRepositorySTM32Cube_FW_H7_V1.8.0DriversCMSISDeviceSTSTM32H7xxIncludestm32h750xx.h:

7cc7c3c6-2f0e-11ed-ba43-dac502259ad0.png

也就是说,如果你的工程代码源自 STM32Cube 例程,你应该能够加入以上代码并且能够成功运行。

在加入上述代码或者类似操作后,客户反馈,再次进行超过 7 天以上的压力测试,系统运行正常。

6、总结

STM32H7 的 MMC 中断需要加以注意,如果不使用 MMC,需要确保它已经关闭;否则在经过长时间网络收发后,系统会产生并非用户所期望的中断,导致系统假死。另外,我们也看到了调试STM32 以太网的常规方式,也就是借助工具而不需要写代码就可以进行寄存器的比较。这种方法值得使用 STM32 以太网的用户进行调试时参考。

审核编辑:汤梓红

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

    关注

    40

    文章

    5354

    浏览量

    170878
  • STM32
    +关注

    关注

    2265

    文章

    10858

    浏览量

    354441
  • MMC
    MMC
    +关注

    关注

    0

    文章

    76

    浏览量

    30444
  • stm32h7
    +关注

    关注

    0

    文章

    37

    浏览量

    1753

原文标题:工程师笔记|STM32H7 以太网的 MMC 中断

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    立体智慧仓储解决方案.#云计算

    解决方案智能设备
    学习电子知识
    发布于 :2022年10月06日 19:45:47

    #硬声创作季 #FPGA Xilinx入门-16 亚稳态现象原理与解决方案-1

    fpgaXilinx解决方案
    水管工
    发布于 :2022年10月09日 01:44:30

    #硬声创作季 #FPGA Xilinx入门-16 亚稳态现象原理与解决方案-2

    fpgaXilinx解决方案
    水管工
    发布于 :2022年10月09日 01:45:00

    #硬声创作季 #FPGA Xilinx入门-16 亚稳态现象原理与解决方案-3

    fpgaXilinx解决方案
    水管工
    发布于 :2022年10月09日 01:45:22

    #硬声创作季 #FPGA Xilinx入门-16 亚稳态现象原理与解决方案-4

    fpgaXilinx解决方案
    水管工
    发布于 :2022年10月09日 01:45:54

    #硬声创作季 #FPGA Xilinx入门-16 亚稳态现象原理与解决方案-5

    fpgaXilinx解决方案
    水管工
    发布于 :2022年10月09日 01:46:24

    #硬声创作季 云计算基础入门:18-rpm痛点及解决方案

    云计算解决方案
    Mr_haohao
    发布于 :2022年10月16日 01:50:33

    MMC卡静电保护方案

    MMC
    上海雷卯电子科技有限公司
    发布于 :2023年04月17日 13:55:24

    MMC卡静电保护方案

    静电MMC静电防护
    leiditechsh
    发布于 :2023年06月22日 20:55:54

    MMC卡有什么特点

    MMC卡是有由美国SANDISK公司和德国西门子公司在1997年共同开发研制的一种多功能存储卡。MMC卡采用7针的接口,主要应用于数码相机、手机和一些PDA产品上,价格相对较贵。
    发表于 04-06 09:02

    室内人员定位解决方案特点和应用

    室内人员定位解决方案特点及应用
    发表于 12-21 07:45

    TI的指纹鉴别开发解决方案有什么特点

    MS320C55x具有什么特点?TI的指纹鉴别开发解决方案有什么特点
    发表于 05-11 06:05

    MAXIM的MAX31865温度检测器解决方案有什么特点

    MAX31865的基本特性是什么MAXIM的MAX31865温度检测器解决方案有什么特点
    发表于 05-11 06:10

    多域SDON解决方案特点有哪些?

    SDON技术的主要优势是什么?多域SDON解决方案特点有哪些?光网络虚拟化作为SDON的关键技术,面临哪些技术难点?
    发表于 05-21 06:10

    STM32H7以太网的MMC中断

    电子发烧友网站提供《STM32H7以太网的MMC中断.pdf》资料免费下载
    发表于 09-20 09:11 0次下载
    STM32H7以太网的<b class='flag-5'>MMC</b><b class='flag-5'>中断</b>