Zephyr——新型物联网操作系统介绍
Zephyr™ 项目旨在开发开源、可扩展且强大的 RTOS,针对资源受限的嵌入式设备进行了优化,并在构建时考虑了安全性。Zephyr 项目致力于以确保安全为前提,为连接的资源受限设备提供一流的RTOS。
先来一段来自某库的Zephyr自我介绍,Zephyr™项目是一个采用Apache 2.0协议许可,Linux基金会托管的协作项目。为所有资源受限设备,构建了针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的实时操作系统(RTOS),支持多种硬件架构及多种开发板,可以在小至8 kB内存的系统上运行。
用深入的安全开发生命周期:安全验证,模糊和渗透测试,频繁的代码审查,静态代码分析,威胁建模和审查,以防止代码中的后门。支持Bluetooth, Bluetooth Low Energy, Wi-Fi, 802.15.4,6Lowpan, CoAP, IPv4, IPv6, 和 NFC 等标准,通过社区驱动的发展来改进和增强功能。
其支持不同的硬件架构平台,包括:
-ARC EM and HS
-ARMv6-M, ARMv7-M, and ARMv8-M (Cortex-M)
-ARMv7-A and ARMv8-A (Cortex-A, 32- and 64-bit)
-ARMv7-R, ARMv8-R (Cortex-R, 32- and 64-bit)
-Intel x86 (32- and 64-bit)
-NIOS II Gen 2
-RISC-V (32- and 64-bit)
-SPARC V8
-Tensilica Xtensa
目前,Zephyr项目中,所有基于这些硬件架构的硬件平台可以从这里找到。
我们现在大体上知道了Zephyr是什么,我们接下来聊聊Zephyr有啥特异功能:
1、丰富的内核服务
- 多线程服务:包括协作式(拥有最高优先级,不能被抢占),基于线程优先级,抢占式和非抢占式线程,时间片的线程调度策略
- 中断服务:支持编译器的中断服务程序注册
- 内存分配服务:支持固定/可变大小的内存块的分配和释放
- 线程同步机制:二值/计数信号量,互斥锁
- 线程通信机制:管道,消息队列,增强型消息队列,字节流
- 电源管理机制:tickless模式,高级空闲管理机制
2、多调度算法
- 协作式和抢占式的调度策略
- EDF:最早截止时间优先调度,截止时间愈早,其优先级愈高
- 中断下半部处理:中断服务函数中只处理较块的部分,剩余耗时部分由下半部函数完成,不再占用中断服务时间。
- 时间片轮转,仅作用于抢占式线程
- 多种调度策略:链表形式,红黑树,传统多队列
3、基于Kconfig文件,带来高可配置性,以及模块化
4、支持多种平台,不限于ARM,x86等
5、内存保护:栈溢出保护,内核对象以及设备驱动权限跟踪,线程隔离等
6、编译器资源定义:降低代码尺寸,提高资源有限系统性能
7、优化的设备驱动模型,大大提高跨平台驱动可复用率
8、设备树的支持:使用设备树文件进行硬件描述。
9、原生多网络协议栈的支持
10、蓝牙5.0支持
11、基于Linux,macOS,和Windows的原生开发
12、支持LittleFS和FATFS的虚拟文件系统接口
13、多后端的log系统,可以通过不同方式打印log信息,包括网络,串口控制台,文件系统等
14、功能强大的Shell系统,并支持自定义shell指令
15、原生POSIX支持,支持将Zephyr作为一个Linux应用来运行
更多的Zephyr小秘密还请大家自行挖掘,在这里就不一一举例了。