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

评论

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

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

#1 楼

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


也许有一些实现固件升级的最佳实践



以无线方式安全可靠地为嵌入式设备服务?


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


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

2)设置您的存储中有两个大小合适的“启动存储区”,以应对将来的发展和固件增长。

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

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

#2 楼

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

您需要考虑所需的功能-这是大规模部署,需要能够执行分段固件推出,您是否关心签署固件,还是您的平台完全对具有物理访问权限的任何人开放?

实际上,一旦考虑了开发成本,像OTA更新这样的功能很可能会驱动您的操作系统和设备选择。

/>

#3 楼

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

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


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


评论


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

–Vadimchik
17年4月7日在9:06

#4 楼

您可能会看看粒子(IoT)。我不确定他们是否支持Arduino,但它们本身确实提供了一些便宜的嵌入式板。

#5 楼

我发现了另一个有趣的平台是DeviceDrive。这是解释工作原理的视频。他们的OTA系统似乎非常灵活。