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,并进行了深度裁剪和优化,整体框架如下:
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