2020.10.14
调试测试工具是芯片开发过程中必不可少的关键器件,SiFive和劳特巴赫从2017年起就基于RISC-V内核的TRACE32® 支持展开了合作。
作为全球领先的RISC-V商业化处理器IP、平台及解决方案提供商——SiFive,今年3月发布了高级工具包——SiFive Insight,用户可通过硬件Trace和Debug,实现更快的芯片设计、软硬件集成和应用程序的开发。
劳特巴赫是全球领先的硬件辅助调试工具厂商,在设计和制造一流调试器和仿真器方面拥有40多年的经验。劳特巴赫TRACE32®提供了嵌入式开发全生命周期的支持, 覆盖了Pre-Silicon,芯片Bring-Up, Bootloader、 Firmware的开发,OS和App的调试,以及后续的软件测试等过程。目前劳特巴赫TRACE32®已完全支持SiFive Insight技术及SiFive全系列内核IP的使用。
以下将会以SiFive E76为例,介绍如何在劳特巴赫TRACE32® PowerView 软件中对SiFive IP进行调试及跟踪。
调试方案
SiFive E76是32位嵌入式处理器,主要针对需要高性能和高能效比的应用产品,具有顺序超标量发射8级流水线。其使用的SiFive Insight技术,提供了完整的调试方案和基于NEXUS 5001标准的跟踪方案。
劳特巴赫TRACE32® PowerView 软件提供了兼容多种架构/芯片、并且易于上手使用的调试界面。
针对SiFive E76,TRACE32®只需从CPU列表中选择通用核RV32,便可以通过点击Up快速连上芯片。
Up 操作一般会对芯片进行复位,并将PC指针停在复位后的第一条指令处,因此针对不同复位电路设计,TRACE32®提供了多种复位模式可选。
SRST(默认模式)
HartRST/NDMRST
TRACE32®连上SiFive E76 Core后,通过界面的快捷工具栏,可以对E76进行单步、全速运行、暂停等控制。同时,在这个过程中也可以通过View菜单,观察一些调试资源,例如:寄存器、内存、C/C++源码、变量等等。
跟踪方案
SiFive Insight 跟踪方案,可以将芯片内核产生的Nexus Trace 数据输出到芯片内部的Buffer,或者TRACE32® 跟踪工具的内存中,从而轻松实现关键代码回溯、函数调用关系分析、系统性能统计以及代码覆盖率分析等功能。借助这些功能,软件开发人员可以快速准确地定位系统不可复现或疑难问题。
TRACE32只需针对SiFive片上跟踪技术做简单的配置,便可快速上手使用。
配置好后,直接运行程序,就能看到TRACE Memory的使用情况。
基于采集下来的Trace数据,TRACE32®可以将函数的相互调用关系绘制成时序图。同时,在观察分析时,可以对某个关键点,设置CTS(Context Tracking System, TRACE32®基于Trace的上下文重建功能)。
进入CTS模式后,List源码窗口也会发生相应的改变:源码程序会定位到关键点,同时程序控制按钮,除了原来的Step、Step Over等功能外,还多了一些反向的Step、Step Over按钮。基于这些功能,便能够在程序有可能出问题的关键点,反复分析,观察当时程序的上下文以及寄存器等情况,快速地定位程序BUG位置。
或者有的时候,系统工程师可能对系统的性能比较关心。那么借助TRACE32®的Trace数据统计功能,便能对一个时间段内的 CPU负载进行统计并以数据或者图表的形式呈现出来,帮助工程师进行热点函数分析和性能优化。
此次的演示充分说明了SiFive Insight技术的成熟度,操作的便利性,且已获得业内主流调试跟踪工具的支持,比如劳特巴赫的TRACE32®。SiFive Insight可以使开发者无需改变原有工作流程,就可以基于RISC-V的应用程序和配套软硬件,轻松地进行Debug和Trace,加速产品的开发。