文档:
User Guide: Verdi_HWSW_Debug.pdf in $VERDI_HOME/doc
介绍:
Verdi HW/SW co-debug: 对于包含CPU,需要跑嵌入式软件(C/汇编)的验证平台,可以使用verdi追踪RTL和波形对硬件debug,同时打开eclipse的HW/SW debug插件追踪C代码和汇编指令,查看registers, memory等对软件debug。还支持查看软件占用CPU时间和软件行覆盖率的report生成。
准备:
Verdi HW/SW Debug Solution(Verdi N-2017.12-SP1) 只支持 Linux RedHat 和 SUSE平台,对Linux平台有要求!
licnese: " lmstat -a " 查看是否有 Verdi_HwSwDebug 的license.
编译阶段:
对C的编译需要加上 “ -g " gcc -g / armcc -g ,编译优化建议选择 “ -O1 "
ARM 之七 主流编译器(armcc、iar、gcc for arm)详细介绍
运行阶段:
需要生成arm的 tarmac trace file, 见 arm 文档
转换阶段:
将C/汇编生成的ELF可执行文件(arm的可能是armlink生成的 xxx.axf文件)和 tarmac log 转化成verdi可以吃进的 fsdb格式
command : hwsw_debug_convert cpuType=xxx exeFile=xxx.axf -i tarmac.log -o hwsw.fsdb
cpuType关系到使用哪个pattern files ($VERDI_HOME/share/hwsw_debug/patterns)格式化处理 tarmac.log文件。
也可以自定义pattern file, 支持 .xml 定义参数。
对于多核多集群的core, 需要指定更多信息,见ug。
Debug阶段:
有两种方式,一种是利用 hwsw_debug命令打开 eclipse软件界面,再 “Launch Verdi”打开verdi硬件界面,另一种和平常debug一样,直接打开verdi界面,然后加载上述生成的hwsw.fsdb,再在”Tool -> Invoke HW/SW Debug" 打开eclipse软件界面。
本例使用第二种方式
同时吃进 chip.fsdb hwsw.fsdb
可以在这两个fsdb之间切换,在同一个nWave界面加载波形。
其中hwsw.fsdb中默认包含有pc, lr, opcode等core相关的信号。
Tool -> Invoke HW/SW Debug 打开eclipse软件界面,按照提示的默认配置选择即可。
在nWave界面选中某一时刻,eclipse界面会自动同步到这个时刻:
Registers:
Memory:
也可以设置断点和单步调试
统计函数占用core的时间和软件代码覆盖率:
略
Demo:
自带了两个demo($VERDI_HOME/demo/hwsw_debug)
make verdi 上述第一种方式
make hwsw_debug eclipse 上述第二种方式
反汇编:
formelf -c -d --interleave=source xxx.axf (armcc编译)
objdump -dS xxx.out (gcc编译)
riscv-unknow-elf-objdump -dS xxx.o
反汇编生成的code和指令用于debug.
领取专属 10元无门槛券
私享最新 技术干货