前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第51篇技术报告,由温浩整理,题目为:
“Zephyr中的POSIX支持”
作者简介
Hebo Hu是intel的高级固件/软件工程师,专注于开发面向客户端计算平台的基于Zephyr RTOS的intel传感器固件/软件。他还是intel嵌入式IP硅前仿真设计和开发方面的专家。
文章简介
本文介绍了一个全新的Zephyr传感子系统,包括其的发展背景、发展动机、发展历程以及现状和展望。
全新的Zephyr传感子系统
背景、动机与方向
已有的Zephyr传感子系统:
需要使用设备树文件配置传感器设备,且应用程序只能通过Zephyr中相应的传感器驱动程序来获取传感器设备的信息。
传感器在满足某些条件时,如硬件中断、定时器触发等,才会开始获取数据。
每种传感器具有特定的属性,且有专门的校准模块用于输出的校验,以确保其测量结果准确无误。
Zephyr支持大约140种传感器驱动程序。
在传感器方面,Zephyr社区中有着大约900次的代码提交。
提出一种新的传感子系统的动机:
应用程序访问传感器的典型模式如上图所示,应用程序直接与传感器设备驱动程序交互,以进行所有传感器操作。这种方式缺乏高层次抽象、通用功能管理、多客户端仲裁等功能。为了解决以上问题,提出了一种新的传感子系统,使得应用程序访问传感器的模式变为下图所示。
改进方向:
高层次抽象。
通用功能管理。
多客户端仲裁。
传感器拓扑和调度。
传感器融合和处理。
传感器时间戳。
批处理。
新传感子系统的介绍
新的传感子系统运行在现有的Zephyr传感器设备驱动程序之上,作为传感器管理框架,并提供更高级别的传感器API供多个Zephyr应用程序使用。
Zephyr新传感子系统在传感器抽象方面提供了虚拟传感器和物理传感器,虚拟传感器表示对传感器数据进行处理和算法计算的虚拟实体,而物理传感器是对现有传感器设备驱动的封装,提供一个更高层次、更抽象的接口。
Zephyr新传感子系统对传感器通用性用传感器框架树模型来进行处理,传感器框架树模型实现了配置信息通过层次结构从高级别传感器实体向底层传感器设备传递、传感器数据从底层的传感器设备流向上层的虚拟传感器或应用程序、调度采用单线程并由传感器数据和配置信息驱动。
Zephyr新传感子系统具有仲裁的多客户端,其实现了一个传感器可以同时被多个客户端(包括应用程序客户端和传感器客户端)访问和配置,并且通过仲裁机制可以调整传感器的报告间隔、变化敏感度等参数,以协调不同客户端对传感器的访问。
Zephyr新传感子系统支持 CHRE和非CHRE Zephyr应用程序,新传感子系统API能够满足CHRE PAL(Context Hub Runtime Environment Platform Abstraction Layer)的要求,这意味着该传感器框架可以与 Android平台上的CHRE环境协同工作。
Zephyr新传感子系统的现状
Zephyr新传感子系统现已支持英特尔Chrome客户端参考平台传感器BOM。
已实现的功能:
实现了传感器子系统的所有除了批处理功能之外的API
引入了融合框架,支持对物理和虚拟传感器的抽象
支持在同一时间运行多个客户端,包括CHRE和HID传感器应用
许多客户端就传感器报告间隔和灵敏度进行仲裁
使用 Zephyr操作系统提供的传感器设备API来支持物理传感器
采用轮询和中断方式来驱动传感器数据的获取和处理
使用单线程进行调度
通过设备树进行配置
提供端到端的传感器流数据路径,用于演示,其中包括与HID(人机接口设备)和 IIO(工业输入/输出子系统)相关的数据
上游工作:
新传感子系统提案已经在Zephyr社区进行了审查,传感子系统上游PR1已提交并正在审查中。