こんにちは、
UG10167 i.MX DSP ユーザーの Guide - Rev. のユニットテストを実行しようとしています。LF6.6.36_2.1.0、しかし、私たちは困難に直面しています。具体的には、tensilicaツールチェーンを使用してdsp_frameworkをダウンロードしてコンパイルすることができました。hifi4.binを起動すると、期待どおりに動作します。
# 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しかし、mp3レンダラーのテストを実行しようとするとタイムアウトが発生します。
# /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 : -110DEBUGを有効にしようと試みましたが、DSPのドキュメントによると、i.MX8QM-MEKでは動作しないようです。
もう一つは、HiFi4ファームウェアのメモリ割り当てアドレスが、linux-imxリポジトリのこのコミットまではi.MX8 QuadXPlusとi.MX8 QuadMax MEKと同じだったことです。
https://github.com/nxp-imx/linux-imx/commit/01440e5d67c873caccd06e0fc0498ddc70c0f15a
ここで、DSPノードは以下から移動されました。
DSPノードを以前のアドレスに戻し、 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@596e8000Tensilicaツールチェーンのリンカーデータはi.MX8 QuadXPlusのアドレスに合わせて構成されているため、この処理を行いました。しかし、これも効果がなく、エラーはそのままだった。
両方
gplay-1.0 test.mp3同様に
aplay test.wav 出力先を3.5mmジャックに変更すれば動作します。
コーデックのバイナリファイルが不足している可能性はありますか?
# 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
オーディオレンダリングでXAFを有効にすることは、私たちのユースケースにとって必須なので、ご協力いただければ幸いです。
ありがとうございます
ドゥシャン
こんにちは、
i.MX8QMおよびi.MX8QXPプラットフォームでの再生およびキャプチャはサポートされていません。このCASEはi.MX8MPのみがサポートされます。
よろしくお願いいたします。
迅速なご返信ありがとうございます。
なぜこのようなCASEになっているのか、具体的にご説明いただけますでしょうか?ハードウェア、DSPファームウェア、あるいはユニットテストアプリケーションのいずれかに関係しているのでしょうか?
よろしくお願いいたします。
ドゥシャン
こんにちは、
社内チームによると、i.MX8QM/i.MX8QXPボードは、専用のデバイスツリーを備えたi.MX8MPと同様に、追加の設定が必要となるため、削除されたとのことです。
ご報告いただいたのと同じ問題です。
よろしくお願いいたします。
情報ありがとうございます。
それで、あなたが言っていたカスタムdtsを削除するコミットを見つけたと思います。
https://github.com/nxp-imx/linux-imx/commit/0ba5556c6fc3249a1973f57697d740ba0e4c3681
そして、これを基に調整を加えたものを作成した。添付されています。しかし、問題は依然として解決されていない。
DSPファームウェアについてもう少し詳しく調べたいのですが、どういうわけかUART経由でファームウェアからのデバッグを有効にすることができません。私のセットアップは以下のとおりです。
Linux側では、rprocを介して開始コマンドがDSPにエコーされると、UARTクロックが有効になり、DSPノードによって所有されます。動作自体は変わらないが、UARTからの出力がない。
UART経由でDSPデバッグを有効にするにはどうすればよいですか?そもそも可能でしょうか?UARTが占有されているという問題は、SCUファームウェアが原因でしょうか、それとも別の原因でしょうか?
ありがとうございます
ドゥシャン