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 應用程序的程序和文件。

學習資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM