📄 dma.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\dma.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Dma3Done PROC
;;;170 static void __irq Dma3Done(void)
;;;171 {
|L1.0|
000000 e92d0003 STMFD sp!,{r0,r1}
;;;172 ClearPending(BIT_DMA3);
000004 e3a00940 MOV r0,#0x100000
000008 e3a0144a MOV r1,#0x4a000000
00000c e5810000 STR r0,[r1,#0]
000010 e3a00940 MOV r0,#0x100000
000014 e3a0144a MOV r1,#0x4a000000
000018 e5810010 STR r0,[r1,#0x10]
00001c e3a0044a MOV r0,#0x4a000000
000020 e5900010 LDR r0,[r0,#0x10]
;;;173 dmaDone=1;
000024 e3a00001 MOV r0,#1
000028 e59f13e8 LDR r1,|L1.1048|
00002c e5810000 STR r0,[r1,#0] ; dmaDone
;;;174 }
000030 e8bd0003 LDMFD sp!,{r0,r1}
000034 e25ef004 SUBS pc,lr,#4
ENDP
Dma2Done PROC
;;;164 static void __irq Dma2Done(void)
;;;165 {
|L1.56|
000038 e92d0003 STMFD sp!,{r0,r1}
;;;166 ClearPending(BIT_DMA2);
00003c e3a00a80 MOV r0,#0x80000
000040 e3a0144a MOV r1,#0x4a000000
000044 e5810000 STR r0,[r1,#0]
000048 e3a00a80 MOV r0,#0x80000
00004c e3a0144a MOV r1,#0x4a000000
000050 e5810010 STR r0,[r1,#0x10]
000054 e3a0044a MOV r0,#0x4a000000
000058 e5900010 LDR r0,[r0,#0x10]
;;;167 dmaDone=1;
00005c e3a00001 MOV r0,#1
000060 e59f13b0 LDR r1,|L1.1048|
000064 e5810000 STR r0,[r1,#0] ; dmaDone
;;;168 }
000068 e8bd0003 LDMFD sp!,{r0,r1}
00006c e25ef004 SUBS pc,lr,#4
ENDP
Dma1Done PROC
;;;158 static void __irq Dma1Done(void)
;;;159 {
|L1.112|
000070 e92d0003 STMFD sp!,{r0,r1}
;;;160 ClearPending(BIT_DMA1);
000074 e3a00a40 MOV r0,#0x40000
000078 e3a0144a MOV r1,#0x4a000000
00007c e5810000 STR r0,[r1,#0]
000080 e3a00a40 MOV r0,#0x40000
000084 e3a0144a MOV r1,#0x4a000000
000088 e5810010 STR r0,[r1,#0x10]
00008c e3a0044a MOV r0,#0x4a000000
000090 e5900010 LDR r0,[r0,#0x10]
;;;161 dmaDone=1;
000094 e3a00001 MOV r0,#1
000098 e59f1378 LDR r1,|L1.1048|
00009c e5810000 STR r0,[r1,#0] ; dmaDone
;;;162 }
0000a0 e8bd0003 LDMFD sp!,{r0,r1}
0000a4 e25ef004 SUBS pc,lr,#4
ENDP
Dma0Done PROC
;;;152 static void __irq Dma0Done(void)
;;;153 {
|L1.168|
0000a8 e92d0003 STMFD sp!,{r0,r1}
;;;154 ClearPending(BIT_DMA0);
0000ac e3a00b80 MOV r0,#0x20000
0000b0 e3a0144a MOV r1,#0x4a000000
0000b4 e5810000 STR r0,[r1,#0]
0000b8 e3a00b80 MOV r0,#0x20000
0000bc e3a0144a MOV r1,#0x4a000000
0000c0 e5810010 STR r0,[r1,#0x10]
0000c4 e3a0044a MOV r0,#0x4a000000
0000c8 e5900010 LDR r0,[r0,#0x10]
;;;155 dmaDone=1;
0000cc e3a00001 MOV r0,#1
0000d0 e59f1340 LDR r1,|L1.1048|
0000d4 e5810000 STR r0,[r1,#0] ; dmaDone
;;;156 }
0000d8 e8bd0003 LDMFD sp!,{r0,r1}
0000dc e25ef004 SUBS pc,lr,#4
ENDP
DMA_M2M PROC
;;;73 void DMA_M2M(int ch,int srcAddr,int dstAddr,int tc,int dsz,int burst)
;;;74 {
0000e0 e92d4fff STMFD sp!,{r0-r11,lr}
0000e4 e24dd02c SUB sp,sp,#0x2c
0000e8 e1a07003 MOV r7,r3
0000ec e59d6060 LDR r6,[sp,#0x60]
0000f0 e59db064 LDR r11,[sp,#0x64]
;;;75 int i,time;
;;;76 volatile U32 memSum0=0,memSum1=0;
0000f4 e3a00000 MOV r0,#0
0000f8 e1a08000 MOV r8,r0
0000fc e3a00000 MOV r0,#0
000100 e1a09000 MOV r9,r0
;;;77 DMA *pDMA;
;;;78 int length;
;;;79
;;;80 length=tc*(burst ? 4:1)*((dsz==0)+(dsz==1)*2+(dsz==2)*4);
000104 e3560000 CMP r6,#0
000108 1a000001 BNE |L1.276|
00010c e3a00001 MOV r0,#1
000110 ea000000 B |L1.280|
|L1.276|
000114 e3a00000 MOV r0,#0
|L1.280|
000118 e3560001 CMP r6,#1
00011c 1a000001 BNE |L1.296|
000120 e3a01001 MOV r1,#1
000124 ea000000 B |L1.300|
|L1.296|
000128 e3a01000 MOV r1,#0
|L1.300|
00012c e0801081 ADD r1,r0,r1,LSL #1
000130 e3560002 CMP r6,#2
000134 1a000001 BNE |L1.320|
000138 e3a00001 MOV r0,#1
00013c ea000000 B |L1.324|
|L1.320|
000140 e3a00000 MOV r0,#0
|L1.324|
000144 e0811100 ADD r1,r1,r0,LSL #2
000148 e35b0000 CMP r11,#0
00014c 0a000001 BEQ |L1.344|
000150 e3a00004 MOV r0,#4
000154 ea000000 B |L1.348|
|L1.344|
000158 e3a00001 MOV r0,#1
|L1.348|
00015c e0000097 MUL r0,r7,r0
000160 e00a0190 MUL r10,r0,r1
;;;81
;;;82 Uart_Printf("[DMA%d MEM2MEM Test]\n",ch);
000164 e28f0fac ADR r0,|L1.1052|
000168 e59d102c LDR r1,[sp,#0x2c]
00016c ebfffffe BL Uart_Printf
;;;83
;;;84 switch(ch)
000170 e59d002c LDR r0,[sp,#0x2c]
000174 e3500000 CMP r0,#0
000178 0a000006 BEQ |L1.408|
00017c e3500001 CMP r0,#1
000180 0a00000e BEQ |L1.448|
000184 e3500002 CMP r0,#2
000188 0a000016 BEQ |L1.488|
00018c e3500003 CMP r0,#3
000190 1a000028 BNE |L1.568|
000194 ea00001d B |L1.528|
;;;85 {
;;;86 case 0:
;;;87 pISR_DMA0=(int)Dma0Done;
|L1.408|
000198 e59f0294 LDR r0,|L1.1076|
00019c e59f1294 LDR r1,|L1.1080|
0001a0 e5810f64 STR r0,[r1,#0xf64]
;;;88 rINTMSK&=~(BIT_DMA0);
0001a4 e3a0044a MOV r0,#0x4a000000
0001a8 e5900008 LDR r0,[r0,#8]
0001ac e3c00b80 BIC r0,r0,#0x20000
0001b0 e3a0144a MOV r1,#0x4a000000
0001b4 e5810008 STR r0,[r1,#8]
;;;89 pDMA=(void *)0x4b000000;
0001b8 e3a0544b MOV r5,#0x4b000000
;;;90 break;
0001bc ea00001d B |L1.568|
;;;91 case 1:
;;;92 pISR_DMA1=(int)Dma1Done;
|L1.448|
0001c0 e59f0274 LDR r0,|L1.1084|
0001c4 e59f126c LDR r1,|L1.1080|
0001c8 e5810f68 STR r0,[r1,#0xf68]
;;;93 rINTMSK&=~(BIT_DMA1);
0001cc e3a0044a MOV r0,#0x4a000000
0001d0 e5900008 LDR r0,[r0,#8]
0001d4 e3c00a40 BIC r0,r0,#0x40000
0001d8 e3a0144a MOV r1,#0x4a000000
0001dc e5810008 STR r0,[r1,#8]
;;;94 pDMA=(void *)0x4b000040;
0001e0 e59f5258 LDR r5,|L1.1088|
;;;95 break;
0001e4 ea000013 B |L1.568|
;;;96 case 2:
;;;97 pISR_DMA2=(int)Dma2Done;
|L1.488|
0001e8 e59f0254 LDR r0,|L1.1092|
0001ec e59f1244 LDR r1,|L1.1080|
0001f0 e5810f6c STR r0,[r1,#0xf6c]
;;;98 rINTMSK&=~(BIT_DMA2);
0001f4 e3a0044a MOV r0,#0x4a000000
0001f8 e5900008 LDR r0,[r0,#8]
0001fc e3c00a80 BIC r0,r0,#0x80000
000200 e3a0144a MOV r1,#0x4a000000
000204 e5810008 STR r0,[r1,#8]
;;;99 pDMA=(void *)0x4b000080;
000208 e59f5238 LDR r5,|L1.1096|
;;;100 break;
00020c ea000009 B |L1.568|
;;;101 case 3:
;;;102 pISR_DMA3=(int)Dma3Done;
|L1.528|
000210 e59f0234 LDR r0,|L1.1100|
000214 e59f121c LDR r1,|L1.1080|
000218 e5810f70 STR r0,[r1,#0xf70]
;;;103 rINTMSK&=~(BIT_DMA3);
00021c e3a0044a MOV r0,#0x4a000000
000220 e5900008 LDR r0,[r0,#8]
000224 e3c00940 BIC r0,r0,#0x100000
000228 e3a0144a MOV r1,#0x4a000000
00022c e5810008 STR r0,[r1,#8]
;;;104 pDMA=(void *)0x4b0000c0;
000230 e59f5218 LDR r5,|L1.1104|
;;;105 break;
000234 e1a00000 NOP
;;;106 }
;;;107
;;;108 Uart_Printf("DMA%d %8xh->%8xh,size=%xh(tc=%xh),dsz=%d,burst=%d\n",ch, srcAddr,dstAddr,length,tc,dsz,burst);
|L1.568|
000238 e58d6008 STR r6,[sp,#8]
00023c e58db00c STR r11,[sp,#0xc]
000240 e58d7004 STR r7,[sp,#4]
000244 e58da000 STR r10,[sp,#0]
000248 e28f0f81 ADR r0,|L1.1108|
00024c e28d302c ADD r3,sp,#0x2c
000250 e893000e LDMIA r3,{r1-r3}
000254 ebfffffe BL Uart_Printf
;;;109
;;;110 Uart_Printf("Initialize the src.\n");
000258 e28f0f8a ADR r0,|L1.1160|
00025c ebfffffe BL Uart_Printf
;;;111
;;;112 for(i=srcAddr;i<(srcAddr+length);i+=4)
000260 e59d4030 LDR r4,[sp,#0x30]
|L1.612|
000264 e59d0030 LDR r0,[sp,#0x30]
000268 e080000a ADD r0,r0,r10
00026c e1500004 CMP r0,r4
000270 da00000a BLE |L1.672|
000274 ea000001 B |L1.640|
|L1.632|
000278 e2844004 ADD r4,r4,#4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -