我是嵌入式编程的新手,对于任何混淆,我提前道歉。
我需要处理来自连接到gpio的不同设备的多个事件。这些事件需要持续监控。这意味着在生成和处理一个事件后,代码需要不断监视设备上的其他事件。
我理解Linux中的中断和轮询的概念(内核获得中断并将其分派给处理程序,直到epoll的被调用者处于无限循环中,同时(1)-like)。
这对于一次性的、单事件的玩具模型是很好的。在资源有限的嵌入式系统中,比如运行频率为400 the、内存为128mb的AT91SAM9x5,我该怎么办?我认为while(1)-like模式不是最好的选择。我听说过线程池解决方案的好消息,但在每个线程的核心,我们没有找到一段时间(1)吗?
我有什么选择来解决这个问题?
提前谢谢你!
发布于 2019-05-24 03:52:45
对于嵌入式系统,AT91SAM实际上是相当“资源丰富”的,而不是资源有限的。其思路与使用Linux编写相同:设置引脚中断,在中断处理程序中执行一些最小的处理,并可能设置一些全局数据,以便主循环"while (1)“可以检测到这种情况,然后在非中断上下文中处理信息。基本上,您希望中断处理程序尽快完成,以便它可以处理下一个中断。
在大多数系统中,中断可以挂起或嵌套。对于允许嵌套中断的系统,您必须确保它不会破坏仍在执行的前一个中断的上下文。
中断处理程序和主代码之间的实际通信方案取决于您的要求。您甚至可以使用支持此类需求的RTOS。
https://stackoverflow.com/questions/56277058
复制相似问题