主题 : alsa同时录音和播放出现驱动错误,怎么办 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 100954
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2014-02-27
最后登录: 2014-11-20
楼主  发表于: 2014-04-18 10:26

 alsa同时录音和播放出现驱动错误,怎么办

最近做一个项目需要实现:在开发板上同时录音和播放声音。于是我使用了alsa提供的库函数,最后发现该程序可以在pc上跑,但是在开发板上却不行。
麻烦大家帮我分析下问题所在。
我们可以使用alsa提供的arecord(录音)和aplay(播放)进行实验,使用命令 arecord | aplay 实现同时录音和播放
在ubuntu上实验通过,没有问题
在开发板(tyni6410)上出现如下错误:(大家有什么解决方法吗)
[root@FriendlyARM /]# arecord | aplay
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
Playing WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
Unable to handle kernel NULL pointer dereference at virtual address 00000020
pgd = cd58c000
[00000020] *pgd=5d636831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT
last sysfs file: /sys/devices/virtual/vc/vcsa4/dev
Modules linked in: snd_soc_tiny6410_wm8960 snd_soc_wm8960 fa_cpu_pfn(P)
CPU: 0    Tainted: P             (2.6.38-FriendlyARM #1)
PC is at i2s_set_sysclk+0x374/0x3dc
LR is at i2s_set_sysclk+0x18/0x3dc
pc : [<c0495824>]    lr : [<c04954c8>]    psr: 20000013
sp : cd54be38  ip : c04954b0  fp : becf002c
r10: 00000000  r9 : 00000020  r8 : 00000000
r7 : 00000000  r6 : 00000d00  r5 : ccd04500  r4 : 00000001
r3 : 00000400  r2 : 00000e53  r1 : 00000001  r0 : ccd04500
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 00c5387d  Table: 5d58c008  DAC: 00000015
Process aplay (pid: 1030, stack limit = 0xcd54a268)
Stack: (0xcd54be38 to 0xcd54c000)
be20:                                                       00000000 00001f40
be40: 00000030 ccd09840 ccd09f00 00000100 bf011000 c048ca94 00000000 bf011140
be60: cccc2e00 cd59a000 cccc2e00 ccd66e00 ccd09f00 ccd09840 cd59a000 ccd0a100
be80: bf011000 c048d364 cd59a400 cd59a000 cccc2e00 00000000 c0172788 cd54a000
bea0: 00000000 c047d2cc 00000000 cccc2e00 becf0110 becf0110 cd59a000 c047db40
bec0: 00000001 00000001 cd54bedc c01831fc 60000113 4024653c becf00e4 cccc2e00
bee0: becf0110 becf0110 cd13ba80 c0172788 cd54a000 00000000 becf002c c047ee8c
bf00: cd634280 cccc2e00 c25c4111 becf0110 cd634280 becf0110 becf0110 cd13ba80
bf20: c0172788 c01efb40 c072a46c c01b8cb4 c072a598 c072a2fc c077c9e8 00000102
bf40: 0000000a c077c9c4 00000063 c074854c c0725f18 00000000 cd54bf68 c0725ed8
bf60: c0725f18 00000063 c074854c cd634280 becf0110 c25c4111 00000004 c0172788
bf80: cd54a000 c01efbf8 00000004 00000000 becf0110 402db000 becf0800 0001d2a8
bfa0: 00000036 c01725e0 402db000 becf0800 00000004 c25c4111 becf0110 00000004
bfc0: 402db000 becf0800 0001d2a8 00000036 80000000 00001f40 becf0790 becf002c
bfe0: 00000000 becf0020 40237d38 403994ec 20000010 00000004 5fffe821 5fffec21
[<c0495824>] (i2s_set_sysclk+0x374/0x3dc) from [<c048ca94>] (snd_soc_dai_set_sysclk+0x28/0x34)
[<c048ca94>] (snd_soc_dai_set_sysclk+0x28/0x34) from [<bf011140>] (tiny6410_hw_params+0x140/0x25c [snd_soc_tiny6410_wm8960])
[<bf011140>] (tiny6410_hw_params+0x140/0x25c [snd_soc_tiny6410_wm8960]) from [<c048d364>] (soc_pcm_hw_params+0x4c/0x1a4)
[<c048d364>] (soc_pcm_hw_params+0x4c/0x1a4) from [<c047d2cc>] (snd_pcm_hw_params+0xbc/0x360)
[<c047d2cc>] (snd_pcm_hw_params+0xbc/0x360) from [<c047db40>] (snd_pcm_common_ioctl1+0x21c/0xd90)
[<c047db40>] (snd_pcm_common_ioctl1+0x21c/0xd90) from [<c047ee8c>] (snd_pcm_playback_ioctl1+0x3d0/0x3f4)
[<c047ee8c>] (snd_pcm_playback_ioctl1+0x3d0/0x3f4) from [<c01efb40>] (do_vfs_ioctl+0x538/0x5bc)
[<c01efb40>] (do_vfs_ioctl+0x538/0x5bc) from [<c01efbf8>] (sys_ioctl+0x34/0x54)
[<c01efbf8>] (sys_ioctl+0x34/0x54) from [<c01725e0>] (ret_fast_syscall+0x0/0x30)
Code: e2800008 ebf9e9fc e3e0000a e8bd85f8 (e5973020)
---[ end trace 54b73332fcac432b ]---
级别: 新手上路
UID: 77235
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
贡献值: 0 点
综合积分: 66 分
注册时间: 2012-09-05
最后登录: 2018-04-24
1楼  发表于: 2015-04-28 16:37
我也遇到这个问题,楼主解决了没?