DSP 调试
在阅读本章节前,请确保按照 文档描述 安装了 xt-ocd 工具。 当前 xt-ocd 支持通过 SWD 协议使用 J-Link 调试器进行 DSP 调试。您需要先安装 J-Link 驱动,我们使用的版本是 V6.44。更新的版本应该也可以工作,但尚未经过测试。
将 DSP 连接至 J-Link
Xtensa OCD Daemon 的默认安装路径为: C:\Program Files (x86)\Tensilica\Xtensa OCD Daemon 14.08
。
用以下代码替换路径下的 topology.xml
文件 C:\Program Files (x86)\Tensilica\Xtensa OCD Daemon 14.08
(Linux 系统下路径为 /opt/Tensilica/xocd-14.08/topology.xml
),然后根据您的 J-Link 序列号修改 usbser 值。
<configuration>
<controller id='Controller0' module='jlink' usbser='XXXXXX' type='swd' speed='4000000' locking='1'/>
<driver id='XtensaDriver0' dap='1' xdm-offset='0x80000000' module='xtensa' step-intr='mask,stepover,setps' />
<chain controller='Controller0'>
<tap id='TAP0' irwidth='5' />
</chain>
<system module='jtag'>
<component id='Component0' tap='TAP0' config='trax' />
</system>
<device id='Xtensa0' component='Component0' driver='XtensaDriver0' ap-sel='3'/>
<application id='GDBStub' module='gdbstub' port='20000'>
<target device='Xtensa0' />
</application>
</configuration>
确保 bypass-fastmem 参数与示例一致。您可以在 J-Link commander 中查找 usbser 值:

使用 Xplorer 调试 DSP 内核时,建议先擦除整个 Flash,然后仅下载 KM4/KR4 固件。 调试启动时,DSP 固件将通过 J-link 直接加载到 PSRAM 中。
点击 Debug Configurations…
选择 Xtensa On Chip Debug,然后创建新的调试配置。勾选 Use XOCD Manager 选项,点击 Connect 按钮。刷新OCD Version后选择 14.08 版本。
Topology File 应选择上一节中编辑的
C:Program Files (x86)TensilicaXtensa OCD Daemon 14.08topology.xml
。 Connection Type 选择SWD。选择 core0,将 Download binary 设为 Always。然后点击 Apply 和 Debug。
默认情况下,DSP内核将在main函数的第一行停止。如需检查内存值,建议使用 Bounded Memory 并在内存值变化时手动刷新内存表。
备注
Linux环境下的操作步骤相同。
如出现以下 GDB Error,请复位SOC重启芯片。
打开命令提示符窗口,切换目录到
C:\Program Files (x86)\Tensilica\Xtensa OCD Daemon 14.08
运行
xt-ocd -c topology.xml
备注
某些警告信息属于正常现象可忽略。如果XDM驱动初始化报错,可能需要先初始化并启动DSP核再调试。
在
<dsp_sdk>\project (or auto_ws)\project_dsp\bin\HIFI5_PROD_1123_asic_UPG\Release
路径下有project_dsp
文件。将其复制到
C:\usr\xtensa\XtDevTools\install\tools\RI-2021.8 -win32\XtensaTools\bin
目录下。打开命令提示符窗口,切换目录到
C:\usr\xtensa\XtDevTools\install\tools\RI-2021.8-win32\XtensaTools\bin
。CALL0 ABI的CMD命令如下:
xt-gdb --xtensa-core=HIFI5_PROD_1123_asic_UPG project_dsp target remote localhost:20000 reset load
接下来就可以正常调试了。调试命令可以参考:xtensa_debug_guide.pdf 和 gnu_gdb_ug.pdf。
Debug 建议
如果始终无法连接调试端口,可能是因为 SWD 端口被关闭(SWD 端口被用作普通 GPIO)。需要打开 GPIO 的 SWD 功能。
默认情况下,开始调试 DSP 时 KM4/KR4 会停止运行。如需在 KM4/KR4 运行状态下调试 DSP,需要在 Km4 bootloader(
component/soc/amebalite/bootloader/bootloader_km4.c
)中修改寄存器值。在
BOOT_Image1()
函数对应位置添加红框内代码:HAL_WRITE32(0xE0042400, 0, 0);
Linux 系统调试步骤相同,注意可执行文件路径。建议将以下路径加入 PATH:
/opt/Tensilica/xocd-14.08 /opt/xtensa/XtDevTools/install/tools/RI-2021.8-linux/XtensaTools/bin
如果使用
auto_build.sh
而非 Xplorer 编译项目,可在以下路径找到 project_dsp elf 文件:<dsp_sdk>/auto_ws/project_dsp/bin/<configuration_name>/Release
更多调试指南请参考:xtensa_debug_guide.pdf 和 gnu_gdb_ug.pdf。