我有资源受限设备(无操作系统固件的8位MCU)与Web服务器交互的原型。我想知道是否有任何解决方案,框架或云服务可用于从Web更新我的设备固件。根据我的研究,有Microsoft IoT Hub,但恐怕它不适用于此类资源受限的设备。我发现还有另一种解决方案-mbed Cloud门户,但是我不确定它如何工作。谁能通过任何建议为我提供帮助,也许有一些最佳实践可以以安全可靠的方式为嵌入式设备实现空中固件升级?
我有资源受限设备(无操作系统固件的8位MCU)与Web服务器交互的原型。我想知道是否有任何解决方案,框架或云服务可用于从Web更新我的设备固件。根据我的研究,有Microsoft IoT Hub,但恐怕它不适用于此类资源受限的设备。我发现还有另一种解决方案-mbed Cloud门户,但是我不确定它如何工作。谁能通过任何建议为我提供帮助,也许有一些最佳实践可以以安全可靠的方式为嵌入式设备实现空中固件升级?
Answers:
我将只回答这一部分,因为我知道对于未知的恶梦,没有“开箱即用”的系统。
也许有一些最佳实践可以以安全可靠的方式为嵌入式设备实现空中固件升级?
在实践方面,我要做的如下:
1)有一个非常小的引导加载程序,它尽可能的笨拙,只能在以下约束下加载固件:
2)将存储设置为具有两个大小合适的“启动存储区”,以处理将来的发展和固件的增长。
3)下载后对固件映像进行校验和,以确保在刻录之前是正确的;在刻录后对目标库进行校验和,以再次确保启动不会因缺少某个地方而丢失。
忽略点通常是下载的映像在刻录之前和之后的校验和,从而导致设备上写入的系统损坏。使用两个存储区并交替使用通常可以简化更新过程。
mbed cloud确实提供了完整的固件更新功能,但是如果您没有操作系统运行,我认为您很难将其移植到平台上。我认为消息来源今天没有开放,因此您甚至无法将其用作参考。我也不确定现在获得访问的标准是什么。
您需要考虑所需的功能-这是否是大规模部署,需要能够分阶段进行固件发布,您是否关心签署固件,还是平台完全对任何具有物理访问权限的人开放?您有多少在乎没有JTAG的情况下能够恢复砖头设备?
实际上,一旦考虑了开发成本,诸如OTA更新之类的功能可能会推动您的操作系统和设备选择。
查看OTA,它是Over The Air的缩写。Arduino具有该属性。
您可以使用Arduino IDE,Web浏览器或HTTP Server进行更新。
Arduino IDE选项主要用于软件开发阶段。部署后,使用网络浏览器手动或使用http服务器自动为模块提供应用程序更新模块,这两个其他选项将更为有用。
您可能会看看粒子(IoT)。我不确定它们是否支持Arduino,但它们本身确实提供了一些廉价的嵌入式板。
我发现了另一个有趣的平台是DeviceDrive。这是解释工作原理的视频。他们的OTA系统似乎非常灵活。