这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » Zephyr之内核学习

共1条 1/1 1 跳转至

Zephyr之内核学习

高工
2023-08-19 22:30:46     打赏

Zephyr之内核学习

内核

Zephyr的内核是一个实时内核,包含了实时内核所应有的绝大部分功能, 在此概要列举如下:

  • 任务调度。支持基于优先级的可剥夺(Preemptive)和协作(Cooperative)调度,支持基于时间分片(Time-slicing)的轮询调度(Round-robin),支持 Earliest Deadline First (EDF)调度算法,可选三种任务就绪队列的实现以满足不同应用需求:简单的单级队列,传统的多级队列,基于红黑树的队列。

  • 任务间同步。支持二进制信号量(Binary semaphore), 普通信号量(Counting semaphore)互斥量(Mutex) 和快速用户态互斥量(Futex)。任务间数据传输。支持基本数据队列,增强数据队列和邮箱,支持工作队列(workqueue)内存分配。所有内核资源编译时静态分配,支持基于可变和固定长内存池的动态内存分配和释放。

  • 内核扩展。支持内核Tickless和功耗管理,支持内存保护、堆栈溢出检测和用户/内核态,支持同构多核SMP和异构多核AMP,支持POSIX API(PSE51和PSE52) 同时支持在符合POSIX API上的OS上,例如Linux,作为应用运行。

内核服务

构建在内核之上,Zephyr包含了大量的内核服务,在此列举其中比较重要的服务:

  • 设备驱动框架。如Linux内核一样,Zephyr中有一个比较完善的设备驱动框架,包含了大量的各式各样的设备驱动,驱动实现上借鉴了Linux设备驱动的成功经验, 并采用了设备树(Device tree)和Kconfig进行管理和配置,从而可以简化设备驱动的开发和使用。

  • 网络协议栈。在物联网时代,互联互通是重中之重,为此Zephyr并没有选择移植一个嵌入式网络协议栈,而是从头开始设计实现。Zephyr的网络协议栈同时支持 IPv4和IPv6协议,支持多个网络接口,支持多种L2连接方式如ethernet、802.15.4、蓝牙、802.11,CAN等,这使得在IPv6协议下可以统一不同的底层连接方 式,支持SAL(Socket Abstract Layer)可以集成不同网络协议栈的实现,例如集成外部Wi-Fi、5G、NB-IoT模块。

  • 在应用协议上,Zephyr支持MQTT、COAP和 LWM2M等新一代物联网应用协议。

  • 蓝牙协议栈。Zephyr的蓝牙协议栈是少数几个完整的开源实现,支持蓝牙5.1标准,支持蓝牙Mesh协议。Zephyr与蓝牙技术联盟(Bluetooth SIG)有着良好合作, 蓝牙技术联盟推荐Zephyr的蓝牙协议栈作为新一代蓝牙标准的参考实现之一。

应用服务

在内核服务之上,Zephyr也包含了大量的应用层服务和参考例程,可以大大加速应用的开发,例如信息安全库ARM MBED TLS,图形库little vgl、新一代物联网协议、和 不同云平台的连接支持等等。Zephyr支持以模块(module)的形式集成第三方代码,进一步扩展了Zephyr的生态。

zephyr_01.png





关键词: Zephyr     内核    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]