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 核心有很多獨特的優秀特性:
- 單位址空間作業系統。将應用程式相關的代碼與核心結合在一起,建立一個在硬體上加載、運作的單一鏡像。應用程式代碼和核心代碼運作在同一個共享位址空間。
- 高度可配置。允許應用程式隻包含它們需要的功能。
- 編譯時定義資源。所有系統資源都在編譯時定義,以減小代碼量、增強代碼性能。
- 最小錯誤檢查。提供最小化的運作時錯誤檢查,以減小代碼量、增強代碼性能。提供一個可選的錯誤檢查基礎,以協助應用程式的開發和調試。
- 廣泛的服務。提供了許多耳熟能詳的服務:
- 多線程服務:為基于優先級的、非搶占式的 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])