-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Open
Description
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
Labels
No labels