嵌入式基础–阻塞驱动程序与非阻塞驱动程序

可以采用许多不同的方式来设计和实现驱动程序,但是无论采用哪种方法,都必须预先考虑一个关键特性。阻止还是不阻止。这个决定不仅会影响驾驶员的效率,还会影响系统的实时行为。

到目前为止,阻塞驱动程序是最容易实现的。在阻塞模式下执行时,驱动程序的运行不会受到任何中断或任何可能需要CPU的其他进程的关注。之所以这样称呼阻塞驱动程序,是因为它们没有’不想被打扰。不管系统中可能发生什么其他情况,他们都占用CPU并运行。阻塞驱动程序的经典示例如图1所示。

阻止驱动程序

图1 –阻止驱动程序

该示例显示了需要在串行接口上​​传输的一系列字节。将字节加载到发送缓冲区后,驱动程序将连续轮询发送完成标志,直到发送完成。实际上,在传输数据时,驱动程序阻止了任何其他代码使用微处理器。 s这会浪费CPU周期,并使阻塞驱动程序效率低下。图2显示了阻塞驱动程序序列图的示例。
阻止驱动程序序列图

图2 –阻塞驱动程序序列图

当通过高速接口传输少量数据或在与时间无关的应用程序中使用驱动程序时,阻塞驱动程序很简单并且有意义。当驱动程序执行时间被认为太长并且应用程序的其他部分需要访问微处理器时,可以使用非阻塞驱动程序。非阻塞驱动程序比阻塞驱动程序稍微复杂些,因为它们需要使用中断来通知驱动程序何时需要访问CPU。图3显示了一个非阻塞驱动程序序列图的示例。

非阻塞驱动程序时序图图3 –非阻塞驱动程序序列图

有许多实用的驱动程序设计模式将利用非阻塞架构。例如,通道采样后,模数转换器驱动程序可能会中断。中断将存储测量值并递增到下一个要采样的通道。该行为允许转换器在仍执行应用程序代码的同时在后台采样模拟信号。要了解的重要一点是,通过在驱动程序中使用中断,开发人员可以在微控制器上执行其他代码,而不会浪费宝贵的计算周期。

阻塞驱动程序和非阻塞驱动程序都是完全合法的设计选择。选择采用的方法取决于系统的要求和需求。在许多应用程序中,简单的阻塞驱动程序就足够了。时间紧迫或计算周期短的应用程序将从非阻塞方法中受益匪浅。有关两种方法之间的比较,请参见表1。

复杂度表表1 –驱动程序方法比较

3 thoughts 上 “Embedded Basics –阻塞驱动程序与非阻塞驱动程序”

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.