zephyr概述
以下的截图,是为SDK中的代码,支持的板子和网络上描述的一样。
Zephyr 基于linux和wind river是一款小型且可伸缩的实时操作系统,尤其适用于资源受限的系统,可支持多种架构; Zephyr 基于已使用十多年、久经实际应用考验的 Wind River 代码库而构建。扩展原始代码包括几个关键步骤。首先,通过重构提升模块化水平。在编译时,开发人员可按需采用或删除任何子系统以适应硬件。硬件包括“最底端子 Linux 设备”、“成本最低的芯片”等。运行 Zephyr 的初始硬件产品包括低端的 Arduino 101 和英特尔 Quark D2000,以及高端的第二代英特尔 Galileo。
物联网的架构主要分为三层:
- 感知层:采集周围环境数据的嵌入式设备
- 网络层:用于传输感知层采集的数据的网络,比如因特网、3G/4G网络,甚至将来的5G网络等
- 应用层:处理数据,即数据分析、处理
Zephyr OS 就是运行在感知层的嵌入式设备之上的操作系统。
下图1是ATS3503的代码根目录结构:
图1
图2:
Zephyr 支持多架构,包括:ARM Cortex-M、Intel x86 和 ARC。在 这里 可以查看 Zephyr 支持的所有平台。
与其它微型内核相比,Zephyr 内核有很多独特的优秀特性:
1. 单地址空间操作系统。将应用程序相关的代码与内核结合在一起,创建一个在硬件上加载、运行的单一镜像。应用程序代码和内核代码运行在同一个共享地址空间。
2. 高度可配置。允许应用程序只包含它们需要的功能。
3. 编译时定义资源。所有系统资源都在编译时定义,以减小代码量、增强代码性能。
4. 最小错误检查。提供最小化的运行时错误检查,以减小代码量、增强代码性能。提供一个可选的错误检查基础,以协助应用程序的开发和调试。
5. 广泛的服务。提供了许多耳熟能详的服务:
1. 多线程服务:为基于优先级的、非抢占式的 fiber 和基于优先级的、抢占式的 task 提供可选的时间片。
2. 中断服务:在编译时、运行时均可注册中断处理函数。
3. 线程间同步服务:包括二元信号量、计数信号量和互斥信号量。
4. 线程间数据传递服务:包括基本消息队列、增强型消息队列和字节流。
5. 内存分配服务:动态地分配固定尺寸、可变尺寸的内存块。
6. 电源管理服务:包括无滴答 CPU 空转和高级 CPU 空转