前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第13篇技术报告,题目为:
“在Zephyr上实现Silicon Labs EFR family”
作者简介
Karol Gugala是Antmicro的工程经理,他领导团队研究数字化设计、人工智能等领域。他是开源爱好者并且参与各种各样的开源项目,是芯片联盟工具组主席。他在VHDL、Linux和Verilog方面拥有10多年的经验。
Anders Pettersson是Silicon Labs的营销总监。他参与使ARM的Cortex-M成为全球MCU标准。如今,他专注于智能家居市场的无线技术和网络协议标准化。
Silicon Labs和Antmicro的这次联合演讲将指导完成在Zephyr项目中启用EFR32 MCU系列的过程,以及介绍时间表和经验教训。演讲将详细介绍为Silicon Labs BG22和XG24平台添加Zephyr支持。将对整个过程进行全面概述,从预先存在的代码库开始,使其符合当前Zephyr标准,解决许可问题、HAL共同依赖性、维护问题、面对客户需求的优先级、代码冻结等。还将深入了解端口的现状和未来计划,展示示例(包括BLE支持),并解释如何在模拟环境中使用Renode进行持续集成驱动程序测试,以及如何将类似的RTOS端口开发工作插入Zephyr的测试设备。
找出新的SoC的位置。
更新HAL,处理更新产生的问题。
使boarder得到支持。
准备硬件刷新脚本。
当开始研究EFR32系列时,有一个初始的WIP端口。
有些代码需要重点关注,以使其适应Zephyr标准。
初始PR增加了以下功能:
Pinctrl驱动程序。
UART驱动程序修改。
EFR32BG22 SoC支持。
EFR32BG22-SLTB01A板级支持。
面对客户需求
该项目有特定的目标,在可分配的资源方面有限制。
由于SiLabs有许多的用户,他们对已经在产品中的板卡的支持的需求很高。
在某些情况下,需要更新HAL代码以满足Zephyr的要求。
需要取消“Silicon Labs最终用户许可协议”部分,并将其转移到zlib。
将软件移植到新硬件,需要在没有任何驱动程序的平台上启动。
通过模拟来解决-Renode支持EFR32 SoC。
添加测试以避免regressions - Renode Robot集成在Zephyr中。
启动并运行renode模拟非常容易。
使用“renode run”工具快速设置所需的工具,获取二进制文件并运行演示。
只需将下图中的代码复制粘贴到Linux终端,就可以在模拟的EFR32BG22上运行Zephyr shell示例。
pip3 install --user --upgrade
git+https://github.com/antmicro/renode-run.git
renode-run demo -b efm32hg _ slstk 3400a shell_module
Renode仪表板收集Zephyr中可用的所有板,为它们构建示例并在Renode中运行测试。
由于已经支持EFR32 SoC,相应的页面会自动弹出。
完全支持
逐个添加所有驱动程序。
添加驱动程序可能需要HAL更新。
一旦一个驱动程序被合并,必须为其他驱动程序重新调整PR的基础。
实际中运作过程
可以查看一些启用BG22板后续功能的PR:
SPI以及SPI事务示例。
计时器。
I2C驱动器。
驱动程序。
低功耗蓝牙技术。
无线支持
EFR32-xG系列有一个无线电块,可实现无线通信:BLE、Zigbee、Thread等,BLE是最高优先级。
Zephyr有一个开源BLE堆栈。
无线SoC供应商(如SiLabs)经常提供二进制库来处理无线电。
尽量减少对低级无线电接口的专有位处理。
Zephyr定义了添加blobs的程序。
需要TSC批准。
一旦完成,代码库就可以扩展到针对blob的链接,并启用无线通信。
ZEPHYR VS BARE METAL
从自定义裸机代码迁移时的一个注意事项是它将如何影响应用程序代码:
代码大小。
功率效率。
将现有逻辑迁移到Zephyr的难度。
电源管理
Zephyr的电源管理是通用的,适用于所有设备。
最大限度地减少电力泄漏
初步比较显示,裸金属代码是97uA,而Zephyr端口是1860 uA。
在默认情况下启用PM可将电流消耗降低至约170uA。
引入自定义的部分唤醒功能达到了所需的水平。