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

学习资料

posted @ 2020-07-29 15:03  Sky&Zhang  阅读(4742)  评论(0编辑  收藏  举报