Zephyr 教程 核心基礎( )

2021-07-13 07:27:22 字數 1511 閱讀 3298

本節對 zephyr 核心的概念和功能進行概述。

zephyr 核心的中心元素是微核心和超微核心。zephyr 核心也包含一些列輔助的子系統,比如裝置驅動庫和網路庫。

應用程式由兩種開發模式:同時使用微核心和超微核心;只使用超微核心。

超微核心具有核心的一系列基礎特徵,是乙個高效能、多執行緒的執行環境。超微核心適用於記憶體很少(最少為 2kb)的系統或者簡單的多執行緒系統(比如只有一些列中斷處理和單後台 task)。這樣的系統主要包括:嵌入式感測器 hub、感測器、簡單 led 可穿戴裝置以及商店庫存的標籤。

微核心比超微核心的功能更加豐富。超微核心適用於這樣的系統:記憶體更多(50 ~ 900 kb)、多通訊裝置(比如wifi、低功耗藍芽)、多 task。這樣的系統主要包括:可穿戴裝置、智慧型手錶、物聯網無線閘道器。

zephyr 核心支援的多執行緒有三種上下文。

zephyr 核心通過中斷處理程式(也叫作 isr)處理硬體中斷和軟體中斷。中斷處理比 task 處理和 fiber 處理具有更高的優先順序,因此 isr 在任何時候都可以搶占當前正在執行的 task 或者 fiber。核心支援中斷巢狀,即高優先順序的 isr 能夠中斷正在執行的低優先順序的 isr。

超微核心支援少量中斷源(比如硬體時鐘裝置、系統控制台裝置)的 isr。其它中斷源的 isr 由裝置驅動或者應用程式**提供。每個 isr 可以在編譯時註冊,也可以在核心執行時動態註冊。zephyr 支援的 isr 完全由純 c 語言完成的,不過也允許使用組合語言完成 isr。

有時候,isr 自己不能及時地完成相關處理,核心就使用同步機制和資料傳遞機制將剩下的處理工作轉移給 fiber 或者 task。

相關章節:

核心時鐘基於乙個被叫做滴答的可配置時鐘單元。乙個 64 位元的系統時鐘記錄了核心開始啟動到現在為止的滴答數。

核心也提供了乙個解析度更高的硬體時鐘,可用於測量在乙個滴答內的時間間隔。

超微核心允許 fiber 或者執行緒使用系統時鐘執行基於時間的處理工作。這主要借助於支援超時引數的 api 或者定時器。這種定時器能夠在指定的滴答數後設定時間已到期。

zephyr 核心提供了四種目標,允許不同上下文間進行同步。

微核心提供的同步目標如下。這些目標主要用於 task,如果被用於 fiber 和 isr,它們的功能將受到限制。

超微核心提供的同步目標如下。該目標主要用於 fiber,如果被用於 task 和 isr,它們的功能將受到限制。

zephyr 核心提供了六種目標,以使不同上下文進行資料交換。

微核心提供的目標如下。這些目標被設計用於 task,不能被用於 fiber 和 isr。

超核心提供的目標如下。這些目標被設計用於 fiber,不能被用於 task 和 isr。

由於要求所有的系統資源在編譯時就定義好,因此 zephyr 核心只提供了簡單的動態記憶體分配管理。該動態記憶體分配機制可替換標準的 c 庫呼叫,比如mallocfree(儘管有一些差異)。

微核心提供了兩種目標,允許 task 動態地分配記憶體快。這些目標不能用於 fiber 和 isr。

Zephyr 教程 應用程式基礎

通過建立包含下列檔案的目錄定義 zephyr 應用程式 核心配置檔案 應用程式通常提供乙個配置檔案 conf 以指定乙個或多個核心配置選項。如果沒有提供配置檔案,將使用應用程式存在的配置選項。如果應用程式也沒有提供配置選項,將使用核心預設的選項。微核心應用程式通常還提供乙個額外的字尾為.mdef的配...

Zephyr 教程 設定 Linux 開發環境

本節講解如何設定 linux 開發環境。完成這些步驟後,您就能夠在下列 linux 發行版上編譯 執行自己的 zephyr 應用程式了 使用 apt get 或者 dnf 進行安裝。在 ubuntu 中進行安裝需要的包 sudo apt get install git make gcc gcc mu...

《電子基礎與維修工具核心教程》 導讀

前言最近幾年,隨著科技的發展及人們生活水平的提高,計算機已成為人們生活與工作中的必需品,計算機的普及,必然要帶動其維修 維護市場的蓬勃發展,因此有越來越多的人投入到計算機維修這個行業。該行業具有投資小 利潤大 風險低等特點,因此,開一家計算機維修店,成為了很多年輕人自主創業的選擇。本書作者在自己十多...