目前的位置: 首页 学术信息 正文

ZDS 2023技术报告分享第38篇:基于Zephyr、Pigweed和Firebase的项目开发迭代工具实现


前言

2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。


ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。



今天分享第38篇技术报告,由胡宇昊整理,题目为:

“基于Zephyr、Pigweed和Firebase的项目开发迭代工具实现”



作者简介


Yuval Peress

Google

Senior Software Enginner


  • Magic Leap的首席安卓工程师,负责6 DoF信息的通信,负责设计手势检测系统。

  • GoMeta的首席安卓工程师,负责开发AR应用程序和通用库,负责领导公司的身份验证安全和Redis通信协议。

  • 担任Chromium的无硬件EC测试的首席工程师,负责确保良好的仿真设计,并改进测试框架以实现更好的单元测试和集成测试。

  • 担任Chromium EC迁移到基于Zephyr的传感器子系统的首席工程师。



文章简介

首先提出时间表(Timelines)的重要性,以及对一个优秀的产品开发和迭代的困难,点出firebase和Pigweed的优点,引出主题:能否将两者兼得。随后简要介绍了产品的功能分类并逐个讲解,最后讲述如何将所有要素整合在一起。



产品功能简介

  • 配置日志记录Configuring logging

  • 应用逻辑Application logic

  • 跟踪事件Tracking events

  • 远程配置(A/B 测试或功能推出)Remote config (A/B testing or feature rollout)

  • 崩溃报告Crash reporting



配置日志记录

开发配置

west.yml


Build环境配置


系统配置

CONFIG_PIGWEED_LOG_TOKENIZED_RPC默认启用标记化记录。Pigweed日志也会拦截Zephyr日志。Pigweed为日志生成了一个基于哈希值的令牌数据库。所有日志都被放入一个原语message LogEntry中。日志信息通过服务流发送到主机上的日志信息通过服务流发送到通用HDLC服务器上的主机。


如何decode message解码信息

1. 通过python3

2. 通过Webconsole



应用逻辑

在传感器处理后:

1. 将数据放在q31_t values的缓冲区中


范围为[-1,1]

需要一个int8_t的移位值进行缩放


2. 使用RemoteConfig RPC获取当前配置的threshold阈值

3. 遍历缓冲区并与阈值进行比较

4. 换挡时,在firebase注册事件



跟踪事件

事件日志数据路径:

应用逻辑将事件数据传递给FirebaseEventsService


如下,创建一个service stream服务流返回给客户端

虽然不介意在event service事件服务中losing event丢失事件,但为了避免错过,添加事件缓存;当host/phone没有连接设备时,会保存event cache中的事件;事件缓存的规则取决于application应用程序的设置(先进先出,驱逐最新/老事件等)



远程配置(A/B 测试或功能推出)

用远程配置查看不同用户是如何经历事情的,这是一种反向服务,即将数据从服务器输送到主机,当ec与host连接时,把最新的缓存和配置缓存

伪代码如下:设置了三种message类型int、bool、string,当主机连接ec时会得到其中一个或多个值



崩溃报告

概念:


  • 应该像事件服务event service一样工作

  • 在崩溃时,堆栈信息保存到持久内存中

  • 在主机连接时,将最后一次崩溃事件刷新到主机




整合

使用RemoteConfig:


  • 用于参数化算法

  • 在引入新功能时

  • 通过A/B测试检查新配置是否更好


使用事件event:

  • 查看领域中常见的用户行为

  • 重现崩溃

  • 帮助了解应用逻辑并集中未来投资方向


使用Crashlytics:

  • 了解用户何时遇到问题

  • 提供更好、更可靠的用户体验


所添加的:

  • 增加手动换挡的事件记录

  • 换挡算法将具有远程配置的降档和升档能量/旋转阈值

  • 当我们改进算法(包括方程中的梯度)时,我们可以将新的计算放在一个bool远程配置后,以进行较慢的推出


上一条:ZDS 2023技术报告分享第39篇:East--构建NCS/Zephyr应用的辅助工具 下一条:ZDS 2023技术报告分享第37篇:在Zephyr中实现自定义USB设备控制器驱动程序

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学