Armadilloフォーラム

Armadillo-440にてALSAを使っているのですが

hiro_i

2017年1月24日 19時41分

お世話になります、

Armadillo-440にてALSAインターフェイスを使って
音声の再生/録音をしようとしています、ChipはCS4270です。
CON9にAUD6をアサインしています。

CS4270 ALSA SoC Codec
asoc: CS4270 <-> imx-i2s-1 mapping ok
cs4270: no I2C device found, using stand-alone mode
ALSA device list:
#0: armadillo440 (CS4270)

と認識しています、I2Cは起動時をの状態では接続はさせていません。
アプリの方から、CS4270のリセット、I2Cにて初期設定を行っています。

CS4270のリセット&初期設定後(i2cにて),

ret = snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0);

を実行すると、Segmentation faultが発生します。

Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c1e28000
[00000000] *pgd=85cf7031, *pte=00000000, *ppte=00000000
Internal error: Oops: 0 [#1] PREEMPT
Modules linked in:
CPU: 0 Not tainted (2.6.26-at20 #1)
PC is at 0x0
LR is at armadillo440_hifi_startup+0x48/0xdc
pc : [<00000000>] lr : [] psr: 60000013
sp : c1e0dd20 ip : 0000020f fp : c1e0dd3c
r10: c5d0f6a0 r9 : c03730f8 r8 : c0372e38
r7 : c0372b80 r6 : c0372b80 r5 : 00000000 r4 : c0372e38
r3 : fc134000 r2 : 0000020f r1 : 00000040 r0 : c0372b80
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 0005317f Table: 81e28000 DAC: 00000015
Process alsa_test (pid: 1360, stack limit = 0xc1e0c268)

Backtrace:
[] (armadillo440_hifi_startup+0x0/0xdc) from [] (soc_pcm_open+0xc8/0x390)
r6:c50af000 r5:c1e0ddbc r4:00000000
[] (soc_pcm_open+0x0/0x390) from [] (snd_pcm_open_substream+0x68/0xa8)
[] (snd_pcm_open_substream+0x0/0xa8) from [] (snd_pcm_open+0x168/0x228)
r5:c1e0c000 r4:00000000
[] (snd_pcm_open+0x0/0x228) from [] (snd_pcm_playback_open+0x38/0x3c)
[] (snd_pcm_playback_open+0x0/0x3c) from [] (snd_open+0xe0/0x228)
r4:00000010
[] (snd_open+0x0/0x228) from [] (chrdev_open+0x144/0x224)
r8:c1e12890 r7:c5dda720 r6:00000000 r5:00000000 r4:c1e0c000
[] (chrdev_open+0x0/0x224) from [] (__dentry_open+0x100/0x2b0)
[] (__dentry_open+0x0/0x2b0) from [] (nameidata_to_filp+0x48/0x50)
[] (nameidata_to_filp+0x0/0x50) from [] (do_filp_open+0x168/0x820)
r4:00000000
[] (do_filp_open+0x0/0x820) from [] (do_sys_open+0x64/0xec)
[] (do_sys_open+0x0/0xec) from [] (sys_open+0x24/0x28)
r8:c0028d04 r7:00000005 r6:00000001 r5:00000000 r4:00000000
[] (sys_open+0x0/0x28) from [] (ret_fast_syscall+0x0/0x2c)
Code: bad PC value.
---[ end trace 6499756bdaec37cc ]---
Segmentation fault

環境は、linux-2.6.26-at20 , CS4270コーデックを使用するパッチを当てています。