关于如下异常信息:
[ 21.813421] Unable to handle kernel NULL pointer dereference at virtual address 00000004
[ 21.822652] pgd = ee0e4000
[ 21.825669] [00000004] *pgd=77b83831
[ 21.829645] Internal error: Oops: 17 [#1] SMP ARM
[ 21.832425] Modules linked in: nand(O)
[ 21.832425] CPU: 0 Tainted: G O (3.4.39 #102)
[ 21.832425] PC is at sunxi_pcm_hw_params+0xe4/0x1d8
[ 21.832425] LR is at sunxi_pcm_hw_params+0x68/0x1d8
[ 21.832425] pc : [<c0357678>] lr : [<c03575fc>] psr: 60000153
[ 21.832425] sp : ec345dc0 ip : 00000000 fp : ec345e0c
[ 21.832425] r10: c069a578 r9 : ef19f080 r8 : ef1a5300
[ 21.832425] r7 : 00000000 r6 : 00000000 r5 : ee064800 r4 : ee8d8800
[ 21.832425] r3 : 00000002 r2 : 00000000 r1 : fffffffc r0 : 00000000
[ 21.832425] Flags: nZCv IRQs on FIQs off Mode SVC_32 ISA ARM Segment user
[ 21.832425] Control: 10c5387d Table: 6e0e406a DAC: 00000015
[ 21.832425]
[ 21.832425] PC: 0xc03575f8:
[ 21.832425] 75f8 ebffea73 e2506000 0a000004 e1a0000a e59f1150 e1a02006 ebfbd54f ea00004c
[ 21.832425] 7618 e5943030 e3530000 1a00001b e5953024 e3530000 1a000004 e5953028 e3530000
[ 21.832425] 7638 13a02001 0a00000a ea000000 e1a02006 e0853102 e5933024 e2631000 e0013003
[ 21.832425] 7658 e16f3f13 e263301f e0833282 e3530002 0a000000 e3a03004 e50b3038 e50b303c
[ 21.832425] 7678 e5973004 e50b3040 e3a03008 e50b3030 e50b3034 e3a03707 ea000008 e3a03002
[ 21.832425] 7698 e50b303c e50b3038 e5973004 e50b3044 e3a03008 e50b3030 e50b3034 e3a0301c
[ 21.832425] 76b8 e50b3028 e1a00008 e5983000 e3a01003 e24b2048 e5933060 e12fff33 e2507000
[ 21.832425] 76d8 aa000005 e1a0000a e59f107c e1a02007 e1a06007 ebfbd518 ea000015 e5943030
[ 21.832425]
[ 21.832425] LR: 0xc035757c:
[ 21.832425] 757c e12fff3c ea000000 ebfc0c9b e24bd010 e89da810 c0661308 e1a0c00d e92dddf0
[ 21.832425] 759c e24cb004 e24dd028 e92d4000 e8bd4000 e5906008 e1a04000 e1a05001 e5963068
[ 21.832425] 75bc e593a008 ebffe9fb e5942030 e1a08000 e5963070 e59f1180 e3520000 e59f017c
[ 21.832425] 75dc e3a02091 0593702c 15937030 eb038c5e e1a00004 e1a01005 e24b2048 ebffea73
[ 21.832425] 75fc e2506000 0a000004 e1a0000a e59f1150 e1a02006 ebfbd54f ea00004c e5943030
[ 21.832425] 761c e3530000 1a00001b e5953024 e3530000 1a000004 e5953028 e3530000 13a02001
[ 21.832425] 763c 0a00000a ea000000 e1a02006 e0853102 e5933024 e2631000 e0013003 e16f3f13
[ 21.832425] 765c e263301f e0833282 e3530002 0a000000 e3a03004 e50b3038 e50b303c e5973004
[ 21.832425]
[ 21.832425] SP: 0xec345d40:
[ 21.832425] 5d40 c0039c54 c0039440 b9c1b51c 00000002 00000000 00000005 c0357678 60000153
[ 21.832425] 5d60 ffffffff ec345dac ec345e0c ec345d78 c000f918 c000a168 00000000 fffffffc
[ 21.832425] 5d80 00000000 00000002 ee8d8800 ee064800 00000000 00000000 ef1a5300 ef19f080
[ 21.832425] 5da0 c069a578 ec345e0c 00000000 ec345dc0 c03575fc c0357678 60000153 ffffffff
[ 21.832425] 5dc0 ef19f080 00000001 ec345dec ec345dd8 00000002 00000002 c03559fc ec345df4
[ 21.832425] 5de0 ec345e0c ec345e00 00000000 eeb77cc0 eeb77b40 ee064800 ee8d8800 ef1a2ed0
[ 21.832425] 5e00 ec345e44 ec345e10 c0350d10 c03575a0 ec344000 ef1a2edc ec345e44 ec29a000
[ 21.832425] 5e20 ee064800 ee8d8800 00000000 ee8d88d0 ec344000 00000000 ec345e6c ec345e48
[ 21.832425]
[ 21.832425] FP: 0xec345d8c:
[ 21.832425] 5d8c ee064800 00000000 00000000 ef1a5300 ef19f080 c069a578 ec345e0c 00000000
[ 21.832425] 5dac ec345dc0 c03575fc c0357678 60000153 ffffffff ef19f080 00000001 ec345dec
[ 21.832425] 5dcc ec345dd8 00000002 00000002 c03559fc ec345df4 ec345e0c ec345e00 00000000
[ 21.832425] 5dec eeb77cc0 eeb77b40 ee064800 ee8d8800 ef1a2ed0 ec345e44 ec345e10 c0350d10
[ 21.832425] 5e0c c03575a0 ec344000 ef1a2edc ec345e44 ec29a000 ee064800 ee8d8800 00000000
[ 21.832425] 5e2c ee8d88d0 ec344000 00000000 ec345e6c ec345e48 c033da4c c0350bec c25c4111
[ 21.832425] 5e4c ee8d8800 ee064800 eea8eda0 beb487fc c000ffe8 ec345ec4 ec345e70 c033eec0
[ 21.832425] 5e6c c033d93c ee05b5c0 ee0e4000 00000028 ec36c580 ec345ec4 c01dd0ac ec345eb4
[ 21.832425]
[ 21.832425] R4: 0xee8d8780:
[ 21.832425] 8780 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 87a0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 87c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 87e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 8800 ee8d8a00 ee8d8aa8 ef1a2ed0 00000000 64627573 63697665 30232065 00000000
[ 21.832425] 8820 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 8840 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 8860 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425]
[ 21.832425] R5: 0xee064780:
[ 21.832425] 4780 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a
[ 21.832425] 47a0 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a
[ 21.832425] 47c0 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a
[ 21.832425] 47e0 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a 5a5a5a5a a55a5a5a
[ 21.832425] 4800 00000000 00000008 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 4820 00000000 00000004 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 4840 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 4860 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425]
[ 21.832425] R8: 0xef1a5280:
[ 21.832425] 5280 c021dd88 00000000 ef1a5288 ef1a5288 ef1a5290 ef1a5290 ef1a5298 ef1a5298
[ 21.832425] 52a0 00000000 ef1a52a4 ef1a52a4 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 52c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 52e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] 5300 ef1a53c0 00000001 00000001 00000000 ef1cd800 ef1a5254 ef1a53c8 c064395c
[ 21.832425] 5320 00000001 00000000 00000000 00000000 00000000 00000000 c021d448 ef1a5300
[ 21.832425] 5340 c021dd88 00000000 ef1a5348 ef1a5348 ef1a5350 ef1a5350 ef1a5358 ef1a5358
[ 21.832425] 5360 00000000 ef1a5364 ef1a5364 00000000 00000000 00000000 00000000 00000000
[ 21.832425]
[ 21.832425] R9: 0xef19f000:
[ 21.832425] f000 ef19b040 ef10e000 00000080 ef19f080 0000000e 0000000e ffff0000 fffffffd
[ 21.832425] f020 fffffffd fffffffd fffffffd fffffffd fffffffd fffffffd fffffffd fffffffd
[ 21.832425] f040 fffffffd fffffffe fffffffd fffffffd fffffffd ffffffff ffffffff ffffffff
[ 21.832425] f060 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
[ 21.832425] f080 eeb7c840 00000000 c069a578 c069a4c8 00000001 00000000 ef19f098 ef19f098
[ 21.832425] f0a0 00000000 00000002 c069af28 ef19f1ac ef1a26ec c069aff8 c069aff8 00000000
[ 21.832425] f0c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425] f0e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 21.832425]
[ 21.832425] R10: 0xc069a4f8:
[ 21.832425] a4f8 00000000 c069a6f0 00000000 00000000 00000000 00000000 00000000 c0617224
[ 21.832425] a518 00000000 00000000 00000000 00000000 c05615b7 c06770f0 00000000 00000000
[ 21.832425] a538 00000000 00000000 c0250bac 00000000 00000000 00000000 00000000 00000000
[ 21.832425] a558 00000000 eeb779c0 00000000 00000000 ffffffff 00000000 c05615b7 00000000
[ 21.832425] a578 c0677130 eeb77a40 eeb7c280 c069a83c c069a1cc c0677138 ef0b8f40 c0676f98
[ 21.832425] a598 eeb7b398 00000003 00000007 00000000 00000000 00000001 00000000 c069a5b4
[ 21.832425] a5b8 c069a5b4 00000000 c06770f0 c069a528 00000000 00000000 00000000 00000000
[ 21.832425] a5d8 c069a890 c069a220 7fffffff 00000000 c069a5e8 c069a5e8 00000000 00000000
[ 21.832425] Process tinyplay (pid: 132, stack limit = 0xec3442f8)
[ 21.832425] Stack: (0xec345dc0 to 0xec346000)
[ 21.832425] 5dc0: ef19f080 00000001 ec345dec ec345dd8 00000002 00000002 c03559fc ec345df4
[ 21.832425] 5de0: ec345e0c ec345e00 00000000 eeb77cc0 eeb77b40 ee064800 ee8d8800 ef1a2ed0
[ 21.832425] 5e00: ec345e44 ec345e10 c0350d10 c03575a0 ec344000 ef1a2edc ec345e44 ec29a000
[ 21.832425] 5e20: ee064800 ee8d8800 00000000 ee8d88d0 ec344000 00000000 ec345e6c ec345e48
[ 21.832425] 5e40: c033da4c c0350bec c25c4111 ee8d8800 ee064800 eea8eda0 beb487fc c000ffe8
[ 21.832425] 5e60: ec345ec4 ec345e70 c033eec0 c033d93c ee05b5c0 ee0e4000 00000028 ec36c580
[ 21.832425] 5e80: ec345ec4 c01dd0ac ec345eb4 ec345e98 c01dd0ac c0442214 000000b4 ee8d8800
[ 21.832425] 5ea0: beb487fc eea8eda0 00000004 c000ffe8 ec344000 00000000 ec345ef4 ec345ec8
[ 21.832425] 5ec0: c03403a4 c033ec68 c01002d4 c00ffe40 00000041 ee05b5f8 ef124c30 beb487fc
[ 21.832425] 5ee0: eea8eda0 00000004 ec345f04 ec345ef8 c0340400 c033ffa0 ec345f7c ec345f08
[ 21.832425] 5f00: c0102854 c03403d4 ef004300 ef0304c0 ec288000 c00f16bc 60000013 eea8eda8
[ 21.832425] 5f20: ec345f54 ec345f30 c00ee2b4 c00ed684 00000004 eea8eda0 ec288000 00000020
[ 21.832425] 5f40: ef124c30 eea8eda8 ec345f94 ec345f58 c00f16bc c00ee26c eea8eda0 beb487fc
[ 21.832425] 5f60: c25c4111 00000004 c000ffe8 ec344000 ec345fa4 ec345f80 c0102910 c01022f8
[ 21.832425] 5f80: c000ffe8 00000000 beb4868c beb48bc8 0000bb80 00000036 00000000 ec345fa8
[ 21.832425] 5fa0: c000fd80 c01028d4 beb4868c beb48bc8 00000004 c25c4111 beb487fc beb487fc
[ 21.832425] 5fc0: beb4868c beb48bc8 0000bb80 00000036 00000000 00000000 b6f08000 00000000
[ 21.832425] 5fe0: 00013bac beb48674 0000a4c9 b6e7d92c 00000010 00000004 2207f3c6 4307f3c6
[ 21.832425] [<c0357678>] (sunxi_pcm_hw_params+0xe4/0x1d8) from [<c0350d10>] (soc_pcm_hw_params+0x130/0x1e8)
[ 21.832425] [<c0350d10>] (soc_pcm_hw_params+0x130/0x1e8) from [<c033da4c>] (snd_pcm_hw_params+0x11c/0x398)
[ 21.832425] [<c033da4c>] (snd_pcm_hw_params+0x11c/0x398) from [<c033eec0>] (snd_pcm_common_ioctl1+0x264/0xee4)
[ 21.832425] [<c033eec0>] (snd_pcm_common_ioctl1+0x264/0xee4) from [<c03403a4>] (snd_pcm_playback_ioctl1+0x410/0x434)
[ 21.832425] [<c03403a4>] (snd_pcm_playback_ioctl1+0x410/0x434) from [<c0340400>] (snd_pcm_playback_ioctl+0x38/0x44)
[ 21.832425] [<c0340400>] (snd_pcm_playback_ioctl+0x38/0x44) from [<c0102854>] (do_vfs_ioctl+0x568/0x5dc)
[ 21.832425] [<c0102854>] (do_vfs_ioctl+0x568/0x5dc) from [<c0102910>] (sys_ioctl+0x48/0x6c)
[ 21.832425] [<c0102910>] (sys_ioctl+0x48/0x6c) from [<c000fd80>] (ret_fast_syscall+0x0/0x30)
[ 21.832425] Code: 0a000000 e3a03004 e50b3038 e50b303c (e5973004)
[ 22.868628] ---[ end trace 356d2c988a0faf18 ]---
异常定位方法:
1.addr2line
根据PC指针c0357678, arm-none-linux-gnueabi-addr2line
arm-none-linux-gnueabi-addr2line arm-none-linux-gnueabi-addr2line -e vmlinux c0357678
??:0
/home/huangxin/workspace/sunxi-dev/lichee/linux-3.4/sound/soc/sunxi/daudio0/sunxi-daudiodma0.c:179
可以定位到异常信息在sunxi-daudiodma0.c的179行。
2.通过gdb定位;
~/workspace/sunxi-dev/lichee/linux-3.4$ arm-none-linux-gnueabi-gdb vmlinux
GNU gdb (Sourcery G++ Lite 2010.09-50) 7.2.50.20100908-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi".
For bug reporting instructions, please see:
<https://support.codesourcery.com/GNUToolchain/>...
Reading symbols from /home/huangxin/workspace/sunxi-dev/lichee/linux-3.4/vmlinux...done.
(gdb) b*c0357678
No symbol "c0357678" in current context.
(gdb) b*0xc0357678
Breakpoint 1 at 0xc0357678: file sound/soc/sunxi/daudio0/sunxi-daudiodma0.c, line 179.
3.根据内核符号表和反汇编信息定位
arm-none-linux-gnueabi-nm vmlinux | grep sunxi_pcm_hw_params
c0357594 t sunxi_pcm_hw_params
~/workspace/sunxi-dev/lichee/linux-3.4$
根据PC指针信息:[ 21.832425] PC is at sunxi_pcm_hw_params+0xe4/0x1d8。0xe4是出错的偏移位置;0x1d8是函数sunxi_pcm_hw_params的大小
可以将生成的vmlinux全部转成汇编语言,查看出错函数位置:arm-none-linux-gnueabi-objdump -S vmlinux >test.dump
然后根据函数地址和偏移位置找到出错位置即可c0357594+0xe4=c0357678.也可以直接查看PC指针(c0357678)位置;
如果不想生成的文件过大,那么也可以指定起始地址和结束地址生成汇编debug信息。
arm-none-linux-gnueabi-objdump -S vmlinux -z --start-address=0xc0357594 --stop-address=0xc0357678 > a.out
然后根据a.out查看分析即可。
vmlinux: file format elf32-littlearm
Disassembly of section .text:
c0357594 <sunxi_pcm_hw_params>:
}
#endif
static int sunxi_pcm_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
c0357594: e1a0c00d mov ip, sp
c0357598: e92dddf0 push {r4, r5, r6, r7, r8, sl, fp, ip, lr, pc}
c035759c: e24cb004 sub fp, ip, #4
c03575a0: e24dd028 sub sp, sp, #40 ; 0x28
c03575a4: e92d4000 push {lr}
c03575a8: ebf2e236 bl c000fe88 <__gnu_mcount_nc>
struct sunxi_dma_params *dmap;
struct snd_soc_pcm_runtime *rtd = substream->private_data;
c03575ac: e5906008 ldr r6, [r0, #8]
}
#endif
static int sunxi_pcm_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
c03575b0: e1a04000 mov r4, r0
c03575b4: e1a05001 mov r5, r1
struct sunxi_dma_params *dmap;
struct snd_soc_pcm_runtime *rtd = substream->private_data;
#ifdef AR200_AUDIO
struct tdm_runtime_data *prtd = substream->runtime->private_data;
#else
struct device *dev = rtd->platform->dev;
c03575b8: e5963068 ldr r3, [r6, #104] ; 0x68
c03575bc: e593a008 ldr sl, [r3, #8]
struct dma_chan *chan = snd_dmaengine_pcm_get_chan(substream);
c03575c0: ebffe9fb bl c0351db4 <snd_dmaengine_pcm_get_chan>
};
static inline void *snd_soc_dai_get_dma_data(const struct snd_soc_dai *dai,
const struct snd_pcm_substream *ss)
{
return (ss->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
c03575c4: e5942030 ldr r2, [r4, #48] ; 0x30
c03575c8: e1a08000 mov r8, r0
struct dma_slave_config slave_config;
int ret;
#endif
dmap = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
c03575cc: e5963070 ldr r3, [r6, #112] ; 0x70
pr_info("%s,l:%d\n", __func__, __LINE__);
c03575d0: e59f1180 ldr r1, [pc, #384] ; c0357758 <sunxi_pcm_hw_params+0x1c4>
c03575d4: e3520000 cmp r2, #0
c03575d8: e59f017c ldr r0, [pc, #380] ; c035775c <sunxi_pcm_hw_params+0x1c8>
c03575dc: e3a02091 mov r2, #145 ; 0x91
c03575e0: 0593702c ldreq r7, [r3, #44] ; 0x2c
c03575e4: 15937030 ldrne r7, [r3, #48] ; 0x30
c03575e8: eb038c5e bl c043a768 <printk>
#ifndef AR200_AUDIO
ret = snd_hwparams_to_dma_slave_config(substream, params, &slave_config);
c03575ec: e1a00004 mov r0, r4
c03575f0: e1a01005 mov r1, r5
c03575f4: e24b2048 sub r2, fp, #72 ; 0x48
c03575f8: ebffea73 bl c0351fcc <snd_hwparams_to_dma_slave_config>
if (ret) {
c03575fc: e2506000 subs r6, r0, #0
c0357600: 0a000004 beq c0357618 <sunxi_pcm_hw_params+0x84>
dev_err(dev, "hw params config failed with err %d\n", ret);
c0357604: e1a0000a mov r0, sl
c0357608: e59f1150 ldr r1, [pc, #336] ; c0357760 <sunxi_pcm_hw_params+0x1cc>
c035760c: e1a02006 mov r2, r6
c0357610: ebfbd54f bl c024cb54 <dev_err>
return ret;
c0357614: ea00004c b c035774c <sunxi_pcm_hw_params+0x1b8>
}
#endif
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
c0357618: e5943030 ldr r3, [r4, #48] ; 0x30
c035761c: e3530000 cmp r3, #0
c0357620: 1a00001b bne c0357694 <sunxi_pcm_hw_params+0x100>
static inline unsigned int snd_mask_min(const struct snd_mask *mask)
{
int i;
for (i = 0; i < SNDRV_MASK_SIZE; i++) {
if (mask->bits[i])
c0357624: e5953024 ldr r3, [r5, #36] ; 0x24
c0357628: e3530000 cmp r3, #0
c035762c: 1a000004 bne c0357644 <sunxi_pcm_hw_params+0xb0>
c0357630: e5953028 ldr r3, [r5, #40] ; 0x28
c0357634: e3530000 cmp r3, #0
}
static inline unsigned int snd_mask_min(const struct snd_mask *mask)
{
int i;
for (i = 0; i < SNDRV_MASK_SIZE; i++) {
c0357638: 13a02001 movne r2, #1
if (mask->bits[i])
c035763c: 0a00000a beq c035766c <sunxi_pcm_hw_params+0xd8>
c0357640: ea000000 b c0357648 <sunxi_pcm_hw_params+0xb4>
c0357644: e1a02006 mov r2, r6
return ffs(mask->bits[i]) - 1 + (i << 5);
c0357648: e0853102 add r3, r5, r2, lsl #2
c035764c: e5933024 ldr r3, [r3, #36] ; 0x24
c0357650: e2631000 rsb r1, r3, #0
c0357654: e0013003 and r3, r1, r3
int ret;
if (__builtin_constant_p(x))
return constant_fls(x);
asm("clz\t%0, %1" : "=r" (ret) : "r" (x));
c0357658: e16f3f13 clz r3, r3
c035765c: e263301f rsb r3, r3, #31
c0357660: e0833282 add r3, r3, r2, lsl #5
prtd->play_done_cb.arg = substream;
arisc_audio_cb_register(prtd->mode, prtd->play_done_cb.handler, prtd->play_done_cb.arg);
substream->dma_buffer.addr = AUDIO_SRAM_BASE_PALY;
substream->dma_buffer.area = (unsigned char *)0xf8117000;
#else
if (SNDRV_PCM_FORMAT_S16_LE == params_format(params)) {
c0357664: e3530002 cmp r3, #2
c0357668: 0a000000 beq c0357670 <sunxi_pcm_hw_params+0xdc>
slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
slave_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
} else {
slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
c035766c: e3a03004 mov r3, #4
c0357670: e50b3038 str r3, [fp, #-56] ; 0xffffffc8
slave_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
c0357674: e50b303c str r3, [fp, #-60] ; 0xffffffc4
}
slave_config.dst_addr = dmap->dma_addr;
c0357678: e5973004 ldr r3, [r7, #4]
c035767c: e50b3040 str r3, [fp, #-64] ; 0xffffffc0
#if defined CONFIG_ARCH_SUN8IW6
slave_config.dst_maxburst = 8;
c0357680: e3a03008 mov r3, #8
c0357684: e50b3030 str r3, [fp, #-48] ; 0xffffffd0
slave_config.src_maxburst = 8;
c0357688: e50b3034 str r3, [fp, #-52] ; 0xffffffcc
#if defined CONFIG_ARCH_SUN9IW1
slave_config.slave_id = sunxi_slave_id(DRQDST_R_DAUDIO_1_TX, DRQSRC_SDRAM);
#elif defined CONFIG_ARCH_SUN8IW8 || defined CONFIG_ARCH_SUN8IW7
slave_config.slave_id = sunxi_slave_id(DRQDST_DAUDIO_0_TX, DRQSRC_SDRAM);
#else
slave_config.slave_id = sunxi_slave_id(DRQDST_TDM_TX, DRQSRC_SDRAM);
c035768c: e3a03707 mov r3, #1835008 ; 0x1c0000
这些都是比较明显的oops信息。方法供参考。