📄 dma.txt
字号:
00030c e28f0fcc ADR r0,|L1.1604|
000310 ebfffffe BL _printf
000314 ea000018 B |L1.892|
;;;167 }
;;;168 else if(dsz==1)
|L1.792|
000318 e3540001 CMP r4,#1
00031c 1a00000a BNE |L1.844|
;;;169 {
;;;170 trscount=tc*(burst ? 4:1)*2;
000320 e3570000 CMP r7,#0
000324 0a000001 BEQ |L1.816|
000328 e3a00004 MOV r0,#4
00032c ea000000 B |L1.820|
|L1.816|
000330 e3a00001 MOV r0,#1
|L1.820|
000334 e0000095 MUL r0,r5,r0
000338 e1a06080 MOV r6,r0,LSL #1
;;;171 Uart_Printf("Transfer count2 =%x\n",trscount);
00033c e1a01006 MOV r1,r6
000340 e28f0fc5 ADR r0,|L1.1628|
000344 ebfffffe BL _printf
000348 ea00000b B |L1.892|
;;;172 }
;;;173 else if(dsz==2)
|L1.844|
00034c e3540002 CMP r4,#2
000350 1a000009 BNE |L1.892|
;;;174 {
;;;175 trscount=tc*(burst ? 4:1)*4;
000354 e3570000 CMP r7,#0
000358 0a000001 BEQ |L1.868|
00035c e3a00004 MOV r0,#4
000360 ea000000 B |L1.872|
|L1.868|
000364 e3a00001 MOV r0,#1
|L1.872|
000368 e0000095 MUL r0,r5,r0
00036c e1a06100 MOV r6,r0,LSL #2
;;;176 Uart_Printf("Transfer count3 =%x\n",trscount);
000370 e1a01006 MOV r1,r6
000374 e28f0fbe ADR r0,|L1.1652|
000378 ebfffffe BL _printf
;;;177 }
;;;178
;;;179
;;;180 switch(ch)
|L1.892|
00037c e59d000c LDR r0,[sp,#0xc]
000380 e3500000 CMP r0,#0
000384 0a000006 BEQ |L1.932|
000388 e3500001 CMP r0,#1
00038c 0a00000e BEQ |L1.972|
000390 e3500002 CMP r0,#2
000394 0a000016 BEQ |L1.1012|
000398 e3500003 CMP r0,#3
00039c 1a000028 BNE |L1.1092|
0003a0 ea00001d B |L1.1052|
;;;181 {
;;;182 case 0 :
;;;183 pISR_DMA = (int)Dma0Done;
|L1.932|
0003a4 e59f02e0 LDR r0,|L1.1676|
0003a8 e59f12e0 LDR r1,|L1.1680|
0003ac e5810f70 STR r0,[r1,#0xf70]
;;;184 rINTMSK = ~(BIT_DMA);
0003b0 e3e00940 MVN r0,#0x100000
0003b4 e59f1280 LDR r1,|L1.1596|
0003b8 e5810008 STR r0,[r1,#8]
;;;185 rINTSUBMSK=~(BIT_SUB_DMA0);
0003bc e3e00780 MVN r0,#0x2000000
0003c0 e0011000 AND r1,r1,r0
0003c4 e581001c STR r0,[r1,#0x1c]
;;;186 break;
0003c8 ea00001d B |L1.1092|
;;;187 case 1 :
;;;188 pISR_DMA = (int)Dma1Done;
|L1.972|
0003cc e59f02c0 LDR r0,|L1.1684|
0003d0 e59f12b8 LDR r1,|L1.1680|
0003d4 e5810f70 STR r0,[r1,#0xf70]
;;;189 rINTMSK = ~(BIT_DMA);
0003d8 e3e00940 MVN r0,#0x100000
0003dc e59f1258 LDR r1,|L1.1596|
0003e0 e5810008 STR r0,[r1,#8]
;;;190 rINTSUBMSK=~(BIT_SUB_DMA1);
0003e4 e3e00640 MVN r0,#0x4000000
0003e8 e0011000 AND r1,r1,r0
0003ec e581001c STR r0,[r1,#0x1c]
;;;191 break;
0003f0 ea000013 B |L1.1092|
;;;192 case 2 :
;;;193 pISR_DMA = (int)Dma2Done;
|L1.1012|
0003f4 e59f029c LDR r0,|L1.1688|
0003f8 e59f1290 LDR r1,|L1.1680|
0003fc e5810f70 STR r0,[r1,#0xf70]
;;;194 rINTMSK = ~(BIT_DMA);
000400 e3e00940 MVN r0,#0x100000
000404 e59f1230 LDR r1,|L1.1596|
000408 e5810008 STR r0,[r1,#8]
;;;195 rINTSUBMSK=~(BIT_SUB_DMA2);
00040c e3e00680 MVN r0,#0x8000000
000410 e0011000 AND r1,r1,r0
000414 e581001c STR r0,[r1,#0x1c]
;;;196 break;
000418 ea000009 B |L1.1092|
;;;197 case 3 :
;;;198 pISR_DMA = (int)Dma3Done;
|L1.1052|
00041c e59f0278 LDR r0,|L1.1692|
000420 e59f1268 LDR r1,|L1.1680|
000424 e5810f70 STR r0,[r1,#0xf70]
;;;199 rINTMSK = ~(BIT_DMA);
000428 e3e00940 MVN r0,#0x100000
00042c e59f1208 LDR r1,|L1.1596|
000430 e5810008 STR r0,[r1,#8]
;;;200 rINTSUBMSK=~(BIT_SUB_DMA3);
000434 e3e00540 MVN r0,#0x10000000
000438 e0011000 AND r1,r1,r0
00043c e581001c STR r0,[r1,#0x1c]
;;;201 break;
000440 e1a00000 NOP
;;;202 }
;;;203
;;;204 dmaDone=0;
|L1.1092|
000444 e3a00000 MOV r0,#0
000448 e59f11f0 LDR r1,|L1.1600|
00044c e5810000 STR r0,[r1,#0] ; dmaDone
;;;205
;;;206 for(i=s_addr;i<s_addr+trscount;i+=4)
000450 e1a0b009 MOV r11,r9
|L1.1108|
000454 e0890006 ADD r0,r9,r6
000458 e150000b CMP r0,r11
00045c 9a000007 BLS |L1.1152|
000460 ea000001 B |L1.1132|
|L1.1124|
000464 e28bb004 ADD r11,r11,#4
000468 eafffff9 B |L1.1108|
;;;207 {
;;;208 *((U32 *)i)=i;
|L1.1132|
00046c e58bb000 STR r11,[r11,#0]
;;;209 memSum0+=i;
000470 e59d0004 LDR r0,[sp,#4]
000474 e080000b ADD r0,r0,r11
000478 e58d0004 STR r0,[sp,#4]
;;;210 }
00047c eafffff8 B |L1.1124|
;;;211
;;;212 Uart_Printf("DMA%d start\n",ch);
|L1.1152|
000480 e28f0f86 ADR r0,|L1.1696|
000484 e59d100c LDR r1,[sp,#0xc]
000488 ebfffffe BL _printf
;;;213
;;;214 switch(ch)
00048c e59d000c LDR r0,[sp,#0xc]
000490 e3500000 CMP r0,#0
000494 0a000006 BEQ |L1.1204|
000498 e3500001 CMP r0,#1
00049c 0a000018 BEQ |L1.1284|
0004a0 e3500002 CMP r0,#2
0004a4 0a00002a BEQ |L1.1364|
0004a8 e3500003 CMP r0,#3
0004ac 1a000050 BNE |L1.1524|
0004b0 ea00003b B |L1.1444|
;;;215 {
;;;216 case 0 :
;;;217 rDISRC0=s_addr;
|L1.1204|
0004b4 e59f01f4 LDR r0,|L1.1712|
0004b8 e5809000 STR r9,[r0,#0]
;;;218 rDISRCC0=(0<<1)|(0<<0);
0004bc e3a00000 MOV r0,#0
0004c0 e59f11e8 LDR r1,|L1.1712|
0004c4 e5810004 STR r0,[r1,#4]
;;;219 rDIDST0=d_addr;
0004c8 e1c10000 BIC r0,r1,r0
0004cc e580a008 STR r10,[r0,#8]
;;;220 rDIDSTC0=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
0004d0 e3a00000 MOV r0,#0
0004d4 e1c11000 BIC r1,r1,r0
0004d8 e581000c STR r0,[r1,#0xc]
;;;221 rDCON0=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
0004dc e1a00e07 MOV r0,r7,LSL #28
0004e0 e1800a04 ORR r0,r0,r4,LSL #20
0004e4 e1800005 ORR r0,r0,r5
0004e8 e38004c0 ORR r0,r0,#0xc0000000
0004ec e38005a1 ORR r0,r0,#0x28400000
0004f0 e5810010 STR r0,[r1,#0x10]
;;;222 rDMASKTRIG0=(1<<1)|(1<<0);
0004f4 e3a00003 MOV r0,#3
0004f8 e1c11000 BIC r1,r1,r0
0004fc e5810020 STR r0,[r1,#0x20]
;;;223 break;
000500 ea00003b B |L1.1524|
;;;224
;;;225 case 1 :
;;;226 rDISRC1=s_addr;
|L1.1284|
000504 e59f01a8 LDR r0,|L1.1716|
000508 e5809000 STR r9,[r0,#0]
;;;227 rDISRCC1=(0<<1)|(0<<0);
00050c e3a00000 MOV r0,#0
000510 e59f119c LDR r1,|L1.1716|
000514 e5810004 STR r0,[r1,#4]
;;;228 rDIDST1=d_addr;
000518 e1c10000 BIC r0,r1,r0
00051c e580a008 STR r10,[r0,#8]
;;;229 rDIDSTC1=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
000520 e3a00000 MOV r0,#0
000524 e1c11000 BIC r1,r1,r0
000528 e581000c STR r0,[r1,#0xc]
;;;230 rDCON1=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
00052c e1a00e07 MOV r0,r7,LSL #28
000530 e1800a04 ORR r0,r0,r4,LSL #20
000534 e1800005 ORR r0,r0,r5
000538 e38004c0 ORR r0,r0,#0xc0000000
00053c e38005a1 ORR r0,r0,#0x28400000
000540 e5810010 STR r0,[r1,#0x10]
;;;231 rDMASKTRIG1=(1<<1)|(1<<0);
000544 e3a00003 MOV r0,#3
000548 e1c11000 BIC r1,r1,r0
00054c e5810020 STR r0,[r1,#0x20]
;;;232 break;
000550 ea000027 B |L1.1524|
;;;233
;;;234 case 2 :
;;;235 rDISRC2=s_addr;
|L1.1364|
000554 e59f015c LDR r0,|L1.1720|
000558 e5809000 STR r9,[r0,#0]
;;;236 rDISRCC2=(0<<1)|(0<<0);
00055c e3a00000 MOV r0,#0
000560 e59f1150 LDR r1,|L1.1720|
000564 e5810004 STR r0,[r1,#4]
;;;237 rDIDST2=d_addr;
000568 e1c10000 BIC r0,r1,r0
00056c e580a008 STR r10,[r0,#8]
;;;238 rDIDSTC2=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
000570 e3a00000 MOV r0,#0
000574 e1c11000 BIC r1,r1,r0
000578 e581000c STR r0,[r1,#0xc]
;;;239 rDCON2=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
00057c e1a00e07 MOV r0,r7,LSL #28
000580 e1800a04 ORR r0,r0,r4,LSL #20
000584 e1800005 ORR r0,r0,r5
000588 e38004c0 ORR r0,r0,#0xc0000000
00058c e38005a1 ORR r0,r0,#0x28400000
000590 e5810010 STR r0,[r1,#0x10]
;;;240 rDMASKTRIG2=(1<<1)|(1<<0);
000594 e3a00003 MOV r0,#3
000598 e1c11000 BIC r1,r1,r0
00059c e5810020 STR r0,[r1,#0x20]
;;;241 break;
0005a0 ea000013 B |L1.1524|
;;;242
;;;243 case 3 :
;;;244 rDISRC3=s_addr;
|L1.1444|
0005a4 e59f0110 LDR r0,|L1.1724|
0005a8 e5809000 STR r9,[r0,#0]
;;;245 rDISRCC3=(0<<1)|(0<<0);
0005ac e3a00000 MOV r0,#0
0005b0 e59f1104 LDR r1,|L1.1724|
0005b4 e5810004 STR r0,[r1,#4]
;;;246 rDIDST3=d_addr;
0005b8 e1c10000 BIC r0,r1,r0
0005bc e580a008 STR r10,[r0,#8]
;;;247 rDIDSTC3=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
0005c0 e3a00000 MOV r0,#0
0005c4 e1c11000 BIC r1,r1,r0
0005c8 e581000c STR r0,[r1,#0xc]
;;;248 rDCON3=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
0005cc e1a00e07 MOV r0,r7,LSL #28
0005d0 e1800a04 ORR r0,r0,r4,LSL #20
0005d4 e1800005 ORR r0,r0,r5
0005d8 e38004c0 ORR r0,r0,#0xc0000000
0005dc e38005a1 ORR r0,r0,#0x28400000
0005e0 e5810010 STR r0,[r1,#0x10]
;;;249 rDMASKTRIG3=(1<<1)|(1<<0);
0005e4 e3a00003 MOV r0,#3
0005e8 e1c11000 BIC r1,r1,r0
0005ec e5810020 STR r0,[r1,#0x20]
;;;250 break;
0005f0 e1a00000 NOP
;;;251 }
;;;252
;;;253 while(dmaDone==0);
|L1.1524|
0005f4 e1a00000 NOP
|L1.1528|
0005f8 e59f0040 LDR r0,|L1.1600|
0005fc e5900000 LDR r0,[r0,#0] ; dmaDone
000600 e3500000 CMP r0,#0
000604 0afffffb BEQ |L1.1528|
;;;254
;;;255 Uart_Printf("DMA transfer done.\n");
000608 e28f00b0 ADR r0,|L1.1728|
00060c ebfffffe BL _printf
;;;256
;;;257 rINTMSK = BIT_ALLMSK;
000610 e3e00000 MVN r0,#0
000614 e59f1020 LDR r1,|L1.1596|
000618 e5810008 STR r0,[r1,#8]
;;;258 rINTSUBMSK=BIT_SUB_ALLMSK;
00061c e3e004e0 MVN r0,#0xe0000000
000620 e1c11440 BIC r1,r1,r0,ASR #8
000624 e581001c STR r0,[r1,#0x1c]
;;;259
;;;260 for(k=d_addr;k<d_addr+trscount;k+=4) //Compare source data with destination data
000628 e1a0800a MOV r8,r10
|L1.1580|
00062c e08a0006 ADD r0,r10,r6
000630 e1500008 CMP r0,r8
000634 9a000037 BLS |L1.1816|
000638 ea000027 B |L1.1756|
|L1.1596|
00063c 40200000 DCD 0x40200000
|L1.1600|
000640 00000000 DCD ||.bss$2||
|L1.1604|
000644 6e617254 DCB "Tran"
000648 72656673 DCB "sfer"
00064c 756f6320 DCB " cou"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -