Percepio是著名的Tracealyzer背后的公司。Tracealyzer是一款桌面应用程序,方便嵌入式工程师通过追踪直观地诊断软件中的问题。什么是追踪?追踪是一种低级日志记录机制,可用于在执行过程中解释系统状态。在对意外行为进行故障排除时,使用FreeRTOS分析基于微控制器的应用程序的追踪可以节省嵌入式工程师大量时间和精力。如需将此工具与FreeRTOS应用程序一起使用,需要简单集成TraceRecorder库以捕获追踪。在程序执行过程中,追踪可以快照形式记录并予以保存,或实时流式传输。
加载追踪后,Tracealyzer可以提供具有可配置视图的执行详细信息,例如程序时间线、事件日志、CPU负载图、内存使用情况、任务依赖关系和许多其他有用的可视化结果。这些功能有助于实现可观察性。您可以在FreeRTOS应用程序的深层追踪任务以及内核API调用。下图是在笔记本电脑上运行的 Tracealyzer的快照,其中加载了示例FreeRTOS追踪请注意追踪视图面板中的FreeRTOS API调用,例如xQueueSend()和xQueueReceive()。除了代码调试之外,您还可以看到与追踪序列相关的CPU负载图。
已加载示例FreeRTOS追踪的Tracealyzer
Tracealyzer可用于嵌入式应用程序的开发和测试或对现场遇到的问题进行分类。如需详细了解如何使用该工具,请访问Percepio网站上适用于 FreeRTOS的Tracealyzer。此外,请按照实用入门指南,使用FreeRTOS应用程序设置TraceRecorder库。
除了Tracealyzer之外,Percepio还提供另外一款基于云的产品 DevAlert。DevAlert与Tracealyzer相得益彰,具有许多适用于生产用例的功能。从可观察性的不同角度来看,DevAlert服务可以配置为通过云连接从远程设备群中捕获特定诊断。更重要的是,您可以定义有意义的特定数据元素以及要发出的警报类型。此外,设备固件和诊断数据都不需要直接发送到 DevAlert服务,而是存储在您自己的云帐户(例如AWS S3)中。
使用分离存储可解决隐私和安全问题,因为此数据保留在设备制造商的帐户中,不会上传到Percepio服务。单击即可访问诊断数据,这得益于桌面客户端DevAlertDispatcher所采用的混合设计。触发DevAlert仪表板链接时,该客户端会从单独的存储中下载请求的数据。DevAlert服务的架构图如下图所示,显示了这种分离的存储范例。
DevAlert 架构
得益于这种架构,可使用相关桌面工具实现多种类型的调试数据。您可以获得Tracealyzer追踪,查看导致检测到异常的事件序列。此外,最近还新增了对GDB故障转储的支持,如下列屏幕截图所示。
GDB 故障转储屏幕截图
您可以使用常规源代码调试器更详细地分析崩溃和其他异常,就像调试本地设备一样。如果您有更具体的需求,也可以添加自己的诊断负载、查看器工具和脚本。
要想深入了解DevAlert功能,最简单方法是启动沙盒环境,Percepio 提供免费试用版。沙盒包括一个在QEMU仿真器中运行的FreeRTOS示例应用程序,作为连接到DevAlert的虚拟设备。
首先,注册并登录DevAlert,然后在控制台中点按“激活服务”。只需简单几步,即可在浏览器中访问显示模拟电梯项目的虚拟桌面。示例中的电梯控制器是运行FreeRTOS应用程序的虚拟设备,已配置为生成不同类型的警报。如需了解控制器在任何给定时间发生的情况,请参阅电梯动画。
模拟电梯项目
您可以浏览源代码,查看如何根据正在运行的FreeRTOS应用程序中遇到的事件类型配置警报。我们提供了一组场景引发已知问题来演示警报的作用。执行场景后,返回DevAlert控制台并单击仪表板。此时您可以看到问题概述,其中警报已按唯一性分组。警报发送到服务时,仪表板将更新。
DevAlert 控制台
从仪表板的“打开”按钮可以看出,如果想通过设备更深入地了解追踪本身,甚至可以通过DevAlert启动Tracelyzer。通过这种方式,这两种工具相辅相成,为FreeRTOS 应用程序带来全面的可观察性。适用于FreeRTOS的Tracealyzer和DevAlert 还有很多值得探索之处,因此 请按照上述链接内容开始使用自己的嵌入式应用程序。快来开启快乐追踪之旅吧!