Zephyr 2021开发者大会演讲文档概览

Creative Commons
本作品采用知识共享署名

本文记录Zephyr 2021开发者大会演讲文档阅读的内容。

zephyr第一次开发者大会结束快有1个月了,当时因为:时间不友好,几项会议同时开,个人英语水平差,听了两堂就没听了。好在最近Zephyr开发者大会的演讲文档已经发布出来,全部下载下来阅读了一遍,这里将阅读的内容做一个记录。
因为演讲的主题的范围太广,记录有如下问题:

* 做了简单分类,有一些演讲内容跨度太大,分类可能不准。
* 感兴趣和能看懂的,或者打算深入学习的记录得多一点。
* 个人水平有限,对演讲文件的理解会出错,欢迎大家讨论指正。

目前所有的演讲文档都可以在文末链接下载到,考虑到小伙伴们下载可能不方便,大家可以在下面地址下载:
https://pan.baidu.com/s/1cm1wSMIyaHrBlBk1nVZysA
提取码:bymd
当中文档的文件名是和后文的小结名是一一对应的。
之后Zephyr project可能会发布演讲视频,内容细节会比演讲文档详细(特别是讨论会议的文档,只是guide,干货都在讨论过程中),到时候再选择感兴趣的内容深入一下。

1 功能设计和原理介绍

A deep dive into the zephyr 2.5 and 2.6 device model

介绍说明Zephyr device模型的基本框架,设备有统一抽象的API,对于API有不同驱动的实现,不同的驱动下可以挂不同的外设。
说明了设备驱动的基本使用方法,介绍了目前抽象出来的API。
以BME280在SPI和I2C上为例介绍了devicetree中device的基本概念,说明了devicetree的使用方法。
设备树节点的依赖关系。

Coredump

介绍Zephyr Coredump的实现原理和现状。

Demand_Paging

When software is bigger than available memory
说明Zephyr分页机制的算法/流程,目前只有x86实现了分页机制。

ZDS-2021 RISC-V PMP

Zephyr userspace简介,将实现的关键点说得很清晰。
说明了Risc-v 实现userspace的架构/硬件基础。
说明了Risc-v如何使用PMP实现Zephyr的userspace。

ZDS2021_logging_overview

Logging subsystem overview
比较说明v1和v2两版log系统的实现机制,说明了设计时的考虑和因应方法,值得学习。

ZDS-RealTimeRealWorld-AndyRoss

Real Time in the Real World
介绍Zephyr内核调度,总结得非常到位,简单明了。最后P17的总结非常好。
说明了线程调度的时机,优先级和调度的关系,调度锁。说明了thread在调度列队的管理方法(backend)
MetaIRQ, 中断下半段的处理,比协助线程的优先级还要高,会抢占协助线程,处理完后会总是返回到被抢占的协助线程中(不会有额外的调度),MetaIRQ支持多各level,可以相互抢占. 没有使用协作线程就没必要使用MetaIRQ, 只能用于驱动不能用于应用。
SMP下调度的情况。
Work queue, P4 work queue的介绍,线程池分担work,支持并行,抢占,优先级。支持SMP, EDF Deadline.

zds2021_usb

USB support in Zephyr OS
只支持USB device, 支持USB2.0 spec,常见USB Class都支援, 支持USB Composite, 驱动支持全速和高速,不支持运行时配置,只支持一个device控制器实例。
基于LPCUSB stack。
支持的class: Audio/CDC ACM/CDC ECM,EEM,RNDIS/USB DFU/USB HID/BT HSI over USB/MSC,class可以组合,由驱动和端点决定。
提供USB使用的示例/USB协议栈框图/代码目录结构/协议栈介绍。
驱动API和协议栈缺点说明
USB当前的开发情况,改进说明
USB stack测试简介
USB IP现状简介
USB host进度(已经有PR,还是实验性的)

Zephyr_DevSummit-PM101

Zephyr Power Management - 101
低功耗框架目标:

  • 尽可能减少能耗,可定制(提供机制,不是策略)
  • 跨平台(架构/板子/SOC)
  • 使用和不部署方便

说明了PM的设计架构,通过提供机制如何做到跨平台。
系统电源管理:

  • Idle thread是电源管理的入口,由策列管理器决定进入那种低功耗状态,并调用SOC的实现进行操作。
  • 应用程序也可以定义自己的电源管理策略。

设备电源管理:

  • 两种方式:中央控制由系统电源管理来挂起/恢复设备,设备运行时自己决定是否进入挂起或者恢复。
  • 驱动维护设备的电源状态,提供设备的电源管理接口

介绍如何配置启动电源管理,介绍在SOC上如何实现电源管理(系统),介绍在驱动上如何实现电源管理(设备),介绍如何实现电源管理策略。
电源管理的状态已经在设备树中定义.

2 移植和使用实例

ZDS_2021_TFM_Zephyr

Trusted Firmware M in Zephyr
TF-M介绍,说明Zephyr内支持的TF-M的板子和示例

Circuit Dojo - Jared Wolff - Developing Hardware on Zephyr - Slides with Notes

作者以自己的nRF9160 Feather为例,说明如何将该board加入到zpehyr中

Circuit Dojo - Jared Wolff - Securing MCUBoot in 5 minutes or less - Slides with Notes

作者说明如何在nRF9160 Feather 上启用MCUBoot

ZDS-XtensaYarns-AndyRoss

Weaving Xtensa Yarns with Zephyr
介绍Xtensa 指令集架构,Zephyr针对该架构移植要做的细节. SMP的支持(ESP32/Intel DSP)。L1 cache,展望:内存管理(MMU), 用户空间的实现

Zephyr_DevSummit21_esp32

ESP32 Family Support Status
介绍目前ESP32对Zephyr的支持情况和计划。
ESP32的外设在Zephyr上已经实现超过50%, Q3/21将支持mcuboot,并对IRQ/I2C重构, Q4/21将支持OTA+update和硬件加密。
Q3/21 ESP32-S2/C3将开始支持Zephyr, PPT中有时间节点表。
最早Q4/21,最晚Q1/22 ESP32-S3/C6将支持zephyr
将基于ESP32系列的SOC持续对Zephyr进行支持。
正在研究的项目:

  • Zephyr上ESP32系列SOC动态调整频率节能
  • Zephyr上进行片上wifi native集成
  • MCU Manager
  • UpdateHUB
  • ESP-Rainmaker

Zephyr_DevSummit21_miklankova

Micropython binding to LVGL in Zephyr OS
PPT内容源自于作者的论文,在rt1050平台上将micropython和lvgl绑定后做为zephyr的app进行编译运行,和直接使用zephyr内的lvgl编译运行。将二者的二进制大小,内存使用,运行效能进行比较。

3 应用案例

Golioth + Zephyr Dev Summit slides

Connecting Zephyr-based devices to the cloud
介绍云平台Golioth和Zephyr的对接

how_to_perform_zephyr_ota_update_over_lorawan.pptx

LoRa搭配MCUboot进行OTA升级,主要介绍了MCUBoot的工作原理和LoRa约束下的处理方式/解决方案

zds_2021_libre-solar_slides

IoT-enabled Solar Power Converters with Zephyr
Libre Solar Project简介在Zephyr上太阳能管理应用实例

Lemonbeat_end_to_end_ipv6

Using Zephyr RTOS in an end-to-end IPv6 IoT solution
说明LB无线网络架构和需求,说明OS/SW Stack选型原因。
介绍Zephyr上实施情况和Zephyr上L2集成方法。以及Zephyr使用的经验总结。

Zephyr_DevSummit_Systerel_OPC_UA_A

Using OPC UA with Zephyr
OPC UA:新的工业互操作性标准, 介绍OPC UA
说明S2OPC在zephyr上的状态和计划
提及使用Renode做OPC的CI

Zephyr_DevSummit21_Anjay

Simplifying sensor management using LwM2M and Zephyr API
LwM2M介绍
针对传感器网络和M2M/物联网环境的需求而设计的设备管理协议,消息层基于CoAP (RFC 7252),Server/Client之间基于请求响应模型。
为引导和管理设计了4个接口:BOOTSTRAP/CLIENT REGISTRATION/DEVICE MANAGEMENT & SERVICE ENABLEMENT/INFORMATION REPORTING。
LwM2M数据模型:最深4层的树,对象->对象实例->资源->资源实例
IPSO对象介绍。
Zephyr传感器API简介,说明如何使用API实现IPSO对象
anjay的使用示例

zephyr-hard-real-time-applications-motor-control

Using Zephyr for hard real-time applications: motor control
介绍基于Zephyr的电机控制项目SPINNER,说明了选择Zephyr的原因。

4 会议讨论

Zephyr_Developer_Summit_Slides_Birds_of_a_Feather

Zephyr Developer Environments
开发环境的讨论会议,ppt内容不多,等视频内容。
有一个vscode插件的列表可以参考。

Zephyr_DevSummit21_CommonApplicationConfiguration

Common application configuration for boards
会议讨论,说明当前RAM/ROM在linker文件,devicetree, Kconfig同时配置存在的问题和要讨论的解决方案

5 人工智能

Zephyr Developer Summit 2021 - Using CI-based workflow with Renode in bringing TensorFlow Lite to Zephyr

Machine Learn简介,有一些有趣的数据。
TENSORFLOW/Lite/Lite Mico 介绍(Google ML的框架),Renode介绍(硬件模拟器,可以模拟SOC和外设)
Zephyr的测试框架使用Renode,可以基于Renode建立CI。

Zephyr_Developer_Summit_Slides

TensorFlow, Meet Zephyr
TFLM介绍,TFLM以module的形式被集成在Zephyr中,Zephyr 2.6开始支持,以lib的形式导入。应用开发者和贡献值的tips。

6 虚拟化

Taking Zephyr RTOS to the Virtual Edge

边缘虚拟化介绍,Virtio简介, Zephyr在边缘虚拟化的现状和计划

Zephyr_DevSummit21_PPT_jmw_ACRN_IIoT

ACRN Hypervisor and Zephyr RTOS for Industrial IoT Applications
介绍基于x86的虚拟化平台ACRN,可以跑Zephyr RTOS。有Zephyr的简单示例。

7 认证,质量与安全,项目管理

Zephyr_DevSummit21_FMEA_enjimai

Conduct FMEA in the safety analysis of Zephyr
FMEA简介,为什么要将FMEA导入到Zephyr:
功能安全认证
Zephyr项目质量
如何实施SW FMEA, FMEA实施流程
以信号量为例实施FMEA
RPN = Severity x Occurrence x Detectability
最新手册: AIAG / VDA FMEA handbook (2019)

Zephyr_DevSummit21_FuSa_V&V

Functional Safety Verification & Validation T est Case Development and the Challenges
介绍FuSa认证测试方法,Zephyr上面的测试方法和管理追溯方式。

Bagnara_Slides_Zephyr

The Status of Zephyr with respect to MISRA Compliance
安全编程相关

Zephyr-SW_Safety_Quality_ISO26262

Software Quality vs Safety in ISO 26262
介绍软件质量/安全的基本概念,ISO 26262的软件开发模型和质量/安全章节内容

Zephyr_DevSummit21_PPT - SW Product Lines

Field Report: Setting up a Software Product Line (SPL) Architecture
软件产品线的定义说明及作用。
基于Zephyr实施SPL的策略,介绍说明Zephyr的各项技术时如何支持SPL的。

8 测试

Zephyr_DevSummit21_MaciejPerkowski_twister_onhardware

On-target testing with Twister and the process of results publishing
说明如何使用Zephyr测试框架Twister

Zephyr_DevSummit21_PPT

Twister, a Powerful Test Runner for Zephyr OS Automation Testing
Twister作用说明,使用简介。
Twister硬件环境,测试流程介绍。
Intel使用Twister案例

9 分析与调试

Zephyr_DevSummit21_Memfault_IRNAS_ConnectivityDebug

Best Practices for Debugging Connected Applications running Zephyr
调试方式简介:
本地调试: JTAG和打印调试
Zepyhr调试配置项说明:线程信息,PRINTK, LOG系统的使用
远程监控:使用Memfault,Zephyr上ARM base都可以用,说明如何集成Memfault到Zephyr
分别从Reboot Reason/Watchdogs/Faults & Asserts/Connectivity Metrics/自动测试说明如何使用Memfault进行调试分析和测试,有很丰富的实例。

Zephyr_DevSummit21_Percepio

Using Visual Trace Diagnostics on Zephyr Applications
Tracealyzer在Zephyr上的使用介绍和演示。
Zephyr 2.6 Tracealyzer v4.5

10 其它

Connecting Zephyr To Students

如何向学生推广Zephyr

Zephyr Introduction- 20210604

Zephyr Project:Unlocking Innovation with an Open Source RTOS
Zephyr项目情况简介

参考

https://github.com/zephyrproject-rtos/zephyr/wiki/2021-Zephyr-Developer-Summit
https://docs.google.com/document/d/1b_KSNuEyCT0OhMVXaf87Nq7WbW6eg13pUHJh2vNECTs/edit#heading=h.x36xe8bnwr9r