SDSoC 新功能介绍 - Trace
2016-04-14
作者:Ally Zhou,赛灵思工具与设计方法学专家
SDSoC开发环境
SDSoC是Xilinx旗下,用于设计开发Zynq SoC和MPSoC异构嵌入式系统的基于Eclipse的集成开发环境,可以完成从C/C++到指定目标平台上功能完整的硬件/软件系统的编译、实现、调试执行等全过程。
由SDSoC产生的系统是高性能的,同时也是复杂的硬件/软件协同工作系统。要了解在这样的系统中应用程序的执行过程是比较困难的,因为你需要同时关注在处理器上运行的软件部分和在硬件可编程逻辑上执行的加速部分,以及数据在二者之间的传递过程和顺序等。
Trace事件追踪功能
2015.4版的SDSoC中新增了一个功能,叫做Trace,即事件追踪功能,可以帮助设计开发人员深入了解应用程序的执行过程中整个系统上发生了哪些事件以及发生的顺序,用户可以以此为依据进行系统优化。
Trace提供的是一个详细视图,用户可以在其中观察应用,硬件/软件分区和系统设计选择的性能,它提供的是一个以时间轴为单位而量化的事件追踪,包括在理器上运行的软件事件,在可编程逻辑上运行的硬件加速事件和在系统中的数据传输链路事件。
由于需要读取上板应用的数据,要启动事件跟踪,用户必须将开发板经由JTAG连接到主机。
在SDSoC中启动Trace后,事件追踪功能就会被自动插入到软件代码和硬件IP中。然后,硬件部分(包括完成事件追踪功能的监控IP)经过综合和布局布线,产生比特流,而软件跟踪代码则被编译到普通用户应用中。硬件和软件的事件追踪时间戳被收集到了一个追踪流中,并且以在可编程架构中缓存的方式记录下来,由主机通过JTAG访问并读回数据。
下图橙色高亮的部分,就是应用Trace功能后SDSoC自动插入的监控IP,用以完成和记录事件追踪功能。
收集事件追踪数据的接口根据不同的操作系统而略有不同。对于Standalone和FreeRTOS操作系统,用户程序ELF使用USB / JTAG接口下载到电路板上进行配置和调试,断点也是经由了同样的USB / JTAG接口而插入,事件跟踪的数据采集,也是在相同的USB / JTAG接口上读取。
对于Linux,一旦操作系统经由SD卡启动,ELF已经复制后,便可以经过TCP/TCF运行调试,断点也可以经由TCP/TCP插入,但事件跟踪的数据仍然需要通过USB / JTAG接口读出。换句话说,要在Linux应用程序上启动事件追踪, USB / JTAG和TCP / TCF接口都需要。
Trace 视图
下图所示就是SDSoC GUI提供的Trace视图。用户应用程序的每个跟踪事件被赋予一个唯一的轨迹名称,并且对应到同一个时间轴。通常,一个跟踪点可以通过应用程序的执行创建多个轨迹,例如,如果相同的代码被循环执行,或者在加速器中被多次调用。
每个事件追踪轨迹都有几个不同的属性:名称,类型,以及启动,停止和持续时间。如果将鼠标悬停在某个轨迹上,就可以看到这个轨迹的详细属性。Trace视图中以不同的颜色区别不同类型的轨迹,例如橙色代表软件事件追踪,绿色代表硬件事件而蓝色代表数据的交互。
关于Trace更详细的介绍和分步骤教程,请关注SDSoC安装目录下的docs目录,其中有一个SDSoC_Trace2015.4.pdf文档可供参考。
由于Trace是在SDSoC 2015.4版首次发布,且目前还处于Beta阶段,其仅能完成有限的事件追踪功能,我们将在以后的版本中不断完善,提供更全面的追踪功能。敬请关注。如果您想要立即试用SDSoC 2015.4 和Trace功能,请联系当地的Xilinx销售代表。