gpt4 book ai didi

embedded - 如何保持中断时间短?

转载 作者:行者123 更新时间:2023-12-04 01:36:47 24 4
gpt4 key购买 nike

在嵌入式编程中听到最多的建议是“保持中断时间短”。

现在我的情况是我的 main() 循环中有一个很长时间运行的任务(将大块数据写入 SDcard),有时可能需要 100 毫秒。所以为了让我的系统保持响应,我将所有其他东西都移到了中断处理程序中。

例如,通常会在中断中处理传入的 UART 数据,然后在 main() 循环中处理传入的命令,然后发回响应。但在我的情况下,命令的整个处理/处理也发生在中断中,因为我的 main() 循环可以(相对)长时间被阻塞。

最佳解决方案是切换到 RTOS,但我没有 RAM。我的设计是否有中断可能很短的替代方案?

最佳答案

传统的方法是让中断安排一个延迟的过程并尽快结束中断。

一旦中断完成,延迟过程的列表就会从最重要到最不重要。

考虑您有主要(较低优先级)操作和两个中断 I1 和 I2 的情况,其中 I2 比 main 重要,但不如 I1 重要。

在这种情况下,假设您正在运行 main 并且 I1 触发。 I1 调度一个延迟过程并向硬件发出 I1 已完成的信号。 I1 的 DPC 现在开始运行。突然 I2 来自硬件。 I2 的中断接替 I1 的 DPC 并调度 I2 的 DPC 并向硬件发出信号表示它已完成。

然后调度器返回到I1的DPC(因为它更重要),当I1的DPC完成时,I2的DPC开始(因为它比main更重要),然后最终返回执行到main。

这种设计允许您安排不同中断的重要性,鼓励您保持较小的中断,并允许您以有序和按优先级排序的方式完成 DPC。

关于embedded - 如何保持中断时间短?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com