嵌入式開發:軟體技巧 — 在實時作業系統中使用C++

粵嵌教育 發佈 2024-05-01T06:06:46.146440+00:00

當在嵌入式應用程式中使用實時作業系統時,檢索許多RTOS功能所需的大量複雜API可能會阻止沒有經驗的嵌入式開發人員使用C。但是,C++的特性可以很好地在此處使用,以便輕鬆地生成清晰易讀的代碼。

  當在嵌入式應用程式中使用實時作業系統時,檢索許多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部分只是一個虛設,只是確保構造函數和析構函數執行的一種方法。但它確實提供了可讀代碼。


關鍵字: