搜索
bottom↓
回复: 0

s5pv210 音频播放问题

[复制链接]

出0入0汤圆

发表于 2014-4-11 14:22:34 | 显示全部楼层 |阅读模式
再移植MPlayer播放器时,遇到个头大的问题,WM9713也识别了,dsp等节点也都有了,但是在测试播放时出现了下面的错误:
Unable to handle kernel NULL pointer dereference at virtual address 00000000
[   22.163695] pgd = 9f144000
[   22.166380] [00000000] *pgd=4f105831, *pte=00000000, *ppte=00000000
[   22.172629] Internal error: Oops: 80000007 [#1] PREEMPT ARM
[   22.178166] Modules linked in:
[   22.181205] CPU: 0 PID: 609 Comm: cat Not tainted 3.10.30 #193
[   22.187007] task: 9f8a0900 ti: 9f88c000 task.ti: 9f88c000
[   22.192379] PC is at 0x0
[   22.194905] LR is at s3c_ac97_trigger+0xa8/0xb0
[   22.199399] pc : [<00000000>]    lr : [<802ecdf8>]    psr: 60000093
[   22.199399] sp : 9f88de18  ip : 8050ae28  fp : 00000001
[   22.210835] r10: 00000000  r9 : a09ec000  r8 : a09ec000
[   22.216035] r7 : 9fbfb700  r6 : 00000001  r5 : 9f8becc0  r4 : 80528c54
[   22.222534] r3 : 00000000  r2 : 9f88dd98  r1 : 00000002  r0 : 0000001d
[   22.229036] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[   22.236400] Control: 10c5387d  Table: 4f144019  DAC: 00000015
[   22.242119] Process cat (pid: 609, stack limit = 0x9f88c230)
[   22.247751] Stack: (0x9f88de18 to 0x9f88e000)
[   22.252086] de00:                                                       9fb98a00 802e6fb0
[   22.260234] de20: 9fb98a00 9fb98a00 80527414 00000003 00000000 802c413c 9fb98a00 802c404c
[   22.268379] de40: 9fb98ac0 9f9d2c00 9fb98a00 00000800 9fb98ac0 802cd958 00000800 802c8d68
[   22.276525] de60: 9fb98a00 803a8088 805273dc 801df908 00000000 9f8a6a14 9f8a6a14 7f000000
[   22.284671] de80: 80044121 00000800 a09ec000 9fb98a00 9f88dec4 00000001 a09ec000 7f000000
[   22.292816] dea0: 00000800 802cdacc 802cbcdc 9fb98a00 9fb98a00 9f88c000 9f9d2c00 802d3950
[   22.300962] dec0: 9f88df80 00000000 00000000 9f95e980 9f95e880 9f88def4 9fb82c40 00000000
[   22.309108] dee0: 9f88c000 00001000 9fb98a00 802d704c 9fb98a00 9fb82a00 9fb98a00 a09ef000
[   22.317253] df00: 00000000 00000001 7ec67970 802d3a90 00000000 9fb82c40 9f9d2c00 00001000
[   22.325399] df20: 7ec67970 00000000 00000000 802d565c 00000000 9f9d2e8c 9fb78920 9f9e1480
[   22.333545] df40: 00001000 7ec67970 9f88df80 00000000 00000000 00001000 00000000 800ad29c
[   22.341690] df60: 9f9e1488 00000020 9f9e1480 00000000 9f88df80 7ec67970 00000000 800ad400
[   22.349836] df80: 00000000 00000000 00001000 7ec67970 76f806e0 00000003 8000ede8 9f88c000
[   22.357982] dfa0: 00000000 8000ec40 00001000 7ec67970 00000003 7ec67970 00001000 000efc6c
[   22.366128] dfc0: 00001000 7ec67970 76f806e0 00000003 0000008f 00000003 00000000 00000000
[   22.374273] dfe0: 00000003 7ec67950 0000f628 76e3c90c 60000010 00000003 ffffffff ffffffff
[   22.382436] [<802ecdf8>] (s3c_ac97_trigger+0xa8/0xb0) from [<802e6fb0>] (soc_pcm_trigger+0x94/0x9c)
[   22.391440] [<802e6fb0>] (soc_pcm_trigger+0x94/0x9c) from [<802c413c>] (snd_pcm_do_start+0x28/0x2c)
[   22.400449] [<802c413c>] (snd_pcm_do_start+0x28/0x2c) from [<802c404c>] (snd_pcm_action_single+0x38/0x78)
[   22.409983] [<802c404c>] (snd_pcm_action_single+0x38/0x78) from [<802cd958>] (snd_pcm_lib_read1+0x2bc/0x358)
[   22.419773] [<802cd958>] (snd_pcm_lib_read1+0x2bc/0x358) from [<802cdacc>] (snd_pcm_lib_read+0x60/0x64)
[   22.429132] [<802cdacc>] (snd_pcm_lib_read+0x60/0x64) from [<802d3950>] (snd_pcm_oss_read3+0x4c/0x110)
[   22.438404] [<802d3950>] (snd_pcm_oss_read3+0x4c/0x110) from [<802d704c>] (snd_pcm_plug_read_transfer+0x78/0xd4)
[   22.448541] [<802d704c>] (snd_pcm_plug_read_transfer+0x78/0xd4) from [<802d3a90>] (snd_pcm_oss_read2+0x7c/0x120)
[   22.458679] [<802d3a90>] (snd_pcm_oss_read2+0x7c/0x120) from [<802d565c>] (snd_pcm_oss_read+0x168/0x1b8)
[   22.468130] [<802d565c>] (snd_pcm_oss_read+0x168/0x1b8) from [<800ad29c>] (vfs_read+0xac/0x140)
[   22.476793] [<800ad29c>] (vfs_read+0xac/0x140) from [<800ad400>] (SyS_read+0x44/0x70)

有个空指针,经翻腾找了空指针的原因,代码如下:
static struct samsung_dma_ops dmadev_ops = {
        .request        = samsung_dmadev_request,
        .release        = samsung_dmadev_release,
        .config                = samsung_dmadev_config,
        .prepare        = samsung_dmadev_prepare,
        .trigger        = samsung_dmadev_trigger,
        .started        =NULL,
        .flush                = samsung_dmadev_flush,
        .stop                = samsung_dmadev_flush,
};
位置在dma-ops.c文件中。
不知道为啥要给个NULL,明明在ac97.c文件中通过dma_data->ops->started(dma_data->channel);这个代码要调用这个启动函数,由于为空,就直接报错死掉了。
有大侠知道这是什么原因么,linux内核为3.10.30版本,这之后的新版本这里的代码都是一样的。郁闷两天了,求高手指点迷津。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 01:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表