当在嵌入式应用程序中使用实时操作系统时,检索许多RTOS功能所需的大量复杂API可能会阻止没有经验的嵌入式开发人员使用C。但是,C++的特性可以很好地在此处使用,以便轻松地生成清晰易读的代码。
如果嵌入式应用程序使用实时操作系统(RTOS)(如Nucleus),则需要了解API(应用程序接口)。API由一系列函数调用组成,允许应用程序代码使用RTOS的函数。这包括任务控制、定时、任务之间的通信、同步和内存管理。由于现代RTOS提供了多种功能,可用视图的数量可以达到数百个。
尽管C是嵌入式系统中使用最广泛的编程语言,但许多开发人员都对使用C++感兴趣。这提供了与RTOS交互的另一种方式。
由于现代RTOS通常具有许多功能,API调用可能非常复杂。当然,可以说,大多数嵌入式开发工程师不需要了解RTOS操作的细节,应该专注于他们的特定专业领域。这里C++是一个很好的帮助。在这篇文章中,将概述如何以一种非常简单的方式利用C++属性的优势来编写更强大、更易读的代码。
在嵌入式代码中,特别是在实时应用程序中,成对的操作是常见的。这些是必须共同执行的补充行动。示例包括启用/禁用中断、锁定/解锁设备以及内存分配/共享。
有时有必要编写需要在不中断的情况下完成的“关键”代码。一种方法是在编码之前禁用中断,然后再次启用它们。只要重新激活实际发生,这就可以了。在C++中,我们可以创建一个类来帮助:
class critical
{
public:
critical()
{
disable_interrupts();
};
~critical()
{
enable_interrupts();
};
};
从该类实例化的对象在创建时会导致中断被禁用,在删除时(例如,当它不再有效时)会导致中断重新激活。例如,嵌入式开发人员可以通过将相应的代码放在具有关键类实例化的本地对象的块中来编码关键部分:
... // normal code
{
critical section;
// critical code goes here
}
... // back to normal code
Object/Variable部分只是一个虚设,只是确保构造函数和析构函数执行的一种方法。但它确实提供了可读代码。