Skip to content

[Bug] mmcsd sdio irq thread #11148

@Evlers

Description

@Evlers

RT-Thread Version

v5.0.2

Hardware Type/Architectures

all

Develop Toolchain

Microsoft VScode

Describe the bug

sdio irq的线程处理问题

  • mmcsd有个irq thread处理sdio中断的信号量,在发起信号量之前关闭了sdio中断,irq线程收到信号量就产生回调,回调完成后又开启了sdio中断

  • 但是一般回调时也是发起信号量(不是直接处理数据,例如whd),而是让应用线程(whd)来读取数据,等应用线程(whd)读取完数据才会清除中断。

  • 这就有个问题,irq线程执行完回调就开启sdio中断,应用线程(whd)还没读数据,没清除这个中断标志,会导致频繁的触发中断,触发中断后mmcsd的irq线程就会锁定sdio来读取中断标志位。 然后应用线程(whd)就一直互斥没办法读取数据。或者频繁触发sdio中断来读取中断标志位导致通讯错误。

  • 目前在英飞凌Edgi开发板上是注释了mmcsd的sdio中断控制(cy_sdio_enable_sdio_irq),在下一次数据交互完成后再次开启sdio中断(cy_sdio_card_irq_handler)来解决的。

有没有更优解的方案来优化这sdio irq呢?

Other additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions