### RT-Thread Version v5.0.2 ### Hardware Type/Architectures all ### Develop Toolchain Microsoft VScode ### Describe the bug **sdio irq的线程处理问题** - mmcsd有个[irq thread](https://github.com/RT-Thread/rt-thread/blob/f556099146dd50f770c609711d48e17a201952bc/components/drivers/sdio/dev_sdio.c#L1016)处理sdio中断的信号量,在发起信号量之前[关闭了sdio中断](https://github.com/RT-Thread/rt-thread/blob/f556099146dd50f770c609711d48e17a201952bc/components/drivers/sdio/dev_sdio.c#L1181),irq线程收到信号量就[产生回调](https://github.com/RT-Thread/rt-thread/blob/f556099146dd50f770c609711d48e17a201952bc/components/drivers/sdio/dev_sdio.c#L1039),回调完成后又[开启了sdio中断](https://github.com/RT-Thread/rt-thread/blob/f556099146dd50f770c609711d48e17a201952bc/components/drivers/sdio/dev_sdio.c#L1052)。 - 但是一般回调时也是发起信号量(不是直接处理数据,例如[whd](https://github.com/Evlers/rt-thread_wifi-host-driver)),而是让应用线程(whd)来读取数据,等应用线程(whd)读取完数据才会清除中断。 - 这就有个问题,irq线程执行完回调就开启sdio中断,应用线程(whd)还没读数据,没清除这个中断标志,会导致频繁的触发中断,触发中断后mmcsd的irq线程就会锁定sdio来读取中断标志位。 然后应用线程(whd)就一直互斥没办法读取数据。或者频繁触发sdio中断来读取中断标志位导致通讯错误。 - 目前在英飞凌Edgi开发板上是注释了mmcsd的sdio中断控制[(cy_sdio_enable_sdio_irq)](https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/blob/3dedcb9f244bc3b79c9065c304be3677a798b5ab/libraries/HAL_Drivers/drv_sdio.c#L654),在下一次数据交互完成后再次开启sdio中断[(cy_sdio_card_irq_handler)](https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/blob/3dedcb9f244bc3b79c9065c304be3677a798b5ab/libraries/HAL_Drivers/drv_sdio.c#L695)来解决的。 **有没有更优解的方案来优化这sdio irq呢?** ### Other additional context _No response_
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