2403713_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2403713_ja-JP

2403713_ja-JP

i.MX8M Plus HiFi4 DSP(Zephyr):SDMAのサイクリックTXコールバックが一度だけ発生し、その後停止します

Zephyrを動かすi.MX8MP HiFi4 DSPでは、Zephyr nxp、dai-sai(SAI3)、nxp、sdma(SDMA3)ドライバーをサイクリックモードでハードウェアエンドポイント再生パスを起動しています。再生開始時には、SDMAチャネル完了コールバックが正確に一度だけ発生し、その後はSDMA割り込みが発生しません。周期的なSDMA転送が定期的な割り込みを生成し続けない理由を特定するのにご協力をお願いします。


  ハードウェア/起動
- ボード:i.MX8MP EVK、DTS: IMX8MP-EVK-DSP.DTS
 - DSPコア:HiFi4(Cadence Xtensa)、ボードターゲットはimx8mp_evk/mimx8ml8/adsp
- コーデック:WM8960
- ペリフェラル:SAI3、SDMA3

建築および建設の詳細
- アーキテクチャ概要: https://audioreach.github.io/platform/nxp.html#architecture-overview
- ビルドの詳細:
- ヨクト: https://audioreach.github.io/platform/nxp.html#step-1-create-a-yocto-image
     - Linux(コントロール/ホスト):Yocto(scarthgap)、linux-imx。
     - 回収マニフェスト:imx-6.6.52-2.2.0.xml
- ゼファーDSP画像: https://audioreach.github.io/platform/nxp.html#step-2-create-a-zephyr-image

- Zephyr(v4.2.0)、HiFi4上で動作する AudioReach Engine信号処理フレームワーク。

  私が作っているもの
DSPイメージ内のカスタムハードウェアエンドポイント(シンク)モジュールで、以下のようなものを用いています。

1.Zephyr DAI APIを通じてSAI3を設定できます。
2.DRAMリングからSAI TX FIFOへの周期的なSDMA転送(2つのバッファ記述子、MEMORY_TO_PERIPHERAL)を設定します。
3.SDMAの完了コールバックを使って信号プロセッシングフレームワークにリングの再充填を指示します。

  オーディオ format
  - 48 kHz, 16-bit, mono stream; SAI wire = 16-bit × 2 slots (stereo I2S frame for WM8960), BCLK = 1.536 MHz。
- DMA周期 = 192バイト (48フレーム × 2バイト × 2スロット)、2ディスクリプタ、384バイトリング

  関連するKconfig(DSPイメージ)有効化

CONFIG_DAI=y
CONFIG_DMA=y
CONFIG_DAI_NXP_SAI=y
CONFIG_DMA_NXP_SDMA=y
CONFIG_SAI_HAS_MCLK_CONFIG_OPTION=y
CONFIG_CLOCK_CONTROL_FIXED_RATE_CLOCK=y

  デバイスツリーオーバーレイ(DSPアプリ):
リンク:app/boards/imx8mp_evk_mimx8ml8_adsp.overlay 

mclk1: mclk {
ステータス = "正常";
};

&sdma3 {
ステータス = "正常";
};

&sai3 {
rx-fifo-watermark = <65>;
tx-fifo-watermark = <65>;
fifo-depth = <128>;
rx-sync-mode = <1>;
ステータス = "正常";
};

&micfil {
ステータス = "正常";
};

  使用されたDAI / DMA設定(DSP)

- dai_config:type=DAI_IMX_SAI、 dai_index=3、format=DAI_PROTO_I2S(SAIスレーブ)、レート=48000、チャネル=2、word_size=16。
 - SAI 特注: mclk_rate=12288000、fsync_rate=48000、bclk_rate=1536000、tdm_slots=2、tx_slots=rx_slots=0x3、tdm_slot_width=16。
- DMA (struct dma_config): channel_direction=MEMORY_TO_PERIPHERAL、source_data_size=4、dest_data_size=4、source_burst_length=4、cyclic=1、block_count=2、dma_slot は SAI ハンドシェイクから取得、dma_callback が設定されています。2 つの dma_block_config BD が dma_src_addr[0/192] を指しています

ソースコード参照: endpoint/capi/src/capi_nxp_device_utils.c

申請処理担当者:
- DTS: imx8mp-evk-dsp.dts https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/arch/arm64/boot/dts/freescale/imx8mp-evk-dsp.dts
- ダミーDAIおよびダミープラットフォームを備えたwm8960コーデックのPCMデバイスを列挙。

添付資料:
- DSPログ(SDMA、SAI)
- 修正されたimx8mp-evk-dsp.dts

その他の詳細情報も喜んでご提供いたします。

i.MX 8M | i.MX 8M Mini | i.MX 8M Nanoマルチメディア
タグ(1)
評価なし
バージョン履歴
最終更新日:
木曜日
更新者: