是否有任何可用的云服务或用于空中更新固件的框架?


9

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


到目前为止,还没有这样的服务。通常,实施一个非常繁琐,可以实现针对特定设备类型的服务。
bravokeyl

mender.io,这正是您想要的。但我相信,它是针对“高端”嵌入式设备和8位节点的。

Answers:


4

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

也许有一些最佳实践可以以安全可靠的方式为嵌入式设备实现空中固件升级?

在实践方面,我要做的如下:

1)有一个非常小的引导加载程序,它尽可能的笨拙,只能在以下约束下加载固件:

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

2)将存储设置为具有两个大小合适的“启动存储区”,以处理将来的发展和固件的增长。

3)下载后对固件映像进行校验和,以确保在刻录之前是正确的;在刻录后对目标库进行校验和,以再次确保启动不会因缺少某个地方而丢失。

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


5

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

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

实际上,一旦考虑了开发成本,诸如OTA更新之类的功能可能会推动您的操作系统和设备选择。


5

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

您可以使用Arduino IDE,Web浏览器或HTTP Server进行更新。

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


通常,关于该库和Arduino的最不愉快的事情之一就是缺乏安全性。此解决方案适用于DIY或学校项目,但不适用于商用设备。我不喜欢的特别事情是没有任何身份验证:它无法防止使用具有正确MD5摘要的恶意固件替换固件。
Vadimchik


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.