首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在gpio中处理多个事件

在gpio中处理多个事件
EN

Stack Overflow用户
提问于 2019-05-23 22:05:54
回答 1查看 315关注 0票数 -2

我是嵌入式编程的新手,对于任何混淆,我提前道歉。

我需要处理来自连接到gpio的不同设备的多个事件。这些事件需要持续监控。这意味着在生成和处理一个事件后,代码需要不断监视设备上的其他事件。

我理解Linux中的中断和轮询的概念(内核获得中断并将其分派给处理程序,直到epoll的被调用者处于无限循环中,同时(1)-like)。

这对于一次性的、单事件的玩具模型是很好的。在资源有限的嵌入式系统中,比如运行频率为400 the、内存为128mb的AT91SAM9x5,我该怎么办?我认为while(1)-like模式不是最好的选择。我听说过线程池解决方案的好消息,但在每个线程的核心,我们没有找到一段时间(1)吗?

我有什么选择来解决这个问题?

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 03:52:45

对于嵌入式系统,AT91SAM实际上是相当“资源丰富”的,而不是资源有限的。其思路与使用Linux编写相同:设置引脚中断,在中断处理程序中执行一些最小的处理,并可能设置一些全局数据,以便主循环"while (1)“可以检测到这种情况,然后在非中断上下文中处理信息。基本上,您希望中断处理程序尽快完成,以便它可以处理下一个中断。

在大多数系统中,中断可以挂起或嵌套。对于允许嵌套中断的系统,您必须确保它不会破坏仍在执行的前一个中断的上下文。

中断处理程序和主代码之间的实际通信方案取决于您的要求。您甚至可以使用支持此类需求的RTOS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56277058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档