轉自: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 內核有很多獨特的優秀特性:
- 單地址空間操作系統。將應用程序相關的代碼與內核結合在一起,創建一個在硬件上加載、運行的單一鏡像。應用程序代碼和內核代碼運行在同一個共享地址空間。
- 高度可配置。允許應用程序只包含它們需要的功能。
- 編譯時定義資源。所有系統資源都在編譯時定義,以減小代碼量、增強代碼性能。
- 最小錯誤檢查。提供最小化的運行時錯誤檢查,以減小代碼量、增強代碼性能。提供一個可選的錯誤檢查基礎,以協助應用程序的開發和調試。
- 廣泛的服務。提供了許多耳熟能詳的服務:
- 多線程服務:為基於優先級的、非搶占式的 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: 如果有朋友願意一起翻譯就更好了(tidyjiang@163.com)