天天看點

Zephyr OS 基礎篇:系統簡介Zephyr OS 簡介Zephyr OS 核心架構Zephyr 的特征Zephyr OS 源碼結構學習資料

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 應用程式的程式和檔案。

學習資料

  • Zephyr Project 官網
  • Zphyr OS 源碼

    源碼是最好的學習資料,這是毋容置疑的。

    擷取源碼:

    git clone https://gerrit.zephyrproject.org/r/zephyr

  • Zephyr OS 文檔

    最新版 1.4.0 英文文檔:

      zephyr project 文檔 - 英文版

    我計劃将其翻譯成中文,已托管到 github:

      zephyr project 文檔 - 中文版 - 源碼

    文檔源碼是.rst格式的,github解析得不好,是以我将其制作為html網頁,放到了我的獨立部落格裡了:

      zephyr project 文檔 - 中文版 - html 網頁

    PS: 如果有朋友願意一起翻譯就更好了([email protected])

繼續閱讀