SystemViewMac版是Mac电脑上的一款分析嵌入式系统的工具。SystemViewMac版可以帮助用户来分析嵌入式系统的运行时的行为,连续实时记录嵌入式系统,捕捉任务、中断、定时器、资源、API调用和用户事件。
注意事项
MacOS10.15系统下,如提示“无法启动”,请在系统偏好设置-安全性与隐私-选择【仍要打开】,即可使用。
macOSCatalina(macOS10.15)已损坏无法打开解决办法:
打开终端(屏幕下方“小火箭”——“其他”——打开“终端”),在终端中粘贴下面命令:
sudoxattr-r-dcom.apple.quarantine,然后输入个空格,再将应用程序目录中的软件拖拽到命令后面,按回车后输入自己电脑密码执行,比如需要打开sketch应用的命令是:
sudoxattr-r-dcom.apple.quarantine/Applications/sketch.app/
对于下载了应用,显示“打不开或者显示应用已损坏的情况”的用户,可以参考一下这里的解决办法《Mac打开应用提示已损坏怎么办Mac安装软件时提示已损坏怎么办》。10.12系统之后的新的Mac系统对来自非MacAppStore中的应用做了限制,所以才会出现“应用已损坏或打不开的”情况。
用户如果下载软件后(请确保已下载完的.dmg文件是完整的,不然打开文件的时候也会出现文件损坏无法打开),在打开.dmg文件的时候提示“来自不受信用的开发者”而打不开软件的,请在“系统偏好设置—安全性与隐私—通用—允许从以下位置下载的应用”选择“任何来源”即可。新系统OSX10.13及以上的用户打开“任何来源”请参照《macOS10.13允许任何来源没有了怎么办macOS10.13允许任何来源没了怎么开启》
软件特色
SystemView是一个用于嵌入式系统的实时记录和可视化工具,它可以揭示应用程序的真实运行时行为,比调试器提供的系统洞察力要深入得多。当开发和处理由多个线程和中断组成的复杂嵌入式系统时,这一点尤为有效:SystemView可以确保系统按设计执行,可以追踪低效,并显示非预期的交互和资源冲突,关注每一个系统tick的细节。
通过J-Link和SEGGERRTT技术、IP或UART进行记录。
采集数据的实时分析和可视化
系统侵入性最小,可在任何CPU上工作
适用于任何RTOS和裸机系统
标准的SEGGERembOS、emNet和emFileAPI调用跟踪。
包括uC/OS-III、MicriumOSKernel和FreeRTOS仪器。
免费用于非商业用途,不受限制
系统中发生了什么?
在目标系统上,SystemView记录了运行时发生的事件。这可以是中断、定时器、任务切换和RTOS的调度、API函数调用和返回,或者用户事件和消息。这些事件从目标机中检索出来,在SystemView应用程序中进行分析和可视化,同时目标机继续运行。SystemView中的事件窗口显示记录的事件以及更多信息。
为了降低目标系统的通信开销,它只需要记录基本信息,如"在最后一个事件发生后,API函数Idx被调用,参数值为y和z,并有n个ticks"。
SystemView对事件的所有信息进行分析并显示。API函数名称及其参数和值
呼叫发生时的记录时间或系统时间。呼叫发生的任务,API调用的持续时间
一个普通事件的长度是4到8个字节,在200MHz的频率下,需要大约1个us来记录。每秒钟10,000个事件,SystemView增加的开销不到CPU时间的1%,而且数据量很容易在记录器的带宽限制内。
事件的时间戳可以精确到1个CPU周期,相当于200MHzCPU上的5ns。
系统的驱动力是什么?
大多数嵌入式系统没有线性代码执行。它们实现了定时器的中断和外设的使用,或者可能使用具有多个任务的RTOS。SystemView记录了这样一个系统的运行时行为。
目标在进入和离开中断时、任务准备执行时、任务开始或停止执行时都会产生事件。SystemView应用程序将这些事件可视化,在时间线窗口中绘制出系统时间,并在事件发生的上下文中显示所有其他事件。
这样可以方便地分析任务运行的时间、时间长短和原因,或者在中断时发生了什么。
系统中的问题和低效可以通过这种方式确定。
不正确的任务优先级或优先级反转导致饥饿感
任务间沟通不正确,低效率的延迟和超时,虚假或不必要的中断
系统时间花在哪里?
嵌入式系统的CPU周期是有限的。因此,优化任务的性能以及正确掌握执行顺序和时间分配是很重要的。
通过CPU负载窗口,SystemView可以帮助分析CPU负载高的地方。通过SystemView提供的高负载时间或之前发生的信息,可以调整系统以避免这种可能导致重要任务延迟执行的瓶颈。
运行时窗口提供了有关上下文的运行时分布的额外信息。它可以用来验证每个上下文是否在其时间限制内运行,或者发现上下文意外运行时间过长的情况。
如何跟踪和测量性能?
SystemView提供的事件特别适用于标记目标系统中的某些点。为了方便地测量从A点到B点的持续时间,或者从A点通过B点到C点的持续时间,可以生成标记开始、标记和标记停止事件。SystemView应用程序会自动链接相应的标记,并添加更多信息,如测量的运行时间和运行次数。
如何获取日志输出?
SystemView还包括对消息的记录与记录。简单的字符串可以记录为日志、警告或错误信息。日志功能支持对字符串进行格式化,类似于printf()。由于格式化字符串可能会很耗时,并且需要额外的内存,因此可以推迟到SystemView应用程序中进行。目标系统只需将格式字符串和参数记录在事件中,SystemView应用程序负责格式化字符串并在终端窗口中打印出来。
开发
开发者工具