2400289_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2400289_ja-JP

2400289_ja-JP

i.MX8MP Sエラー。リモートプロセスがM7コアとarecordプラグインを起動しますhw:wm8962audio,0
こんにちは、
FRDM-i.MX8MP(Linux 6.12.34-lts-next)では、WM8962でのALSAキャプチャは、Cortex-M7をリモートプロックで起動するまで問題なく動作します。M7ファームウェアが起動すると、arecordによってカーネルパニックが発生します。
 
要約:
- M7なし: arecord OK
- M7 の起動後: fsl_sai_runtime_resume でパニックが発生
→ regmap_write (SError 0xbf000002)
- BSP純正ファームウェアで再現しました:
- imx8mp_m7_DDR_hello_world.elf
- imx8mp_m7_DDR_rpmsg_lite_str_echo_rtos.elf
SO、これはカスタムM7アプリに特有のものではありません。
 
再現:
1) Linuxを起動し、M7を停止したままにする
2) arecord -D plughw:wm8962audio,0 -f S16_LE -r 16000 -c 1 -d 1 /tmp/t.wav→ OK
3) echo stop > /sys/class/remoteproc/remoteproc0/state
echo imx8mp_m7_DDR_hello_world.elf > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
4) 同じ arecord → カーネルパニック (SError)
 
パニック経路(略式):
snd_pcm_capture_open → ... → fsl_sai_runtime_resume → regmap_write → SError 0xbf000002
 
試した内容:
- imx8mp-cm7 DTノードからオプションの「オーディオ」(AUDPLL)クロックを削除→それでも失敗します
- M7でAudioMIX所有権/Audio PLL initを無効にするclock_config →純正のままhello_worldでも失敗します
 
質問:
1) i.MX8MPでLinuxのSAI/wm8962とM7リモートプロックの同時使用はサポートされていますか?
2) SDK BOARD_BootClockRUN()をM7にマッピングすることは、A53のオーディオパワードメインと衝突しますか?
3) AudioMIX / fsl_sai のランタイム再開時に発生する SError に対する、6.12 の既知の修正方法はありますか?
4) オーディオがLinuxに所有されている必要がある場合(M7ではUART/RPMsgのみ)M7におすすめclock_configはありますか?
 
ありがとうございます。
 

------------------------- imx8mp-cm7 dts ノード --------------------------

imx8mp-cm7 {
        compatible = "fsl,imx8mn-cm7" ;
        rsc-da = < 0x55000000 >;
        クロック= < & clk IMX8MP_CLK_M7_DIV >;
             //<&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_AUDPLL_ROOT>;
        クロック名= "core" , "uart4" ;
        mbox-names = "tx" , "rx" , "rxdb" ;
        mboxes = < & mu 0 1
              & mu 1 1
              & mu 3 1 >;
        メモリ領域= < & vdevbuffer >, < & vdev0vring0 >, < & vdev0vring1 >, < & rsc_table >,
< & m4_reserved >;
        ステータス= "正常" ;
        fsl、起動遅延ミリ秒= < 500 >;
    };
 
------------------ パニックログ ------------------
root@FRDM-test:/lib/firmware# echo imx8mp_m7_DDR_hello_world.elf > /sys/class/remoteproc/remoteproc0/firmware
root@FRDM-test:/lib/firmware# echo start > /sys/class/remoteproc/remoteproc0/state
root@FRDM-test:/lib/firmware#
root@FRDM-test:/lib/firmware#
root@FRDM-test:/lib/firmware#
root@FRDM-test:/lib/firmware# arecord -D plughw:wm8962audio,0 -f S16_LE -r 16000 -c 1 -d 1 /tmp/t_ex.wav
[ 58.448085] CPU0 の SError 割り込み、コード 0x00000000bf000002 -- SError
[ 58.448101] CPU: 0 UID: 0 PID: 644 Comm: arecord Tainted: GCO 6.12.34-lts-next #1
[ 58.448109] 汚染: [C]=CRAP、[O]=OOT_MODULE
[ 58.448111] ハードウェア名: NXP FRDM-IMX8MPLUS (DT)
[ 58.448113] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 58.448118] pc : _raw_spin_unlock_irqrestore+0x10/0x50
[ 58.448130] lr : regmap_unlock_spinlock+0x14/0x20
[ 58.448136] sp : ffff8000854e3670
[ 58.448138] x29: ffff8000854e3670 x28: ffff8000854e3c30 x27: 0000000000000001
[ 58.448147] x26: ffff0000d06da088 x25: 0000000000000000 x24: ffff0000d06da390
[ 58.448153] x23: ffff0000d1c18f60 x22: ffff0000d0363c10 x21: 0000000001000000
[ 58.448160] x20: 0000000000000000 x19: ffff0000d14a3000 x18: 0000000000000002
[ 58.448168] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
[ 58.448174] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
[ 58.448180] x11: 0000000000000000 x10: ffff0000dccabb90 x9 : 0000000000000390
[ 58.448188] x8 : ffff0000dccabbac x7 : ffff8000854e3940 x6 : ffff0000dccabba0
[ 58.448194] x5 : ffff8000808ed440 x4 : 0000000000000008 x3 : ffff8000808ece60
[ 58.448200] x2 : 0000000001000000 x1 : ffff0000dcca5280 x0 : 0000000100000001
[ 58.448208] カーネルパニック - 同期していません: 非同期SError割り込み
[ 58.448211] CPU: 0 UID: 0 PID: 644 Comm: arecord Tainted: GCO 6.12.34-lts-next #1
[ 58.448217] 汚染: [C]=CRAP、[O]=OOT_MODULE
[ 58.448221] ハードウェア名: NXP FRDM-IMX8MPLUS (DT)
[ 58.448223]通話追跡:
[ 58.448225] dump_backtrace.part.0+0xd4/0xe0
[ 58.448234] show_stack+0x18/0x30
[ 58.448240] dump_stack_lvl+0x60/0x80
[ 58.448246] dump_stack+0x18/0x24
[ 58.448251] パニック+0x168/0x360
[ 58.448258] add_taint+0x0/0xbc
[ 58.448264] arm64_serror_panic+0x64/0x70
[ 58.448269] do_serror+0x3c/0x70
[ 58.448273] el1h_64_error_handler+0x30/0x54
[ 58.448279] el1h_64_error+0x64/0x68
[ 58.448283] _raw_spin_unlock_irqrestore+0x10/0x50
[ 58.448289] regmap_write+0x58/0x80
[ 58.448294] fsl_sai_runtime_resume+0xc4/0x280 [snd_soc_fsl_sai]
[ 58.448304] pm_generic_runtime_resume+0x2c/0x44
[ 58.448312] __genpd_runtime_resume+0x30/0x80
[ 58.448318] genpd_runtime_resume+0x130/0x2c4
[ 58.448325] __rpm_callback+0x48/0x1e0
[ 58.448330] rpm_callback+0x68/0x80
[ 58.448334] rpm_resume+0x3bc/0x6a0
[ 58.448340] __pm_runtime_resume+0x50/0x9c
[ 58.448344] snd_soc_pcm_component_pm_runtime_get+0x3c/0x138
[ 58.448350] __soc_pcm_open+0x60/0x488
[ 58.448355] soc_pcm_open+0x30/0x58
[ 58.448359] snd_pcm_open_substream+0x594/0x850
[ 58.448364] snd_pcm_open+0x118/0x24c
[ 58.448368] snd_pcm_capture_open+0x4c/0x7c
[ 58.448372] snd_open+0xa0/0x19c
[ 58.448379] chrdev_open+0xb0/0x21c
[ 58.448386] do_dentry_open+0x138/0x4c4
[ 58.448392] vfs_open+0x2c/0xf0
[ 58.448397] path_openat+0x6fc/0x1074
[ 58.448403] do_filp_open+0xa0/0x15c
[ 58.448407] do_sys_openat2+0xc8/0x100
[ 58.448413] __arm64_sys_openat+0x64/0xc0
[ 58.448420] invoke_syscall+0x48/0x104
[ 58.448427] el0_svc_common.constprop.0+0xc0/0xe0
[ 58.448433] do_el0_svc+0x1c/0x28
[ 58.448438] el0_svc+0x30/0x100
[ 58.448444] el0t_64_sync_handler+0x120/0x12c
[ 58.448450] el0t_64_sync+0x190/0x194
[58.448458] SMP: セカンダリCPUを停止します
[ 58.448464] カーネルオフセット: 無効
[ 58.448466] CPU機能: 0x00,00000080,00200000,4200420b
[ 58.448469] メモリ制限: なし
[ 58.762124] ---[ カーネルパニック終了 - 同期していません: 非同期SError割り込み ]---
 
i.MX 8M | i.MX 8M Mini | i.MX 8M NanoLinuxYocto ProjectRe: i.MX8MP SError. remote proc starts M7 core and arecord plughw:wm8962audio,0

こんにちは@humm

Q1。はい、ただし両者が同じオーディオ資源を競合できない場合に限ります。

Q2。はい、対立は起こります。Linuxがオーディオを制御する場合、M7側はAUDIOMIXのマッピングや電源オンおよびSAI PLL初期化に関するコードを削除し、AUDIOMIXは完全にA53/Linuxのaudiomix_pdマネジメントに委ねられます。

Q3。いいえ、これはfsl_saiドライバーのバグではなく、リソース所有設定の問題です。

Q4。M7 SDK BOARD_RdcInit() — 最も重要なステップ:SAI3/SDMA3/I2C3のM7(DID1)割り当てを取り除くことです。RDC_PDAP_SAI3、RDC_MDA_SDMA3*、RDC_PDAP_SDMA3、およびRDC_PDAP_I2C3のDID1への割り当てを削除し、これらのリソースがA53からアクセスできるようにします。

B.R




Re: i.MX8MP SError. remote proc starts M7 core and arecord plughw:wm8962audio,0

こんにちは@pengyong_zhang

ご指導いただき、誠にありがとうございました。

ご助言に従い、RDCの設定を更新し、SDMA3をドメイン0(A53/Linux)に割り当て、ドメイン0とドメイン1間でSAI3、I2C3、SDMA3の権限を共有しました。

以下は、私が適用したRDCの変更点の差分です。

-RDC_MDA RDC_MDA_SDMA3p DID1 0x0 0x0
+RDC_MDA RDC_MDA_SDMA3p DID0 0x0 0x0

-RDC_MDA RDC_MDA_SDMA3b DID1 0x0 0x0
+RDC_MDA RDC_MDA_SDMA3b DID0 0x0 0x0

-RDC_MDA RDC_MDA_SDMA3_SPBA2 DID1 0x0 0x0
+RDC_MDA RDC_MDA_SDMA3_SPBA2 DID0 0x0 0x0

-RDC_PDAP RDC_PDAP_SAI3 PDAP_D1_ACCESS 0x0 0x0
+RDC_PDAP RDC_PDAP_SAI3 PDAP_D0D1_ACCESS 0x0 0x0

-RDC_PDAP RDC_PDAP_SDMA3 PDAP_D1_ACCESS 0x0 0x0
+RDC_PDAP RDC_PDAP_SDMA3 PDAP_D0D1_ACCESS 0x0 0x0

-RDC_PDAP RDC_PDAP_I2C3 PDAP_D1_ACCESS 0x0 0x0
+RDC_PDAP RDC_PDAP_I2C3 PDAP_D0D1_ACCESS 0x0 0x0

これらの変更を適用すると、ArecordはLinux上でSErrorをトリガーせずに動作し、M7コアがRTOSファームウェアを動かしている間も問題ありません。

ご協力ありがとうございました!

标记 (1)
无评分
版本历史
最后更新:
1 周之前
更新人: