当前文档版本为 v0.6.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

Zephyr 简介

1 Zephyr Project 概述

Zephyr™项目是一个采用Apache 2.0协议许可,Linux基金会托管的协作项目。为所有资源受限设备,构建了针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的实时操作系统(RTOS),支持多种硬件架构及多种开发板。由于 IoT 领域需要部署大量的联网设备,因此每个设备的成本必须得到控制。控制成本第一个有效方法是降低昂贵组件的标准,例如使用 RAM 更低、ROM 更低的芯片。Zephyr 就是专为这样的芯片而生的,它可运行在只有 8 Kb 内存的 MCU 之上,甚至能在只有 2 Kb 内存的 MCU 上演示 Hello World。

2 Zephyr 主要特性

  • 高度可配置

    降低成本的另一个方式是按需裁剪硬件。物联网设备一般都是专用设备,因此在面对某个特定市场时只需要特定的硬件。

  • 多个架构的支持

    目前支持种芯片架构:ARM,X86,MIPS,ARC,RISC-V等等,便于后续产品端跨不同的平台适配和使用。

  • 可移植性强

    用户可以很方便的将自己的平台移植到Zephyr系统(目前已经有350+个芯片和board已经完成了Zephyr平台的适配),用户只需专注于应用层的软件开发和使用。同时已有的产品的上层应用程序,可以无缝对接,而不需要重新的开发。目前我们pan1080已经全面适配到该系统了。

  • 强大的社区支持

    Zephyr 受到几大厂商/基金会的支持,包括 Linux 基金会、Linaro 组织(成员包括 ARM、飞思卡尔、IBM、三星、ST、TI、华为海思等)、Intel、NXP、新思科技等,开发者众多。

  • Shell 支持

    想要查看设备内部的运行情况?Zephyr 提供了一个 shell 接口,您可以将您的应用程序的部分接口暴露给 shell,这样您就能与设备进行人机交互了。当然,更高大上的做法是使用 APP 控制设备,直接在 APP 上与设备进行交互,不过这样的开发成本会增加很多。此外,该功能也是可裁剪的,您可以在开发测试阶段使用该功能,正式投入产品后将其裁剪掉。

  • 丰富的组件

    • SEGGER IDE/Debug Tool:用户可以方便的基于现有的Jlink 配套的工具进行烧录调试

    • GNU Compiler/Debug Tools:丰富的开源工具链

    • IDE的支持:eclipse/VS code

    • memfault:允许开发人员远程监控、调试和更新固件,对于复杂系统长时间异常稳定性分析非常有帮助

    • MCUboot:安全的BootLoader

    • Mbed TLS:嵌入式平台的最小编码的加解密算法库

    • 丰富的应用例程:完整的应用例程供开发者参考,可以快速搭建应用程序,不需要从0开始编写应用程序

    • mcumgr:支持SMP(simple management protocol)作为OTA协议(手机APP端有标准的协议支持)

  • 电源管理

    很多物联网设备都是用纽扣电池供电的,经常更换电池的成本是非常高的。当然,这里说的高并非电池本身昂贵,而是指更换电池时的人力成本。要想一颗小小的纽扣电池运行数年可不是一件简单的事儿,Zephyr 早已考虑到了这一点,它提供了一个电源管理子系统,管理外设的功耗,以达到省电的目的。此外,该功能也是可裁剪的,如果您的设备没有低功耗要求,可以将其裁剪掉。

  • 非易失存储子系统

    Zephyr提供一套完善易用的flash管理机制,提供经过长期验证NVS (Non-Volatile Storage)存储机制,可以最大可能的延迟flash的存储寿命。Zephyr同时提供便捷的应用操作接口(settings),对应用层使用提供简单的键值对的使用接口。用户只需要专注应用数据的读取和写入使用,不需要关心其它的flash底层细节,进而提升应用开发的效率。

  • 日志系统

    Zephyr包含了一个非常强大的日志系统。输出日志时的执行时间对程序的逻辑会产生影响,导致不可预期的后果。而Zephyr强大的logging系统,输出一行日志,因为缓冲区的存在,几乎不占用执行时间(只占用数据拷贝的时间),日志先缓存到缓冲区中,然后在系统空闲时,将缓冲区的数据输出到后端设备(如串口,网络,rtt等)。

3 关于RTOS的一些说明

嵌入式开发人员通常习惯于裸机编程,或者对使用实时操作系统(RTOS)有所保留。这里谈谈RTOS的作用,以及为什么应该考虑使用它们。

现今的产品开发周期变得越来越复杂。开发时间越来越短,但所需功能集日益扩展,使得繁忙的开发人员需要千方百计在更短的时间内完成更多工作。通常,使用RTOS可以提高任务管理和资源共享的效率。

  • 什么是实时操作系统(RTOS)

简而言之,RTOS是一款旨在有效管理中央处理器(CPU)时间的软件。当时间是应用的重点时,这对于嵌入式系统尤为重要。Windows等操作系统与嵌入式系统中常用的RTOS的主要区别,在于对外部事件的响应时间。Windows等普通OS提供对事件的不确定性响应,即使试图保持响应速度也无法保证何时处理事件。使得用户认为操作系统响应灵敏,比处理基础任务更为重要。另一方面,RTOS则提供了实时响应和高度确定性的反应。习惯使用Windows或Linux等操作系统的开发人员将会非常熟悉嵌入式RTOS的特性。它们经设计在内存有限的系统中运行,并且可以无限期运行而无需重置。由于RTOS旨在快速响应事件并在重负载下执行,RTOS在执行大型任务时可能会较其他OS慢。

  • RTOS调度

RTOS的价值在于很高的响应速度,而高级调度算法是其中的关键组件。嵌入式系统的时间要求各有不同,从软实时洗衣机控制系统到硬实时飞机安全系统等等。在后者的情况下,只有能够准确预测OS调度程序的行为,才能满足实时要求的基础需求。许多操作系统给人以一次执行多个程序的印象,但是这种多任务处理其实只是一种错觉。单个处理器内核在任一时间只能运行单个执行线程。操作系统的调度程序决定何时运行哪个程序或线程。通过在线程之间快速切换,它带来了同时执行多项任务的错觉。灵活的RTOS调度程序允许采用广泛的方法来处理优先级,尽管RTOS通常主要用于非常狭窄的应用程序集。RTOS调度程序应提供最小的中断延迟和最小的线程切换开销。这是使得RTOS与重视时间的嵌入式系统如此密切相关的原因。

  • 在嵌入式设计中使用RTOS

许多嵌入式设计编程人员避免使用RTOS,因为他们怀疑RTOS给其应用程序增加了太多的复杂性,或者RTOS其实是一个未知的领域。RTOS通常需要最多占用5%的CPU资源来执行其任务。尽管总会有一些资源上的损失,但RTOS可以在简化的确定性,通过硬件抽象的易用性,减少的开发时间以及更便利的调试等等方面弥补这一不足。使用RTOS意味着你可以同时运行多项任务,并在需要时引入基本的连接性、隐私、安全性等。RTOS允许针对项目的特定需求创建优化的解决方案。

4 Zephyr For PAN1080的特点

目前 PAN1080 已经全面适配了Zephyr 2.7.0 LTS2,并进行了深度裁剪和优化,整体框架如下:

image

Zephyr OS 整体框架

4.1 Zephyr 特性说明

  • Kernel & OS Services

  • Bluetooth LE Core v5.1

    • Bluetooth Low Energy Controller support (LE Link Layer)

      • Unlimited role and connection count, all roles supported

      • Concurrent multi-protocol support ready

      • Intelligent scheduling of roles to minimize overlap

      • Portable design to any open BLE radio, currently supports Nordic Semiconductor nRF51 and nRF52, as well as proprietary radios

      • Supports little and big endian architectures and abstracts the hard real-time specifics so that they can be encapsulated in a hardware-specific module

      • Support for Controller (HCI) builds over different physical transports

    • Bluetooth Host support

      • Generic Access Profile (GAP) with all possible LE roles

        • Peripheral & Central

        • Observer & Broadcaster

      • GATT (Generic Attribute Profile)

        • Server (to be a sensor)

        • Client (to connect to sensors)

      • Pairing support, including the Secure Connections feature from Bluetooth 4.2

      • Non-volatile storage support for permanent storage of Bluetooth-specific settings and data

    • Bluetooth mesh support

      • Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy features

      • Both Provisioning bearers supported (PB-ADV & PB-GATT)

      • Highly configurable, fits as small as 16k RAM devices

    • Clean HCI driver abstraction

  • OS Abstraction

  • File System / Storage

  • Debugging

  • Power Management

  • Device Firmware Upgrade / Device Management

  • Cryptography

  • USB Device Stack

  • Test Framework

4.2 特色说明

  • 集成独立的开发环境

    只需要下载我们的开发包,一键解压即可使用,不需要繁杂的开发环境搭建和适配

  • 可视化的开发环境

    基于可视化的编辑工具VS Code,构建图形化的编译,开发,调试和下载环境,用户不需要使用命令行也可以进行开发

  • 源代码开源

    除 Bluetooth LE Controller(这部分代码与硬件涉及强相关,由PANCHIP维护)以外,其余所有源代码都开源

  • Bluetooth LE 5.1全功能运行支持

    基于强大的资源,PAN1080 支持单芯片运行所有的功能(BLE和Mesh以及一些外设都可以在一个程序上运行),可以适用于更多的应用场景

4.3 补充说明

此处补充介绍一下 PAN1080 Bluetooth LE 和 Proprietary Radio 2.4G 的相关特性。

4.3.1 Bluetooth Features

4.3.1.1 Bluetooth Low Energy Controller

The PAN1080 Bluetooth Low Energy Controller supports all low-energy features required by Bluetooth specification version 5.0. it also supports Constant Tone Extension defined in Bluetooth specification version 5.1. The controller supports the following:

  • Support 1M PHY, 2M PHY and Coded PHY (s2 and s8)

  • Support Advertising, Scanning, Initiating and Connection (both of Central and Peripheral) role

  • Up to 10 Link Layer state machines concurrently:

    • 1 * Passive Scanning

    • 1 * non-connectable advertising

    • 8 * any other combinations (Legacy/Extended/Periodic Adverstising, Scanning and Connection)

  • Support LE Features:

    • LL Encryption

    • LE Data Packet Length Extension

    • LL Privacy

    • Extended Scanner Filter Policies

    • Multiple PHYs

    • LE Extended and Periodic Adverstising

    • Channel Selection Algorithm #2

    • Minimum Number of Used Channels

    • Constant Tone Extension

    • and etc

  • Support Update Channel Statistics

4.3.1.2 Bluetooth Host
  • Generic Access Profile (GAP) with all possible LE roles

    • Peripheral & Central

    • Observer & Broadcaster

  • GATT (Generic Attribute Profile)

    • Server (to be a sensor)

    • Client (to connect to sensors)

  • Pairing support, including the Secure Connections feature from Bluetooth 4.2

  • Non-volatile storage support for permanent storage of Bluetooth-specific settings and data

  • IPSP/6LoWPAN for IPv6 connectivity over Bluetooth LE

    • IPSP node sample application

  • Clean HCI driver abstraction

    • 3-Wire (H:5) & 5-Wire (H:4) UART

    • SPI

    • Local controller support as a virtual HCI driver

4.3.1.3 Bluetooth Mesh
  • Compatible with Bluetooth SIG Mesh Profile 1.0.1

  • Support Mesh Provisioning

  • Provisioner: PB-ADV

  • Provisionee: PB-ADV, PB-GATT and PB-Remote

  • Support Mesh Node Feature : Relay, Proxy, Friend, LPN

  • Support Mesh Models

    • SIG Models: Config Model, Health Model and Generic Models (Onoff and Light Control Models)

    • SIG Developing Models: PB-Remote Model and SIG OTA Model

  • Support multiple smart speakers control concurrently for BaiDu Xiaodu, Alibaba Aligenie and Amazon Echo

  • Support network control: HeartBeat, Subnet, Secure Beacon and Group Control

  • Support switch control for over 256 nodes without delay

  • Mesh Security

    • Provisioning: FIPS P-256 Elliptic Curve

    • Message:AES-CCM Encrytion

    • Network:SEQ Control, IV Index and Key Fresh

4.3.2 Proprietary Radio 2.4G Features

  • Support 1M and 2M PHY

  • XN297L, nRF24L01, and nRF52832 2.4 GHz Transceiver protocol compliant

  • Support No Acknowledge, Acknowledge and Acknowledge with payload

  • Support CRC8, CRC16 and CRC24

  • Support whitening