?? dma2.txt
字號:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; commandline [-errors .\err\dma2.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
WorstDmaDone PROC
;;;168 static void __irq WorstDmaDone(void)
;;;169 {
|L1.0|
000000 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;170 //int i;
;;;171 rINTSUBMSK|=(BIT_SUB_DMA0|BIT_SUB_DMA1|BIT_SUB_DMA2|BIT_SUB_DMA3);
000004 e59f013c LDR r0,|L1.328|
000008 e590001c LDR r0,[r0,#0x1c]
00000c e3800578 ORR r0,r0,#0x1e000000
000010 e59f1130 LDR r1,|L1.328|
000014 e581001c STR r0,[r1,#0x1c]
;;;172 rINTMSK|=(BIT_DMA);
000018 e1a00001 MOV r0,r1
00001c e5900008 LDR r0,[r0,#8]
000020 e3800940 ORR r0,r0,#0x100000
000024 e5810008 STR r0,[r1,#8]
;;;173 //i=rSUBSRCPND;
;;;174 if(rSUBSRCPND&(1<<25))
000028 e1a00001 MOV r0,r1
00002c e5900018 LDR r0,[r0,#0x18]
000030 e3100780 TST r0,#0x2000000
000034 0a000008 BEQ |L1.92|
;;;175 {
;;;176 rSUBSRCPND=BIT_SUB_DMA0;
000038 e3a00780 MOV r0,#0x2000000
00003c e1c11000 BIC r1,r1,r0
000040 e5810018 STR r0,[r1,#0x18]
;;;177 dmaDone+=1;
000044 e59f0100 LDR r0,|L1.332|
000048 e5900000 LDR r0,[r0,#0] ; dmaDone
00004c e2800001 ADD r0,r0,#1
000050 e59f10f4 LDR r1,|L1.332|
000054 e5810000 STR r0,[r1,#0] ; dmaDone
000058 ea000028 B |L1.256|
;;;178 }
;;;179 else if(rSUBSRCPND&(1<<26))
|L1.92|
00005c e59f00e4 LDR r0,|L1.328|
000060 e5900018 LDR r0,[r0,#0x18]
000064 e3100640 TST r0,#0x4000000
000068 0a000008 BEQ |L1.144|
;;;180 {
;;;181 rSUBSRCPND=BIT_SUB_DMA1;
00006c e3a00640 MOV r0,#0x4000000
000070 e59f10d0 LDR r1,|L1.328|
000074 e5810018 STR r0,[r1,#0x18]
;;;182 dmaDone+=2;
000078 e59f00cc LDR r0,|L1.332|
00007c e5900000 LDR r0,[r0,#0] ; dmaDone
000080 e2800002 ADD r0,r0,#2
000084 e59f10c0 LDR r1,|L1.332|
000088 e5810000 STR r0,[r1,#0] ; dmaDone
00008c ea00001b B |L1.256|
;;;183 }
;;;184 else if(rSUBSRCPND&(1<<27))
|L1.144|
000090 e59f00b0 LDR r0,|L1.328|
000094 e5900018 LDR r0,[r0,#0x18]
000098 e3100680 TST r0,#0x8000000
00009c 0a000008 BEQ |L1.196|
;;;185 {
;;;186 rSUBSRCPND=BIT_SUB_DMA2;
0000a0 e3a00680 MOV r0,#0x8000000
0000a4 e59f109c LDR r1,|L1.328|
0000a8 e5810018 STR r0,[r1,#0x18]
;;;187 dmaDone+=4;
0000ac e59f0098 LDR r0,|L1.332|
0000b0 e5900000 LDR r0,[r0,#0] ; dmaDone
0000b4 e2800004 ADD r0,r0,#4
0000b8 e59f108c LDR r1,|L1.332|
0000bc e5810000 STR r0,[r1,#0] ; dmaDone
0000c0 ea00000e B |L1.256|
;;;188 }
;;;189 else if(rSUBSRCPND&(1<<28))
|L1.196|
0000c4 e59f007c LDR r0,|L1.328|
0000c8 e5900018 LDR r0,[r0,#0x18]
0000cc e3100540 TST r0,#0x10000000
0000d0 0a000008 BEQ |L1.248|
;;;190 {
;;;191 rSUBSRCPND=BIT_SUB_DMA3;
0000d4 e3a00540 MOV r0,#0x10000000
0000d8 e59f1068 LDR r1,|L1.328|
0000dc e5810018 STR r0,[r1,#0x18]
;;;192 dmaDone+=8;
0000e0 e59f0064 LDR r0,|L1.332|
0000e4 e5900000 LDR r0,[r0,#0] ; dmaDone
0000e8 e2800008 ADD r0,r0,#8
0000ec e59f1058 LDR r1,|L1.332|
0000f0 e5810000 STR r0,[r1,#0] ; dmaDone
0000f4 ea000001 B |L1.256|
;;;193 }
;;;194 else
;;;195 {
;;;196 Uart_Printf("DMA SUB INT Fail\n");
|L1.248|
0000f8 e28f0050 ADR r0,|L1.336|
0000fc ebfffffe BL _printf
;;;197 }
;;;198 ClearPending(BIT_DMA);
|L1.256|
000100 e3a00940 MOV r0,#0x100000
000104 e59f103c LDR r1,|L1.328|
000108 e5810000 STR r0,[r1,#0]
00010c e1c10000 BIC r0,r1,r0
000110 e5900010 LDR r0,[r0,#0x10]
000114 e5810010 STR r0,[r1,#0x10]
000118 e1a00001 MOV r0,r1
00011c e5900010 LDR r0,[r0,#0x10]
;;;199 rINTMSK &= ~(BIT_DMA);
000120 e1a00001 MOV r0,r1
000124 e5900008 LDR r0,[r0,#8]
000128 e3c00940 BIC r0,r0,#0x100000
00012c e5810008 STR r0,[r1,#8]
;;;200 rINTSUBMSK &= ~(BIT_SUB_DMA0|BIT_SUB_DMA1|BIT_SUB_DMA2|BIT_SUB_DMA3);
000130 e1a00001 MOV r0,r1
000134 e590001c LDR r0,[r0,#0x1c]
000138 e3c00578 BIC r0,r0,#0x1e000000
00013c e581001c STR r0,[r1,#0x1c]
;;;201 }
000140 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000144 e25ef004 SUBS pc,lr,#4
|L1.328|
000148 40200000 DCD 0x40200000
|L1.332|
00014c 00000000 DCD ||.bss$2||
|L1.336|
000150 20414d44 DCB "DMA "
000154 20425553 DCB "SUB "
000158 20544e49 DCB "INT "
00015c 6c696146 DCB "Fail"
000160 0000000a DCB "\n\0\0\0"
ENDP
DMA0123_M2M PROC
;;;58 void DMA0123_M2M(int ch,int srcAddr,int dstAddr,int tc,int dsz,int burst)
;;;59 {
000164 e92d4fff STMFD sp!,{r0-r11,lr}
000168 e24dd014 SUB sp,sp,#0x14
00016c e1a07001 MOV r7,r1
000170 e1a08002 MOV r8,r2
000174 e59d6048 LDR r6,[sp,#0x48]
000178 e59db04c LDR r11,[sp,#0x4c]
;;;60 int i,time;
;;;61 volatile U32 memSum0=0,memSum1=0;
00017c e3a00000 MOV r0,#0
000180 e1a09000 MOV r9,r0
000184 e3a00000 MOV r0,#0
000188 e1a0a000 MOV r10,r0
;;;62 DMA *pDMA;
;;;63 int length;
;;;64
;;;65 length=tc*(burst ? 4:1)*((dsz==0)+(dsz==1)*2+(dsz==2)*4);
00018c e3560000 CMP r6,#0
000190 1a000001 BNE |L1.412|
000194 e3a00001 MOV r0,#1
000198 ea000000 B |L1.416|
|L1.412|
00019c e3a00000 MOV r0,#0
|L1.416|
0001a0 e3560001 CMP r6,#1
0001a4 1a000001 BNE |L1.432|
0001a8 e3a01001 MOV r1,#1
0001ac ea000000 B |L1.436|
|L1.432|
0001b0 e3a01000 MOV r1,#0
|L1.436|
0001b4 e0801081 ADD r1,r0,r1,LSL #1
0001b8 e3560002 CMP r6,#2
0001bc 1a000001 BNE |L1.456|
0001c0 e3a00001 MOV r0,#1
0001c4 ea000000 B |L1.460|
|L1.456|
0001c8 e3a00000 MOV r0,#0
|L1.460|
0001cc e0811100 ADD r1,r1,r0,LSL #2
0001d0 e35b0000 CMP r11,#0
0001d4 0a000001 BEQ |L1.480|
0001d8 e3a00004 MOV r0,#4
0001dc ea000000 B |L1.484|
|L1.480|
0001e0 e3a00001 MOV r0,#1
|L1.484|
0001e4 e59d2020 LDR r2,[sp,#0x20]
0001e8 e0000092 MUL r0,r2,r0
0001ec e0010190 MUL r1,r0,r1
0001f0 e58d1010 STR r1,[sp,#0x10]
;;;66 //rINTMSK &=~(BIT_DMA);//sjs
;;;67 //pISR_DMA=(int)DmaDone;
;;;68
;;;69 switch(ch)
0001f4 e59d0014 LDR r0,[sp,#0x14]
0001f8 e3500000 CMP r0,#0
0001fc 0a000006 BEQ |L1.540|
000200 e3500001 CMP r0,#1
000204 0a000012 BEQ |L1.596|
000208 e3500002 CMP r0,#2
00020c 0a00001e BEQ |L1.652|
000210 e3500003 CMP r0,#3
000214 1a000038 BNE |L1.764|
000218 ea000029 B |L1.708|
;;;70 {
;;;71 case 0:
;;;72 pISR_DMA=(int)WorstDmaDone;
|L1.540|
00021c e59f02c0 LDR r0,|L1.1252|
000220 e59f12c0 LDR r1,|L1.1256|
000224 e5810f70 STR r0,[r1,#0xf70]
;;;73 rINTSUBMSK &=~(BIT_SUB_DMA0);
000228 e51f00e8 LDR r0,|L1.328|
00022c e590001c LDR r0,[r0,#0x1c]
000230 e3c00780 BIC r0,r0,#0x2000000
000234 e51f10f4 LDR r1,|L1.328|
000238 e581001c STR r0,[r1,#0x1c]
;;;74 rINTMSK &=~(BIT_DMA);
00023c e1a00001 MOV r0,r1
000240 e5900008 LDR r0,[r0,#8]
000244 e3c00940 BIC r0,r0,#0x100000
000248 e5810008 STR r0,[r1,#8]
;;;75 pDMA=(void *)0x40400000;
00024c e2815980 ADD r5,r1,#0x200000
;;;76 break;
000250 ea000029 B |L1.764|
;;;77 case 1:
;;;78 pISR_DMA=(int)WorstDmaDone;
|L1.596|
000254 e59f0288 LDR r0,|L1.1252|
000258 e59f1288 LDR r1,|L1.1256|
00025c e5810f70 STR r0,[r1,#0xf70]
;;;79 rINTSUBMSK &=~(BIT_SUB_DMA1);
000260 e51f0120 LDR r0,|L1.328|
000264 e590001c LDR r0,[r0,#0x1c]
000268 e3c00640 BIC r0,r0,#0x4000000
00026c e51f112c LDR r1,|L1.328|
000270 e581001c STR r0,[r1,#0x1c]
;;;80 rINTMSK &=~(BIT_DMA);
000274 e1a00001 MOV r0,r1
000278 e5900008 LDR r0,[r0,#8]
00027c e3c00940 BIC r0,r0,#0x100000
000280 e5810008 STR r0,[r1,#8]
;;;81 pDMA=(void *)0x40500000;
000284 e28159c0 ADD r5,r1,#0x300000
;;;82 break;
000288 ea00001b B |L1.764|
;;;83 case 2:
;;;84 pISR_DMA=(int)WorstDmaDone;
|L1.652|
00028c e59f0250 LDR r0,|L1.1252|
000290 e59f1250 LDR r1,|L1.1256|
000294 e5810f70 STR r0,[r1,#0xf70]
;;;85 rINTSUBMSK &=~(BIT_SUB_DMA2);
000298 e51f0158 LDR r0,|L1.328|
00029c e590001c LDR r0,[r0,#0x1c]
0002a0 e3c00680 BIC r0,r0,#0x8000000
0002a4 e51f1164 LDR r1,|L1.328|
0002a8 e581001c STR r0,[r1,#0x1c]
;;;86 rINTMSK &=~(BIT_DMA);
0002ac e1a00001 MOV r0,r1
0002b0 e5900008 LDR r0,[r0,#8]
0002b4 e3c00940 BIC r0,r0,#0x100000
0002b8 e5810008 STR r0,[r1,#8]
;;;87 pDMA=(void *)0x40600000;
0002bc e2815840 ADD r5,r1,#0x400000
;;;88 break;
0002c0 ea00000d B |L1.764|
;;;89 case 3:
;;;90 pISR_DMA=(int)WorstDmaDone;
|L1.708|
0002c4 e59f0218 LDR r0,|L1.1252|
0002c8 e59f1218 LDR r1,|L1.1256|
0002cc e5810f70 STR r0,[r1,#0xf70]
;;;91 rINTSUBMSK &=~(BIT_SUB_DMA3);
0002d0 e51f0190 LDR r0,|L1.328|
0002d4 e590001c LDR r0,[r0,#0x1c]
0002d8 e3c00540 BIC r0,r0,#0x10000000
0002dc e51f119c LDR r1,|L1.328|
0002e0 e581001c STR r0,[r1,#0x1c]
;;;92 rINTMSK &=~(BIT_DMA);
0002e4 e1a00001 MOV r0,r1
0002e8 e5900008 LDR r0,[r0,#8]
0002ec e3c00940 BIC r0,r0,#0x100000
0002f0 e5810008 STR r0,[r1,#8]
;;;93 pDMA=(void *)0x40700000;
0002f4 e2815850 ADD r5,r1,#0x500000
;;;94 break;
0002f8 e1a00000 NOP
;;;95 }
;;;96
;;;97 pDMA->DISRC=srcAddr;
|L1.764|
0002fc e5857000 STR r7,[r5,#0]
;;;98 pDMA->DISRCC=(0<<1)|(0<<0); // inc,AHB
000300 e3a00000 MOV r0,#0
000304 e5850004 STR r0,[r5,#4]
;;;99 pDMA->DIDST=dstAddr;
000308 e5858008 STR r8,[r5,#8]
;;;100 pDMA->DIDSTC=(0<<1)|(0<<0); // inc,AHB
00030c e3a00000 MOV r0,#0
000310 e585000c STR r0,[r5,#0xc]
;;;101 pDMA->DCON=(1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
000314 e1a00e0b MOV r0,r11,LSL #28
000318 e1800a06 ORR r0,r0,r6,LSL #20
00031c e59d2020 LDR r2,[sp,#0x20]
000320 e1800002 ORR r0,r0,r2
000324 e38004c0 ORR r0,r0,#0xc0000000
000328 e38005a1 ORR r0,r0,#0x28400000
00032c e5850010 STR r0,[r5,#0x10]
;;;102
;;;103 //HS,AHB,TC interrupt,whole, SW request mode,relaod off
;;;104 // pDMA->DMASKTRIG=(1<<1)|1; //DMA on, SW_TRIG
;;;105
;;;106 /*
;;;107 for(i=srcAddr;i<srcAddr+length;i+=4)
;;;108 {
;;;109 *((U32 *)i)=i;
;;;110 memSum0+=i;
;;;111 }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -