【发布时间】:2013-01-17 21:25:33
【问题描述】:
嵌入式编程中最常听到的建议是“保持中断短”。
现在我的情况是,我的 main() 循环中有一个运行时间很长的任务(将大块数据写入 SD 卡),有时可能需要 100 毫秒。所以为了让我的系统保持响应,我把所有其他的东西都移到了中断处理程序中。
例如,通常会在中断中处理传入的 UART 数据,然后在 main() 循环中处理传入的命令,然后发回响应。但在我的情况下,命令的整个处理/处理也发生在中断中,因为我的 main() 循环可以(相对)长时间被阻塞。
最佳解决方案是切换到 RTOS,但我没有 RAM。我的设计是否有替代方案可以缩短中断?
【问题讨论】:
-
你有多少内存? 16K 对 RTOS 来说很好,如果你不会因为太多的线程/堆栈而发疯,也许是 8K。在我的系统上,最简单的“Flash LED”线程只需要 12 个字的堆栈(两个睡眠调用)。
-
8k 并且您使用的是 RTOS?我不想开始争论,但我还没有确信需要任何 RTOS,到值得拥有一个操作系统的时候,有一个可以在硬件上运行的 linux 版本。
-
@JohnU 他说 最佳 解决方案是 RTOS,但他没有内存
标签: embedded arm interrupt firmware interrupt-handling