當(dāng)在嵌入式應(yīng)用程序中使用實(shí)時(shí)操作系統(tǒng)時(shí),檢索許多RTOS功能所需的大量復(fù)雜API可能會(huì)阻止沒(méi)有經(jīng)驗(yàn)的嵌入式開(kāi)發(fā)人員使用C。但是,C++的特性可以很好地在此處使用,以便輕松地生成清晰易讀的代碼。
如果嵌入式應(yīng)用程序使用實(shí)時(shí)操作系統(tǒng)(RTOS)(如Nucleus),則需要了解API(應(yīng)用程序接口)。API由一系列函數(shù)調(diào)用組成,允許應(yīng)用程序代碼使用RTOS的函數(shù)。這包括任務(wù)控制、定時(shí)、任務(wù)之間的通信、同步和內(nèi)存管理。由于現(xiàn)代RTOS提供了多種功能,可用視圖的數(shù)量可以達(dá)到數(shù)百個(gè)。
盡管C是嵌入式系統(tǒng)中使用最廣泛的編程語(yǔ)言,但許多開(kāi)發(fā)人員都對(duì)使用C++感興趣。這提供了與RTOS交互的另一種方式。
由于現(xiàn)代RTOS通常具有許多功能,API調(diào)用可能非常復(fù)雜。當(dāng)然,可以說(shuō),大多數(shù)嵌入式開(kāi)發(fā)工程師不需要了解RTOS操作的細(xì)節(jié),應(yīng)該專注于他們的特定專業(yè)領(lǐng)域。這里C++是一個(gè)很好的幫助。在這篇文章中,將概述如何以一種非常簡(jiǎn)單的方式利用C++屬性的優(yōu)勢(shì)來(lái)編寫更強(qiáng)大、更易讀的代碼。
在嵌入式代碼中,特別是在實(shí)時(shí)應(yīng)用程序中,成對(duì)的操作是常見(jiàn)的。這些是必須共同執(zhí)行的補(bǔ)充行動(dòng)。示例包括啟用/禁用中斷、鎖定/解鎖設(shè)備以及內(nèi)存分配/共享。
有時(shí)有必要編寫需要在不中斷的情況下完成的“關(guān)鍵”代碼。一種方法是在編碼之前禁用中斷,然后再次啟用它們。只要重新激活實(shí)際發(fā)生,這就可以了。在C++中,我們可以創(chuàng)建一個(gè)類來(lái)幫助:
class critical
{
public:
critical()
{
disable_interrupts();
};
~critical()
{
enable_interrupts();
};
};
從該類實(shí)例化的對(duì)象在創(chuàng)建時(shí)會(huì)導(dǎo)致中斷被禁用,在刪除時(shí)(例如,當(dāng)它不再有效時(shí))會(huì)導(dǎo)致中斷重新激活。例如,嵌入式開(kāi)發(fā)人員可以通過(guò)將相應(yīng)的代碼放在具有關(guān)鍵類實(shí)例化的本地對(duì)象的塊中來(lái)編碼關(guān)鍵部分:
... // normal code
{
critical section;
// critical code goes here
}
... // back to normal code
Object/Variable部分只是一個(gè)虛設(shè),只是確保構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行的一種方法。但它確實(shí)提供了可讀代碼。