前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第70篇技术报告,由毕方琦整理,题目为:
“Zephyr资源调度的现状与未来”
Ederson de Souza
工程师,Intel
文主要介绍了Zephyr现有的资源度量工具,并在Zephyr中使用两种资源分配优化的方案对几种开源项目进行使用前后对比,为Zephyr资源调度方面提供了一些建议。
Zephyr中的资源度量工具及资源使用现状
Zephyr有很好的ROM度量工具:
同时,Zephyr对资源使用的控制手段包括:
Zephyr的API广泛使用一些特性比如:死码消除技术(旨在通过在编译器或运行时环境中检测和删除未使用的代码,以提高程序的执行效率和减少资源占用。)
对开销的一些思考:
静态分配程序:
该脚本将API“实例化”并生成一些函数。
同时,为它们生成一个“调度程序”,供API使用。
导入驱动的代码示例:
一些开源项目
我们在实验测试中跑了一些开源项目,主要关注它们的系统开销,包括:
由于静态调度工作是在Zephyr的主分支上完成的,所以这些项目都是基于Zephyr的主分支进行重新部署的,环境:Zephyr SDK 0.16.1
ZSWatch和 Intel EC FW 的实验:
使用静态调度方法后消耗资源会变小。而ZMK,如下图:
在使用静态资源分配方案后,消耗资源竟然变大了,从运行报告来看可能是激活了一些无效代码。
我们也使用了LTO(死代码消除方案)对几个开源项目进行了实验:
LTO开源地址:
https://github.com/zephyrproject-rtos/zephyr/issues/2112
ZSWatch:
Intel EC FW:
ZMK:
总结
LTO的方式可能是效果最好的一种
静态资源分配的方式不一定对所有的程序都有效
在这个过程中需要保证没有细微的bug