Percepio View免费跟踪工具现在可以针对Zephyr应用程序进行跟踪和可视化分析了。Percepio View可以帮助开发人员理解和调试Zephyr中的固定优先级的多线程行为及复杂的线程交互。
Percepio是Zephyr项目的活跃成员,将Percepio View作为免费工具提供给Zephyr社区,帮助开发者构建更好的实时应用程序。

Percepio View不仅仅是一个“事件查看器”,它还可以理解互斥信号量、信号量和消息队列等RTOS概念,以及Zephyr系统调用的含义。例如,对阻塞的系统调用通过标签颜色突出显示,在红色标签(阻塞调用)选中时,相应的绿色标签(从阻塞调用返回)也被突出显示。通过按钮“Selection Details”高亮显示相关的事件,如下所示。

Percepio View依赖于TraceRecorder库,该库包含在Zephyr代码中,并可通过Kconfig系统进行配置。启用后,它将使用Zephyr内核中的跟踪hook函数来跟踪内核事件,如上下文切换和系统调用。

用户还可以通过调用TraceRecorder API来记录用户定义的事件(“用户事件”)。让用户可以同时观测内核事件和应用程序事件。用户事件日志比printf日志记录方式更快。
Percepio View仅提供“快照跟踪”模式,跟踪的数据将存储在目标RAM中的环形缓冲区中,后续使用GDB调试器连接方式保存到主机。该方式将跟踪长度限制为跟踪缓冲区的大小,但即使是短的快照跟踪也可能非常有用。例如,如果某个系统调用出现了零星的超时错误,可以在返回值错误处理代码中设置一个断点,通过在此时保存快照数据,可以检查最有可能解释问题的事件序列。

读取快照可以使用以下GDB命令:dump binary value trace.bin *RecorderDataPtr
如果使用VS Code,可以在调试控制台输入“-exec
还可以配置Percepio View,自动执行跟踪快照。
• 在主菜单中选择Trace->Open Snapshot Tool,选择GDB作为Snapshot Engine
• 单击“Settings”按钮,在Percepio View中配置GDB设置
GDB路径:输入GDB客户端可执行文件的完整路径,例如在Zephyr SDK文件夹中的“arm-zephyr-eabi-gdb”。
镜像路径:指定构建文件夹中*.elf文件的路径。
初始化命令:target remote localhost:
快照跟踪模式对硬件要求低,基本上适用于任何电路板,并且特定于硬件的细节(如事件时间戳)由Zephyr内核处理。Zephyr中的TraceRecorder集成已经在600多个电路板上进行了验证。
如果需要连续跟踪流的解决方案,可以使用Percepio View的商用版本Tracealyzer,包括更多视图和特性。
全部0条评论
快来发表一下你的评论吧 !