现场部署设备中的软件跟踪

软件跟踪是每个嵌入式开发者的工具箱中的一个重要工具,尤其是与高级可视化相结合。大多数嵌入式系统具有大量的周期性模式,其中相同的序列一遍又一遍重复。调试时,您经常想找到异常,即与正常循环行为的偏差发生在普通的情况下。

但是,本身的软件跟踪只是一种数据收集的形式。寻找一个关于文本或数值日志数据的一个问题类似于在大海捞针中搜索针,但是通过正确的可视化来搜索被转变为视觉模式识别的问题,人类大脑特别良好的装备。交互图形,显示执行时间,响应时间,任务交换机,在任务之间传递的消息 - 所有这些都允许开发人员在执行固件中快速发现异常,在哪里挖掘更深。

视觉跟踪诊断的工具至少已经存在了至少十年,并且已被证明在实验室中的开发和调试有用。凭借越来越多的嵌入式软件开发人员添加安全的“物联网”云连接,考虑在现场部署的设备中使用跟踪是非常自然的,以捕获在测试期间错过的真实问题。毕竟,基于软件的跟踪不需要任何额外的硬件,并且连接的物联网设备显然能够以与常规应用程序数据相同的方式上传诊断跟踪数据。通过这种方式,开发人员可以快速了解在真实运营期间导致问题的任何剩余软件问题,并获得详细的诊断以了解原因。

在这种情况下,软件跟踪与虚拟“飞行记录仪”相当,如意外情况下的客机。它是始终录制的产品的集成部分,在问题的情况下提供重要信息。但与真正的飞行记录箱不同,它是一个软件解决方案,并用于软件问题。

这种IoT设备监视的一个解决方案是Percepio的devalert(图1),由三个部分组成:固件监视器,您添加到固件中的一个小型库,以启用追踪和上传警报;我们的TraceAlyzer用于可视跟踪诊断;和云服务,负责分类和存储警报,通知开发人员,过滤删除重复警报等。

iotpartnergraphic.

图1。 Percepio Devalert提供了IoT开发人员,即时反馈关于云连接设备中的错误,允许快速连续改进设备软件。
(点击图片可放大)

初始版本在AWS上运行,用于使用AWS IOT核心的RTOS应用程序,但解决方案可以适用于其他云平台。

软件跟踪和云连接
在开发实验室和跟踪部署设备中的跟踪是两个不同的东西。如果您今天在实验室中使用Visual Trace诊断并查看将其扩展到该字段中,您需要思考一些。

与像USB或以太网这样的直接物理连接相比,云连接提供有限的带宽和更长的响应时间。上传说5 kB的数据可能需要在无线界面上不需要数十或数百毫秒。然而,在这种方法中,轨迹不是连续传输的,而是仅在生成警报时才仅在最新事件的小迹线时。警报仅适用于不寻常但重要的事情,例如,如果在应用程序代码中检测到错误,例如失败的Sanity检查,硬故障或看门狗重置。

任何互联网连接的设备都需要安全。因此,重要的是不要引入任何新的攻击载体。我们通过依靠现有的云连接而不是引入新连接,在Devalert中解决此问题。这利用了AWS和其他领先的IOT /云提供商的安全性,该提供商为云连接提供了验证的SDK,这些SDK根据最佳实践保护,例如使用X.509证书和使用TL加密通信的设备身份验证。然后,这将使Devalert上传与常规的IOT应用程序数据一样安全,并且为了增加安全性,它只需要单向通信:它永远不会侦听传入的消息。

在此方法中,警报将上传到与设备通常使用的相同的云帐户,并且具有相同的安全性。一旦在云中,将提供给云服务的一小部分数据。这不包括实际的跟踪数据,可以被视为敏感信息,因此保留在设备的云帐户中。图2A和2B更详细地示出了数据流和安全障碍。

FIG2A-DA-图1图2A。 数据流量在设备软件中启动,开发人员将警报添加到源代码。上传到设备云帐户的每个警报都包含一个短跟踪,其中最新事件前面的警报。最后,将元数据签名转发到Devalert云服务。 (点击图片可放大)

FIG2B-DA-图2

图2B。 云服务将传入的警报与客户的整个设备船队的前一个警报进行比较,并通知开发人员有关任何新问题。重复的警报被计算并存储,但未发送通知。这样,如果在多个设备中触发相同的警报,则开发人员的收件箱不会泛滥。 (点击图片可放大)

为云帐户接收警报的运营成本通常很低,但它自然取决于卷。首先,只要没有检测到任何问题,没有发送警报。通常,云提供商还向发送和存储偶尔的警报消息收费很少。大多数IOT应用程序生成更多的数据,这些数据被反映在IoT / Cloud Services的定价中。例如,向AWS IoT核发送100万MQTT消息费用为1美元。

大多数警报处理都在云服务中完成,由Percepio托管的完全托管服务。只有初始处理是在设备开发人员云帐户中完成的,这使云成本降低并简化集成。

发送超出空中更新以修复报告的错误可能会花费更多成本,因为您需要传输更多数据和所有设备。 AWS提供了一个定价示例,其中更新了60万台设备的车队的成本为1,275美元。然而,与让错误的成本保持不定的成本,这是不是很昂贵 - 损坏客户体验,降低产品评分,较低的销售,甚至事故和法律行动。

挖掘嵌入式开发
在软件问题的情况下,将您的IoT设备能够“Phone Home”具有重要的上行状态。出现错误和详细诊断的直接意识创建开发人员和部署代码之间的反馈循环,允许开发人员更快地修复错误,然后推出更新的固件更快 - 参见图3.这所谓的Devops哲学长期以来一直是移动发展的标准和云应用程序,并引入了安全的基于云的IOT平台,它已成为嵌入式开发也可以以这种方式工作。

FIG3-DA-Dashboard

图3。 TraceAlyzer中的Devalert仪表板列出了最新报告的警报和痕迹。
(点击图片可放大)

从商业角度来看,这个Devops风格的监控转化为更少的不满意的客户,因为更少的最终用户将受到生产代码中的错误的影响。尽管所有验证努力,大多数嵌入式软件都包含一些错过的错误,但它们通常不会为每个人直接出现。如果您早期了解,通常会在许多客户受到影响之前解决问题。理想情况下,应在第一个警报的秒内通知开发人员,并且提供的跟踪诊断允许快速分析和校正。然后,开发人员可以发出自动超空气更新以解决问题。即时意识和跟踪诊断可能会大大减少时间 - 修复时间,最大限度地减少受影响客户的数量。

改进的设备可靠性降低了责任风险,并降低了客户支持,退货和调试的成本。提供的诊断使开发人员更容易重现客户问题,因为它们直接从设备获取信息,并且不必依赖于用户来描述这种情况。如果没有自动反馈,您依靠最终用户报告任何问题并提供足够详细的信息。一个模糊的错误报告,如“系统停止响应”并不是很有帮助,并且可能需要数周才能找到可能的原因。甚至那么,这只是你最好的猜测 - 你真的无法真正知道你是否解决了正确的问题。

不仅是虫子
有一点要注意的是,警报不必是刚刚错过的错误和生成的错误。由于开发人员可以自由决定应该生成警报的位置和为何,它们也可以使用它们来监视应用程序的关键性能指标,并查看偶尔性能问题的原因。

监控用户界面还可以揭示有趣的信息。假设您有一个用户在触摸屏上打开菜单的情况,例如,在汽车的信息娱乐系统中,然后犹豫了继续前进。要捕获此类问题,应用程序开发人员可以在每个输入事件之后启动计时器,并且如果在5秒内没有收到输入,则会生成警报。如果此,然后接收到用户界面的同一部分的许多警报,这可能是重要的反馈,可以帮助您的组织构建更好的产品。

总而言之,在部署的设备中利用软件跟踪和基于云的警报具有重大好处,并不复杂。但是,要完全接受Devops风格的工作流程,需要能够进行空中更新和响应的开发组织,了解软件测试的局限性以及在释放后也持续改进的重要性。


约翰牛皮纸 Ceo  -  Percepio

约翰牛皮纸是Hercepio AB的首席执行官,他于2009年创立。他在计算机科学中掌握了博士学位,是Percepio的最初开发人员,可视追踪诊断。他在嵌入式软件时序分析中拥有应用学术研究,与地区行业密切合作进行。在此之前,他在ABB机器人上嵌入了嵌入式软件开发。


相关内容:

更嵌入, 订阅嵌入式’S每周电子邮件时事通讯.

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.

发布时间: 2021-05-13 14:52:41

最近发表