嵌入式開發(fā):軟件技巧 — 在實時操作系統(tǒng)中使用C++
當在嵌入式應用程序中使用實時操作系統(tǒng)時,檢索許多RTOS功能所需的大量復雜API可能會阻止沒有經(jīng)驗的嵌入式開發(fā)人員使用C。但是,C++的特性可以很好地在此處使用,以便輕松地生成清晰易讀的代碼。
如果嵌入式應用程序使用實時操作系統(tǒng)(RTOS)(如Nucleus),則需要了解API(應用程序接口)。API由一系列函數(shù)調(diào)用組成,允許應用程序代碼使用RTOS的函數(shù)。這包括任務控制、定時、任務之間的通信、同步和內(nèi)存管理。由于現(xiàn)代RTOS提供了多種功能,可用視圖的數(shù)量可以達到數(shù)百個。
盡管C是嵌入式系統(tǒng)中使用最廣泛的編程語言,但許多開發(fā)人員都對使用C++感興趣。這提供了與RTOS交互的另一種方式。
由于現(xiàn)代RTOS通常具有許多功能,API調(diào)用可能非常復雜。當然,可以說,大多數(shù)嵌入式開發(fā)工程師不需要了解RTOS操作的細節(jié),應該專注于他們的特定專業(yè)領域。這里C++是一個很好的幫助。在這篇文章中,將概述如何以一種非常簡單的方式利用C++屬性的優(yōu)勢來編寫更強大、更易讀的代碼。
在嵌入式代碼中,特別是在實時應用程序中,成對的操作是常見的。這些是必須共同執(zhí)行的補充行動。示例包括啟用/禁用中斷、鎖定/解鎖設備以及內(nèi)存分配/共享。

有時有必要編寫需要在不中斷的情況下完成的“關鍵”代碼。一種方法是在編碼之前禁用中斷,然后再次啟用它們。只要重新激活實際發(fā)生,這就可以了。在C++中,我們可以創(chuàng)建一個類來幫助:
class critical
{
public:
critical()
{
disable_interrupts();
};
~critical()
{
enable_interrupts();
};
};
從該類實例化的對象在創(chuàng)建時會導致中斷被禁用,在刪除時(例如,當它不再有效時)會導致中斷重新激活。例如,嵌入式開發(fā)人員可以通過將相應的代碼放在具有關鍵類實例化的本地對象的塊中來編碼關鍵部分:
... // normal code
{
critical section;
// critical code goes here
}
... // back to normal code
Object/Variable部分只是一個虛設,只是確保構造函數(shù)和析構函數(shù)執(zhí)行的一種方法。但它確實提供了可讀代碼。