zephyr筆記 2 1 4 系統執行緒

2021-08-19 00:10:40 字數 885 閱讀 8168

我正在學習 zephyr,乙個很可能會用到很多物聯網裝置上的作業系統,如果你也感興趣,可點此檢視帖子zephyr學習筆記彙總。

系統執行緒是核心在系統初始化時自動產生的執行緒。

核心產生以下系統執行緒。

該執行緒執行核心初始化,然後呼叫應用程式的 main() 函式(如果已定義)。

預設情況下,主線程使用最高配置的可搶占執行緒優先順序(即0)。如果核心未配置為支援可搶占執行緒,則主線程使用配置的最低協作執行緒優先順序(即-1)。

主線程是執行核心初始化或執行應用程式的 main() 函式時的基本執行緒;這意味著如果執行緒中止,則會引發致命的系統錯誤。如果沒有定義 main() ,或者如果它執行然後執行正常返回,主線程會正常終止並且不會引發錯誤。

此執行緒在系統沒有其他工作要執行時執行。如果可能,空閒執行緒啟用板子上的電源管理支援以節省電量;否則,空閒執行緒只是執行乙個「無所事事」迴圈。只要系統正在執行並且永不終止,空閒執行緒就會一直存在。

空閒執行緒始終使用最低配置的執行緒優先順序。如果這使它成為乙個合作的執行緒,空閒執行緒會重複產生cpu以允許應用程式的其他執行緒在需要時執行。

空閒執行緒是乙個重要的執行緒,這意味著如果執行緒中止,會引發致命的系統錯誤。

額外的系統執行緒也可能被派生,這取決於應用程式指定的核心和板配置選項。例如,啟用系統工作佇列會產生乙個系統執行緒來為提交給它的工作項提供服務。 (請參閱工作佇列執行緒。)

核心初始化完成後,應用程式提供的 main() 函式開始執行。 核心不會將任何引數傳遞給該函式。

以下**概述了乙個簡單的 main() 函式。 實際應用使用的功能可以根據需要盡可能地複雜。

void main(void)

}

使用主線程在僅需單個執行緒的應用程式中執行基於執行緒的處理,而不是定義額外的應用程式特定執行緒。

zephyr學習筆記 前言

一直在找適合用於教學嵌入式作業系統。在我心目中,適合用於教學的作業系統應具備如下特點 contiki是非實時作業系統,實時作業系統中的那些機制它幾乎都沒有,用於教學的確是不合適。當初學contiki主要原因是它實現了6lowpan,也是在為將來學華為liteos作準備。之後學ti rtos也是因為大...

zephyr筆記 2 5 4 訊息佇列

訊息佇列是實現簡單訊息佇列的核心物件,允許執行緒和isr非同步傳送和接收固定大小的資料項。我正在學習 zephyr,乙個很可能會用到很多物聯網裝置上的作業系統,如果你也感興趣,可點此檢視帖子zephyr學習筆記彙總。可以定義任何數量的訊息佇列。每個訊息佇列都由其記憶體位址引用。訊息佇列具有以下關鍵屬...

zephyr筆記 2 2 2 定時器

計時器是乙個核心物件,它使用核心的系統時鐘來度量時間的流逝。當達到定時器的指定時間限制時,它可以執行應用程式定義的操作,或者它可以簡單地記錄到期並等待應用程式讀取其狀態。我正在學習 zephyr,乙個很可能會用到很多物聯網裝置上的作業系統,如果你也感興趣,可點此檢視帖子zephyr學習筆記彙總。可以...