转自: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)