专栏算法工具链J6X VDSP调试方法

J6X VDSP调试方法

费小财2025-04-08
128
0

VDSP调试指南

日志查看

VDSP FW的日志默认输出到串口中,用户可直接查看串口。但是VDSP
FW日志和kernel日志都会输出到串口中,存在相互干扰的问题,用户可通过降低kernel日志等级来防止日志干扰:

echo 0 > /proc/sys/kernel/printk

当没有串口可用的情况下,用户可通过ssh登录板子,后台默认会启动hrut_remoteproc_log服务:

#J6X VDSP0 默认开机执行的启动命令,日志保存路径:/log/dsp0/message
hrut_remoteproc_log -b /sys/class/remoteproc/remoteproc1/log -f /log/dsp0/message -r 2048 -n 200
#J6X VDSP1 默认开机执行的启动命令,日志保存路径:/log/dsp1/message
hrut_remoteproc_log -b /sys/class/remoteproc/remoteproc2/log -f /log/dsp1/message -r 2048 -n 200
VDSP FW的日志会写入Share
memory中,由CPU侧log服务进程存入文件系统中。因此用户可查看以下路径下的文件查看日志,但是需要注意的是这里的日志并不是实时的。
#J6X VDSP0的日志路径:
/log/dsp0/message,
/log/dsp0/archive/
#message是临时文件,存满之后会写入到archive/目录下,当该目录下的文件达到一定数量后,会被压缩放到tar_log/目录下
#对应J6X VDSP1的日志路径:
/log/dsp1/

线程状态查看

通过以下命令可在串口中查看VDSP侧的线程状态。需要注意的是以下数据的统计和输出可能会影响VDSP的性能。

使用方法:首先需要代码中使能#define THREAD_STACK_CHECK
(1),其次需要在新启动的线程前使能栈跟踪,如下所示:
(void)hb_enable_stack_track(dev_thread_stack, sizeof(dev_thread_stack)/sizeof(dev_thread_stack[0]));
#J6X VDSP0:
echo on > /sys/devices/virtual/misc/vdsp0/vdsp_ctrl/dspthread
echo off > /sys/devices/virtual/misc/vdsp0/vdsp_ctrl/dspthread
#J6X VDSP1:
echo on > /sys/devices/virtual/misc/vdsp1/vdsp_ctrl/dspthread
echo off > /sys/devices/virtual/misc/vdsp1/vdsp_ctrl/dspthread

coredump查看

和coredump相关的系统软件初始化主要有两部分:注册异常和使能看门狗。

hb_wdt_on();
hb_enable_coredump();

目前xos能够处理的异常类型如下:

不应在 VQ8 上为异常原因 4(调试异常)/5(SYSCALL 异常)/8(协处理器异常)注册异常处理程序,为系统预留使用。
需要注意的是:9-15 为预留类型,也需要略过不注册。
离线调试方法如下:
VDSP发生coredump时,Acore会把Vdsp所有可能使用的memory空间(iram/dram0/dram1/reserved
ddr)全部写入指定的文件系统中,路径如下:
#vdsp0
/log/coredump/
#vdsp1
/log/coredump/
新建restore.script.sh脚本,4个memeory
dump文件的路径根据实际项目的存放路径设置,把获得到的CPU寄存器复制到该脚本对应处,如下所示:

打开xt-gdb命令行(xplorer或者命令行模式均可),按照顺序执行如下操作:

xt-gdb vdsp0 (可执行文件的目标文件)
(xt-gdb) >> source restore.script.sh
(xt-gdb) >> run
ctrl+c //取消运行
(xt-gdb) >> stepi
(xt-gdb) >> info threads
(xt-gdb) >> bt

backtrace调试信息显示如下:

Stack usage查看

Stack usage的说明建议阅读Xtensa® XOS Reference Manual Reference Manual。

MPU配置

目前部署的MPU主要两个作用,一是用来限制vdsp访问地址的范围,访问超过MPU允许的范围会报coredump错误,第二个作用是可以配置地址段的属性,详细介绍请参考Xtensa®
System Software Reference Manual。

vdsp地址映射以及MPU保护部分如下图所示,访问MPU保护地址范围会报coredump错误。

Description

报错log如下图所示,错误地址为0x0,表示访问了不允许访问的地址;

Description

目前对于vdsp地址的属性配置,主要包括三个部分:

(1)对于ION空间的属性配置: XTHAL_MEM_WRITEBACK

(2)对于两个共享内存区域的属性配置:XTHAL_MEM_NON_CACHEABLE

(3)对于除(1)(2)外其他段的属性配置:XTHAL_MEM_WRITEBACK

算子开发

算子开发相关参考

Cadence文档路径位置

安装Xplorer后,可通过如下位置xtensaXtDevToolsdownloadsRI-2023.11docs查看已下载的文档路径。
算法工具链
社区征文征程6技术深度解析官方教程
评论0
0/1000