2

在我的申请中没有。的设备(相机、A/D、D/A 等)正在与服务器通信。我有两个选项可以节省设备的功耗,因为并非所有设备都必须始终工作:

1- 进行轮询,即每个设备定期继续查看文件的内容,并在其中获得唤醒或睡眠的值。如果它发现唤醒,那么它就会醒来并完成它的工作。

在这种情况下,实际上设备将处于睡眠状态,但驱动程序将处于活动状态并进行轮询。

2-使用中断,我可以在需要时唤醒设备。

我无法决定走哪条路以及为什么。有人可以在这方面启发我吗?

平台:Windows 7,32 位,在 Intel Core2Duo 上运行

4

3 回答 3

6

轮询本质上是不精确的。你的目标精度越高,轮询就越浪费。理想情况下,仅当您无法对中断进行某些操作时才应考虑轮询;否则,应该首选使用中断。

此规则的一个例外是,如果您想有意地“限制”某事,例如,当您可能每秒获得多个事件,但您希望每分钟只对一个事件做出反应时。在这种情况下,您经常使用轮询和中断的组合,其中中断设置一个标志,轮询完成真正的工作,但仅在设置标志时。

于 2012-06-07T10:26:40.327 回答
2

如果要定期唤醒您的设备,我会以适当的频率进行轮询(这总是更容易设置,因为它只是在看一点)。如果唤醒事件是异步的,我宁愿选择中断驱动的架构,尽管有代码和电子开销。

于 2012-06-07T12:02:16.227 回答
0

好吧,这取决于您的硬件和软件结构以及软件的复杂性。选择中断机制而不是轮询总是更好。

与轮询一样,您的控制器将忙于不断地轮询硬件以检查所需的值是否可用。

虽然使用中断机制将释放控制器以执行其他任务,并且当中断出现时,您的 ISR 可以执行特定需要的任务。

于 2012-06-13T06:22:28.183 回答