是否有任何现成的云服务或框架用于无线固件更新?

物联网 安全 微控制器 无线更新
2021-06-01 01:18:37

我有资源受限设备的原型(8 位 MCU,无操作系统固件),与 Web 服务器交互。我想知道是否有任何解决方案、框架或云服务可以从 Web 更新我的设备固件。根据我的研究,有 Microsoft IoT Hub,但我担心它不适合这种资源受限的设备。我发现还有一个解决方案 - mbed Cloud 门户,但我不确定它是如何工作的。任何人都可以通过任何建议来帮助我,也许有一些最佳实践可以以安全可靠的方式为嵌入式设备实现无线固件升级?

4个回答

mbed cloud 确实提供了完整的固件更新功能,但我认为如果您在没有操作系统的情况下运行,您将无法将其移植到您的平台上。我认为今天的源代码没有开放,因此您甚至无法将其用作参考。我也不确定现在获得访问权限的标准是什么。

您需要考虑您需要的功能 - 这是一个大规模部署,您需要能够进行分阶段的固件推出,您是否关心对固件进行签名,或者您的平台是否对任何具有物理访问权限的人完全开放?您有多关心能够在没有 JTAG 的情况下恢复变砖的设备?

实际上,OTA 更新等功能可能会推动您选择操作系统和设备——一旦您将开发成本考虑在内。

查看 OTA,它是 Over The Air 的缩写。Arduino 具有该属性

您可以使用 Arduino IDE、Web 浏览器或 HTTP 服务器进行更新。

Arduino IDE 选项主要用于软件开发阶段。其他两个选项在部署后会更有用,可以使用 Web 浏览器手动或使用 http 服务器自动为模块提供应用程序更新。

我将只回答这一部分,因为我知道对于未知的冷杉没有“开箱即用”系统。

也许有一些最佳实践可以以安全和健壮的方式为嵌入式设备实现无线固件升级?

在实践方面,我会做如下:

1)有一个非常小的引导加载程序,尽可能愚蠢的东西只负责加载具有以下约束的固件:

  • 能够记录上次启动成功/失败(在失败的情况下回滚到工作版本)
  • 在发生灾难性故障时接受新固件的某种紧急过程(可选,如果允许“砖砌”设备,则可以避免)

2) 将您的存储设置为具有两个合理大小的“引导库”,以应对未来的发展和固件增长。

3) 下载后的固件镜像在烧录前进行校验以确保其正确,烧录后再次校验目标库以确保不会因某处丢失位而导致启动失败。

忽略的点通常是下载的镜像在刻录前后的校验和,导致写入设备的系统损坏。使用两个库并交替使用通常可以简化更新过程。

你可以看看Particle (IoT)我不确定他们是否支持 Arduino,但他们确实提供了一些廉价的嵌入式板卡。