1. 程式人生 > 實用技巧 >Zephyr OS 基礎篇:系統簡介【轉】

Zephyr OS 基礎篇:系統簡介【轉】

轉自:https://blog.csdn.net/tidyjiang/article/details/52058889

Zephyr OS 相關學習學習資料,請關注我的github:
https://github.com/tidyjiang8/

Zephyr OS 簡介

  Zephyr 是一個用於物聯網的開源作業系統,受到 Linux 基金會支援(參考 這裡),在今年二月份剛釋出 1.0 版本,目前開發到 1.4 版本。Zephyr 的目標非常遠大,即一統物聯網作業系統。
  
  Zephyr 目前還處於初期階段,專案開發非常活躍,程式碼託管在 Linux 基金會自己搭建的 Girret 伺服器上,而不是在 Github 上。也正是由於它還是在初期階段,所以我對它充滿了期望。這是機遇呀!!

  
  左手一個Contiki,右手一個 Zephyr,一直在想 Zephyr 相對於 Contiki 在哪些方面有優勢,但這不是現在的我能說清楚的,因為對兩個作業系統都不熟。不過發現一個有意思的地方:Zephyr 的 ip 協議棧是對 Contiki 協議棧的移植。除了 ip 協議棧外,Zephyr中還包括了低功耗 Bluetooth 協議棧。

Zephyr OS 核心架構

  Zephyr 的中文翻譯是“和風;西風;輕薄織物”,由此可以看出 zephyr 是一個輕量級的作業系統。事實上,它提供了兩種核心:微核心 microkernel 和超微核心 nanokernel,使用者可以在編譯時通過配置檔案配置使用哪種核心:同時使用微核心和超微核心,或者只使用超微核心。

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

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

Zephyr 的特徵

  Zephyr 核心是一個微型核心,被設計用於資源受限的系統:從簡單的嵌入式感測器、可穿戴 LED,到複雜的智慧手錶、物聯網無線閘道器。

  Zephyr 支援多架構,包括:ARM Cortex-M、Intel x86 和 ARC。在 這裡 可以檢視 Zephyr 支援的所有平臺。

  與其它微型核心相比,Zephyr 核心有很多獨特的優秀特性:

  1. 單地址空間作業系統。將應用程式相關的程式碼與核心結合在一起,建立一個在硬體上載入、執行的單一映象。應用程式程式碼和核心程式碼執行在同一個共享地址空間。
  2. 高度可配置。允許應用程式只包含它們需要的功能。
  3. 編譯時定義資源。所有系統資源都在編譯時定義,以減小程式碼量、增強程式碼效能。
  4. 最小錯誤檢查。提供最小化的執行時錯誤檢查,以減小程式碼量、增強程式碼效能。提供一個可選的錯誤檢查基礎,以協助應用程式的開發和除錯。
  5. 廣泛的服務。提供了許多耳熟能詳的服務:
    • 多執行緒服務:為基於優先順序的、非搶佔式的 fiber 和基於優先順序的、搶佔式的 task 提供可選的時間片。
    • 中斷服務:在編譯時、執行時均可註冊中斷處理函式。
    • 執行緒間同步服務:包括二元訊號量、計數訊號量和互斥訊號量。
    • 執行緒間資料傳遞服務:包括基本訊息佇列、增強型訊息佇列和位元組流。
    • 記憶體分配服務:動態地分配固定尺寸、可變尺寸的記憶體塊。
    • 電源管理服務:包括無滴答 CPU 空轉和高階 CPU 空轉。

Zephyr OS 原始碼結構

  Zephyr 原始碼樹的頂層目錄如下所述,每個頂層目錄都包括一級或多級子目錄。

arch
  架構相關的超微核心程式碼和平臺程式碼。Zephyr 支援的每個架構都有一個子目錄,且這些子目錄還包括下面子目錄:

  • 架構相關的超微核心原始檔。
  • 架構相關的超微核心的私有 API 的標頭檔案。
  • 平臺相關的程式碼。

boards
  board 相關的程式碼和配置檔案。
doc
  Zephyr 文件相關的材料和工具。
drivers
  裝置驅動程式碼。
include
  所有(不包括 lib 目錄)公有 API 的標頭檔案。
kernel
  微核心程式碼,以及架構無關的超微核心程式碼。
lib
  庫程式碼,包括最小的 C 庫。
misc
  雜項程式碼。
net
  網路相關的程式碼,包括藍芽協議棧和網路協議棧。
samples
  微核心、超微核心、藍芽協議棧和網路協議棧的應用程式舉例。
tests
  核心各個特性的測試程式碼。
scripts
  用於編譯、測試 Zephyr 應用程式的程式和檔案。

學習資料