Hi,
We are trying to execute unit_tests from UG10167 i.MX DSP User's Guide - Rev. LF6.6.36_2.1.0, but we are facing difficulties. Namely, we've been able to download and compile the dsp_framework with tensilica toolchain. Booting up the hifi4.bin works as expected:
# echo start > /sys/class/remoteproc/remoteproc2/state
# dmesg
...
[ 2003.327475] remoteproc remoteproc2: powering up imx-dsp-rproc
[ 2003.328807] remoteproc remoteproc2: Booting fw image imx/dsp/hifi4.bin, size 881668
[ 2003.352398] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node vdev0buffer@94300000
[ 2003.353925] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 2003.353997] rproc-virtio rproc-virtio.2.auto: registered virtio0 (type 7)
[ 2003.354014] remoteproc remoteproc2: remote processor imx-dsp-rproc is now up
[ 2003.354255] virtio_rpmsg_bus virtio0: creating channel rpmsg-raw addr 0x1
[ 2003.354938] virtio_rpmsg_bus virtio0: creating channel rpmsg-raw addr 0x2
But attempting to execute the mp3 renderer test times out:
# /unit_tests/DSP/dsp_rend_test.out -f10 -itest.mp3
****************************************************************
Cadence Audio Framework (Hostless) : 'Decoder + Renderer'
Build: NON_XTENSA, RTOS: Linux, On: May 6 2026 13:02:32
Copyright (c) 2015-2020 Cadence Design Systems, Inc.
Lib Name : Audio Framework (Hostless)
Lib Version : 2.6
API Version : 2.0
****************************************************************
Audio Device Ready
get samplerate 44100, channel 2, width 16
renderer_setup failed, Error code : -110
We've tried to enable DEBUG, but as per the DSP documentation that doesn't work for i.MX8QM-MEK.
Another thing was that the memory allocation adderss for the HiFi4 firmawe was the same i.MX8 QuadXPlus and i.MX8 QuadMax MEK until this commit in linux-imx repository:
https://github.com/nxp-imx/linux-imx/commit/01440e5d67c873caccd06e0fc0498ddc70c0f15a
Here, dsp node moved from:
- dsp: dsp@596e8000 <- same as QuadXPlus
- dsp: dsp@556e8000 <- changed after said commit
We were able to revert the dsp node to the previous address and boot the imx8qm-mek-rpmsg.dtb:
# find /sys/firmware/devicetree/base/ -name "*dsp*"
/sys/firmware/devicetree/base/bus@5d000000/mailbox@5d280000/fsl,dsp_ap_mu_id
/sys/firmware/devicetree/base/__symbols__/dsp_reserved_heap
/sys/firmware/devicetree/base/__symbols__/dsp_lpcg
/sys/firmware/devicetree/base/__symbols__/dsp_ram_lpcg
/sys/firmware/devicetree/base/__symbols__/dsp_vdev0vring1
/sys/firmware/devicetree/base/__symbols__/dsp_reserved
/sys/firmware/devicetree/base/__symbols__/dsp_vdev0buffer
/sys/firmware/devicetree/base/__symbols__/dsp
/sys/firmware/devicetree/base/__symbols__/vpu_subsys_dsp
/sys/firmware/devicetree/base/__symbols__/dsp_vdev0vring0
/sys/firmware/devicetree/base/reserved-memory/dsp_reserved_heap@93400000
/sys/firmware/devicetree/base/reserved-memory/dsp@92400000
/sys/firmware/devicetree/base/bus@59000000/dsp@596e8000
We did this since the tensilica toolchain linker data is configured for the i.MX8 QuadXPlus addresses. But this didn't help either, error stayed the same.
Both
gplay-1.0 test.mp3
as well as
aplay test.wav
work once we've changed the output to be the 3.5mm jack.
Could it be that we are missing codec binaries?
# ls /usr/lib/imx-mm/audio-codec/dsp/
lib_aacd_wrap_dsp.so lib_dsp_voice_process_dummy.so lib_nbamrd_wrap_dsp.so lib_vorbisd_wrap_dsp.so.3
lib_aacd_wrap_dsp.so.3 lib_mp3d_wrap_dsp.so lib_nbamrd_wrap_dsp.so.1 lib_wbamrd_wrap_dsp.so
lib_mp3d_wrap_dsp.so.3 lib_vorbisd_wrap_dsp.so lib_wbamrd_wrap_dsp.so.1
Enabling XAF with audio rendering is a must-have for our use case, so any help would be appreciated.
Thanks,
Dusan