2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第5篇技术报告,题目为:
“由社区推动的针对Zephyr(和其他微控制器)的OTA(Over-The-Air)解决方案”
Josef Holzmayr
Mender 开发者关系负责人
Yocto Project 社区经理
OpenEmbedded 社交媒体经理
联系方式
电子邮箱:josef.holzmayr@northern.tech
Twitter:@theyoctojester@fosstodon.org
Who we are(Northern.tech)
总部设在旧金山/奥斯陆
- 历史 -
Mender的开发商Northern.tech成立于2008年
- 使命 -
为全球联网设备提供安全的一流OTA解决方案
- 专业知识 -
超过10年的时间,确保规模化嵌入式系统的安全性
- 奉献精神 -
高度技术化的团队致力于解决客户的问题
- 认可 -
得到欧洲委员会Horizon 2020研究与创新项目的支持
- 信任 -
受到全球最大品牌的信赖
我有一个朋友叫Joël。他喜欢制作剪贴簿页面,并邮寄给自己的朋友们。到现在为止,我已经有了一个收集册,里面装着他寄给我的所有页面。
每当他完成一张新的页面,他就将其放进信封,邮寄给我。这很酷,因为他住在法国,而我在德国。
实际上,他只是把信封投进邮筒。邮政公司会收集所有信件,然后把属于我的信封放进我的邮箱里。
这真的很方便。我每天差不多检查一次邮箱。每当有来自Joël的信件,我就可以把新的页面取出来放进我的收集册里。
由于邮政公司还提供追踪服务,所以Joël能够知道我的收集册里的新页面是否已经到达。
不过,有时候也会出现问题,比如信件可能被损坏或者在插入时页面撕裂。幸运的是,我可以将问题反馈给邮政服务,他们就会通知Joël。
当这种情况出现时,Joël可以用改进的包装寄一张新的页面给我。在此期间,不会造成任何损失,我也可以照常阅读收集册。
事实上原理相同
现在假设Joël是一名软件开发人员,需要通过空中发送更新。
1. 准备好要发送的更新
2. 上传更新到OTA管理系统
3. 只有与目标设备匹配的更新才会部署到设备上
4. 如果一切正常,Joël会收到确认提示(acknowledgment)。
5. 如果出现问题,Joël会收到错误提示,并且能够进行相关操作,同时OTA解决方案返回上一级,且设备仍然可用。
现在让我们转向开源
与真实的邮政服务形成垄断(或者至少是寡头垄断)不同,我们能够通过软件自己实现这一点。
做自己的邮政服务(用于软件)
Mender是一个采用APL2.0许可的OTA解决方案。
第二部分:软件包格式
最后还缺少的是(关于软件)
为了完成我们的OTA解决方案,我们仍然需要"邮箱"。
· 接收传入的软件包
· 将其应用于设备
要么流式传输或复制到存储
切换A/B分区
报告成功
· 如果出现问题,处理回滚
Mender 微控制器单元客户端
https://github.com/joelguittet/mender-mcu-client
平台可移植性是设计的一部分。需要对以下内容进行封装或实现:
HTTPS客户端,以及TLS
线程/进程原语
写入ROM
切换分区
前往Zephyr
https://github.com/joelguittet/mender-stm32l4a6-zephyr-example
在Zephyr上将MCU客户端进行示例集成:
NUCLEO-L4A6ZG评估板
W5500以太网模块
Zephyr v3.3.0版本
利用MCUboot
cJSON
无其他依赖项,
目前的软件包在未压缩的负载上有限制。
未来的发展方向
官方客户端目前正在被重写成C++,其中Zephyr也在路线图中。
“第一个独立发布版本刚刚发布”
“稍有不同的重点,也是完全开放的”
“参与测试、贡献代码”
“在寻找合作伙伴”
Mender拥有远程终端功能,可以将其连接到Zephyr shell