在 11 月 5 日举行的 Elektor 在线会议“Zephyr – 面向未来设备的开放式 RTOS”之前,我们采访了演讲者 Tobias Kästner,讨论了功能架构在现代嵌入式项目中的重要性。咨询公司 inovex 的解决方案架构师(医疗)物联网解释了 Zephyr 框架如何帮助开发人员将复杂的系统需求转化为可维护且灵活的软件结构。
Elektor:您将在会议上发表以下演讲:“Zephyr in Practice: From Functional Design to Efficient Implementation”。为什么“Zephyr 中的功能架构”这个话题现在特别重要?
托比亚斯·凯斯特纳:实际上,功能架构的主题始终是相关的。对我来说,它代表了从分析系统用例到我们需要在软件设计中实现的相关系统功能的第一步。
正如我想在我的演讲中展示的那样,Zephyr 在这里提供了特别令人兴奋的可能性,这使我更容易根据我的系统分析结果(即功能架构)得出一个干净的软件设计。
Elektor:对于刚开始使用 Zephyr 并希望实现功能架构的开发人员,您有什么建议?
托比亚斯·凯斯特纳:Zephyr 是一个功能强大且非常全面的框架。掌握它提供的所有可能性需要时间和一定的毅力。但是,您将获得当今市场上最好的嵌入式软件设计技术框架。特别是对于软件架构师来说,它为将他们的架构设计转换为源代码提供了全新的可能性。
功能架构起源于系统工程,是分析和描述复杂系统的公认方法。Zephyr 非常适合为此类复杂系统设计软件。
Elektor:Zephyr 究竟如何帮助实现更快的反馈和更短的开发周期?
托比亚斯·凯斯特纳:Zephyr 附带了广泛的现成服务,只需在您自己的应用程序中“启用”即可。
我最喜欢的例子是 shell 和日志框架。作为一名开发人员,shell 尤其让我有机会在早期阶段尝试初始部分功能,然后再将它们组合到更大的应用程序中。近年来生产了数百个驱动程序的驱动程序模型也有助于加快开发周期。几乎没有任何人在任何地方需要的东西需要再次实施。这节省了时间和精力。
Elektor:您指的是 KConfig 配置系统,它也用于 Linux 内核,以及用于对系统功能进行建模的硬件描述的分层数据结构 Devicetree。您能举一个例子来说明这在实践中是如何运作的吗?
托比亚斯·凯斯特纳:在实践中,我广泛使用 KConfig 来对我的固件项目进行建模。与 Zephyr 中已经存在的 KConfig 符号的集成是无缝的,并且由构建系统中的相同工具和流程步骤映射。例如,这允许我仅出于测试目的“打开”特定功能,因为并非所有组件都可以在我面前的原型硬件上使用。或者,例如,我可以使用 CONFIG_ACME_HEATER_TWOPOINT=y 或 CONFIG_ACME_HEATER_PID=y 轻松地在针对通用 API 的多个实现之间来回切换。
这些所谓的功能切换总是将所有代码留在一个分支上,使集成变得更加容易,尤其是在较大的团队中。
Elektor:您将讨论仿真对开发和测试策略的重要性。您在这里推荐哪些工具或方法?
托比亚斯·凯斯特纳:正如我刚才所描述的,KConfig 的灵活性也可用于实现“真实”实现或仿真。这可以针对每个子功能单独和独立地决定。
再加上 Zephyr 提供的对仿真器的出色支持,你就拥有了强大的测试驱动开发流程模型,我们在敏捷项目中非常重视这一点。
Elektor:在将架构映射到 Zephyr 组件时,您学到的最重要的是什么?
托比亚斯·凯斯特纳:为了充分利用 Zephyr 为我作为开发人员或架构师提供的可能性的潜力,了解 KConfig、Devicetree 和基于 CMake 的构建系统这三个组件无疑是最重要的一课。正是这三种技术的相互作用产生了许多协同效应,使与 Zephyr 的合作变得独一无二。这种努力的回报是可维护的架构,这些架构既稳定又灵活,并且可以以最少的努力适应不断变化的系统需求,最重要的是,这是可预测的。
“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)










