当然,最明显的优势是更新更简单,通常是透明下载和安装的。当这与软件跟踪相结合时,它就成为一种强大的机制,可以提高各种嵌入式物联网系统的质量和可靠性。
系统仍然部署有错误
尽管开发人员尽了最大的努力,这些系统仍然部署在代码中,但仍然存在bug。一个开发团队在开发过程中平均每1000行代码引入120个bug,大约每1000行代码引入6个bug,通常保留在软件中。当有成千上万的物联网设备部署在现场时,依靠用户报告这些缺陷引起的问题既不可靠也不可扩展。用户报告也往往含糊不清,对解决问题毫无帮助。当有数以百万计的设备时,这一点就更重要了。
这些漏掉的错误可能不会马上出现,但只会在某些情况下导致问题,否则它们会在产品发货前被发现。虽然“空中传送”(OTA)更新可以解决现场问题,但开发人员需要某种反馈系统来了解已部署设备中的问题,而且他们需要快速了解。这种方法在移动和云应用程序(DevOps)的开发中长期以来一直是标准的,现在它也适用于嵌入式开发。
确定新的重要问题
找出并解决该领域的问题的关键是结合软件跟踪、云管理和OTA更新,但这是一个复杂的挑战。在资源已经受到限制的系统中,跟踪代码需要尽可能高效。回云的链接需要安全、透明并传输正确的数据,以帮助开发人员快速、轻松地识别任何问题。云服务必须确定哪些问题是新的和重要的,然后通知开发人员有一个问题需要解决。一旦修复,更新的软件必须通过OTA更新分发到所有设备。所有这些都需要扩展到数百万台设备。
信息流从IoT设备的错误处理代码开始,例如已经存在的健全性检查和故障异常处理程序。使用软件代理,固件问题会作为警报上载到客户的云帐户。警报可能包括错误消息和与特定问题相关的任何其他信息,例如软件状态变量和硬件寄存器。根据问题的严重程度,警报可以直接上载,也可以在云连接恢复后在设备重新启动后上载。
警报还可能包括设备中最新软件事件的跟踪,这些事件由代理自动记录。跟踪提供了错误的详细信息和上下文,使开发人员更容易识别错误。
在这里,编码效率是关键,以确保只需要最少的内存来存储跟踪,从而为开发人员提供识别真正问题所需的上下文。这一点很重要,有两个原因:在收集足够长的跟踪记录时,即使是从内存受限的物联网系统中,也可以将上传时间缩短到几分之一秒,并将警报消息和存储的云端操作成本降至最低。这种编码效率使得在现场使用跟踪技术成为可能,也可以在小型物联网设备中使用,带来显著的优势。
来自固件代理的警报上载到客户的云服务,该服务配置为存储警报,并通知处理分类、统计和向开发人员发送通知的引擎。它还提供了配置选项,例如标识通知应在哪些条件下发送以及发送给谁。
收到的通知
当开发人员收到有关新问题的通知时,他们可以访问警报和跟踪以查看问题所在。
隐私在这里也是关键。软件跟踪永远不需要离开客户的云帐户。云处理只需要警报的匿名签名,可以在外部云服务中提供。这些信息可以完全透明、可配置,并且本身没有意义。通信和存储由开发者的物联网平台中的现有功能提供,使用认证和加密的最佳实践。
实验室测试是不够的
由于当今嵌入式物联网系统的复杂性,实验室测试不足以消除所有软件问题。实时跟踪和警报可以在发生错误时识别出错误,并自动通知开发人员以加快解决速度。
这样的系统必须具有可扩展性、安全性和对开发者透明。一旦到位,它可以在许多用户受到影响之前,在第一次出现问题时立即提供意识,并让开发人员充分利用OTA更新来快速改进他们的产品。