Zephyr 简介

  Zephyr是一个面向物联网的嵌入式实时操作系统(RTOS),是Linux基金会旗下的一个项目,具有以下特点:

1.安全的,灵活、高可扩展性,支持多种硬件平台(ARM、ARC、X86、xtensa、nois2、riscv32);

2.基于Apache 2.0许可,完全开源,代码托管在github

3.主要用C语言编写,代码风格、框架与Linux十分相似;

4.支持多种开发环境(Windows、Linux、MacOS);

以下的截图,是为SDK中的代码,支持的板子和网络上描述的一样。

Zephyr 基于linux和wind river是一款小型且可伸缩的实时操作系统,尤其适用于资源受限的系统,可支持多种架构; Zephyr 基于已使用十多年、久经实际应用考验的 Wind River 代码库而构建。扩展原始代码包括几个关键步骤。首先,通过重构提升模块化水平。在编译时,开发人员可按需采用或删除任何子系统以适应硬件。硬件包括“最底端子 Linux 设备”、“成本最低的芯片”等。运行 Zephyr 的初始硬件产品包括低端的 Arduino 101 和英特尔 Quark D2000,以及高端的第二代英特尔 Galileo。

物联网的架构主要分为三层:
- 感知层:采集周围环境数据的嵌入式设备
- 网络层:用于传输感知层采集的数据的网络,比如因特网、3G/4G网络,甚至将来的5G网络等
- 应用层:处理数据,即数据分析、处理
Zephyr OS 就是运行在感知层的嵌入式设备之上的操作系统。

下图1是ATS3503的代码根目录结构:

Zephyr 支持多架构,包括:ARM Cortex-M、Intel x86 和 ARC。在 这里 可以查看 Zephyr 支持的所有平台。
与其它微型内核相比,Zephyr 内核有很多独特的优秀特性:
1.    单地址空间操作系统。将应用程序相关的代码与内核结合在一起,创建一个在硬件上加载、运行的单一镜像。应用程序代码和内核代码运行在同一个共享地址空间。
2.    高度可配置。允许应用程序只包含它们需要的功能。
3.    编译时定义资源。所有系统资源都在编译时定义,以减小代码量、增强代码性能。
4.    最小错误检查。提供最小化的运行时错误检查,以减小代码量、增强代码性能。提供一个可选的错误检查基础,以协助应用程序的开发和调试。
5.    广泛的服务。提供了许多耳熟能详的服务:

1.    多线程服务:为基于优先级的、非抢占式的 fiber 和基于优先级的、抢占式的 task 提供可选的时间片。
2.    中断服务:在编译时、运行时均可注册中断处理函数。
3.    线程间同步服务:包括二元信号量、计数信号量和互斥信号量。
4.    线程间数据传递服务:包括基本消息队列、增强型消息队列和字节流。
5.    内存分配服务:动态地分配固定尺寸、可变尺寸的内存块。
6.    电源管理服务:包括无滴答 CPU 空转和高级 CPU 空转

zephyr的主体开发团队是linux Foundation与Intel由于是开源项目多数的使用到源代码结合自身产品的公司也会有部分源代码贡献,包括但不限于我们熟悉的国内嵌入式的正点原子,恩智浦,乐鑫ESP等对其源代码都有贡献

Zephyr官网
Zephyr Project - Zephyr Project
https://zephyrproject.org/

主要的先通过团队内部放在YouTube上的公开视频了解zephyr创立的原因,项目整体开发的参与者通过这样的了解

还有加入zephyr的官方维护的Discord社交软件的频道了解项目架构起来的细节

git history也是不错的方式

由于是大型的rtos项目里面就会包含很多分支结构

官网标题栏的都浏览一遍加入Discord的点击右边的社交聚合的邮件旁边的那一个

平常还可以在发现使用中的问题的时候对其发布bug也叫issue在给git hub对应的地方发布注意遵循zephyr社区的issue指导,因为有对应的人会回复你的问题(就像国内的淘宝客服一样) 


Issues · zephyrproject-rtos/zephyr · GitHub
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. - Issues · zephyrproject-rtos/zephyr
https://github.com/zephyrproject-rtos/zephyr/issues

 在这里可以提出使用中出现合问题,由于使用人数很多zephyr的社区一直很活跃

这也是zephyr更有前景的主要原因在Intel的号召下比以往的freertos ucos等都更加的活跃

并且有与主体代码规范遵循GNU,他们本身就是Linux源码的核心贡献者所以更加具有经验

这也是使得zephyr更加成功的又一个重要的因素
 

### Zephyr项目中的YAML配置 #### 配置文件概述 在Zephyr项目中,`CMakeLists.txt` 和 `prj.conf` 文件是最常见的构建和配置入口。然而,在某些场景下也会使用到 YAML 格式的配置文件来简化特定功能模块的设置或是作为外部数据源读取。 对于基于Rust的应用程序集成而言,除了常规的 C/C++ 构建体系外,还需要处理与 Cargo(Rust 的包管理器)有关联的部分[^1]。Cargo 使用 `Cargo.toml` 来描述依赖关系和其他元数据;而在多语言混合编译环境中,则可能涉及到通过自定义脚本来桥接不同工具链之间的差异并传递必要的参数给底层构建系统。 #### YAML配置示例 下面是一个简单的例子展示了如何利用 YAML 文件来进行一些基本设定: ```yaml # board_config.yaml board: name: "nrf52840dk_nrf52840" features: - shell build_options: optimization_level: s debug_symbols: true ``` 此段代码片段定义了一个名为 `board_config.yaml` 的板级配置文件,其中包含了目标硬件平台名称以及启用的功能列表。此外还指定了优化级别为 `-Os`(针对尺寸优化),并且启用了调试符号生成选项。 当涉及到更复杂的场景比如动态引脚控制 (pinctrl) 设置时,可以通过条件判断语句配合环境变量或者预处理器宏实现灵活调整而不必修改源码本身[^4]。 #### 实战应用指南 为了更好地理解这些概念及其实际应用场景,《聆思CSK6开发工具简介》提供了详尽的一键部署流程指导,帮助开发者快速入门并掌握相关技能[^3]。同时建议读者完成《Zephyr设备树保姆级上手教程【下】》,这有助于加深对低层硬件抽象机制的理解,特别是关于 LCD 显示屏节点部分的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值