📄 extdmam.txt
字号:
0002d4 e3a00000 MOV r0,#0
0002d8 e51f11fc LDR r1,|L1.228|
0002dc e5810004 STR r0,[r1,#4]
;;;167 rDIDST0=d_addr;
0002e0 e1c10000 BIC r0,r1,r0
0002e4 e5805008 STR r5,[r0,#8]
;;;168 rDIDSTC0=(0<<1)|(0<<0);
0002e8 e3a00000 MOV r0,#0
0002ec e1c11000 BIC r1,r1,r0
0002f0 e581000c STR r0,[r1,#0xc]
;;;169 //rDCON0=((unsigned)1<<31)|(0<<30)|(1<<29)|(extDMAburst<<28)|(1<<27)|(0<<24)|(1<<23)|(0<<22)|(extDMAdsz<<20)|(extDMAtc); // Handshake Whole
;;;170 //rDCON0=((unsigned)1<<31)|(0<<30)|(0<<29)|(extDMAburst<<28)|(0<<27)|(0<<24)|(1<<23)|(0<<22)|(extDMAdsz<<20)|(extDMAtc); // Handshake single, auto-reload
;;;171 rDCON0=((unsigned)1<<31)|(0<<30)|(1<<29)|(extDMAburst<<28)|(0<<27)|(0<<24)|(1<<23)|(1<<22)|(extDMAdsz<<20)|(extDMAtc); // Handshake single, Whole, auto-reload
0002f4 e59f01e0 LDR r0,|L1.1244|
0002f8 e5900000 LDR r0,[r0,#0] ; extDMAburst
0002fc e1a00e00 MOV r0,r0,LSL #28
000300 e59f11d0 LDR r1,|L1.1240|
000304 e5911000 LDR r1,[r1,#0] ; extDMAdsz
000308 e1800a01 ORR r0,r0,r1,LSL #20
00030c e59f11cc LDR r1,|L1.1248|
000310 e5911000 LDR r1,[r1,#0] ; extDMAtc
000314 e1800001 ORR r0,r0,r1
000318 e3800480 ORR r0,r0,#0x80000000
00031c e3800583 ORR r0,r0,#0x20c00000
000320 e51f1244 LDR r1,|L1.228|
000324 e5810010 STR r0,[r1,#0x10]
;;;172 //rDCON0=((unsigned)0<<31)|(1<<30)|(0<<29)|(extDMAburst<<28)|(0<<27)|(0<<24)|(1<<23)|(1<<22)|(extDMAdsz<<20)|(extDMAtc); // Demand single
;;;173 rDMASKTRIG0=(0<<2)|(1<<1)|(0<<0);
000328 e3a00002 MOV r0,#2
00032c e1c11000 BIC r1,r1,r0
000330 e5810020 STR r0,[r1,#0x20]
;;;174 break;
000334 ea00001b B |L1.936|
;;;175 case 1:
;;;176 rDISRC1=s_addr;
|L1.824|
000338 e59f01f4 LDR r0,|L1.1332|
00033c e5807000 STR r7,[r0,#0]
;;;177 rDISRCC1=(0<<1)|(0<<0);
000340 e3a00000 MOV r0,#0
000344 e59f11e8 LDR r1,|L1.1332|
000348 e5810004 STR r0,[r1,#4]
;;;178 rDIDST1=d_addr;
00034c e1c10000 BIC r0,r1,r0
000350 e5805008 STR r5,[r0,#8]
;;;179 rDIDSTC1=(0<<1)|(0<<0);
000354 e3a00000 MOV r0,#0
000358 e1c11000 BIC r1,r1,r0
00035c e581000c STR r0,[r1,#0xc]
;;;180 rDCON1=((unsigned)1<<31)|(1<<30)|(1<<29)|(extDMAburst<<28)|(0<<27)|(0<<24)|(1<<23)|(1<<22)|(extDMAdsz<<20)|(extDMAtc);
000360 e59f0174 LDR r0,|L1.1244|
000364 e5900000 LDR r0,[r0,#0] ; extDMAburst
000368 e1a00e00 MOV r0,r0,LSL #28
00036c e59f1164 LDR r1,|L1.1240|
000370 e5911000 LDR r1,[r1,#0] ; extDMAdsz
000374 e1800a01 ORR r0,r0,r1,LSL #20
000378 e59f1160 LDR r1,|L1.1248|
00037c e5911000 LDR r1,[r1,#0] ; extDMAtc
000380 e1800001 ORR r0,r0,r1
000384 e38004c0 ORR r0,r0,#0xc0000000
000388 e3800583 ORR r0,r0,#0x20c00000
00038c e59f11a0 LDR r1,|L1.1332|
000390 e5810010 STR r0,[r1,#0x10]
;;;181 rDMASKTRIG1=(0<<2)|(1<<1)|(0<<0);
000394 e3a00002 MOV r0,#2
000398 e1c11000 BIC r1,r1,r0
00039c e5810020 STR r0,[r1,#0x20]
;;;182 break;
0003a0 ea000000 B |L1.936|
;;;183 default:
;;;184 break;
|L1.932|
0003a4 e1a00000 NOP
;;;185 }
;;;186
;;;187 //while(ExtdmaDone==0);
;;;188 //while((rDSTAT0&0xfffff)!=0);
;;;189 //rDMASKTRIG0|=(1<<2);
;;;190
;;;191 //Uart_Printf("DMA transfer done.\n");
;;;192
;;;193 //rINTMSK |= BIT_ALLMSK;
;;;194 //rINTSUBMSK|=BIT_SUB_ALLMSK;
;;;195 /*
;;;196 for(i=d_addr;i<d_addr+trscount;i+=4)
;;;197 {
;;;198 Uart_Printf("destination data = %x\n",*((U32 *)i));
;;;199 if((s_addr+i-d_addr) == *((U32 *)i))
;;;200 Uart_Printf("DMA test result ............O.K\n");
;;;201 //memSum1+=*((U32 *)i);
;;;202 }
;;;203 */
;;;204
;;;205 /* for(i=0;i<trscount;i++)
;;;206 {
;;;207 if(*((U8 *)(i+d_addr))==*((U8 *)(i+s_addr))) Uart_Printf("ok\n");
;;;208 Uart_Printf("destination data = %x\n",*((U8 *)(d_addr+i)));
;;;209 }
;;;210 */
;;;211
;;;212 //Uart_Printf("memSum0=%x,memSum1=%x\n",memSum0,memSum1);
;;;213
;;;214 /*
;;;215 if(memSum0==memSum1)
;;;216 Uart_Printf("DMA test result ............O.K\n");
;;;217 else
;;;218 Uart_Printf("DMA test result : ERROR.\n");
;;;219 */
;;;220 //rDMASKTRIG0|=(1<<2);
;;;221
;;;222
;;;223 //while(1)
;;;224 //{
;;;225 while(ExtdmaDone==0);
|L1.936|
0003a8 e1a00000 NOP
|L1.940|
0003ac e51f0364 LDR r0,|L1.80|
0003b0 e5900000 LDR r0,[r0,#0] ; ExtdmaDone
0003b4 e3500000 CMP r0,#0
0003b8 0afffffb BEQ |L1.940|
;;;226 //while(rDSTAT0&0x1fffff);
;;;227 ExtdmaDone =0;
0003bc e3a00000 MOV r0,#0
0003c0 e51f1378 LDR r1,|L1.80|
0003c4 e5810000 STR r0,[r1,#0] ; ExtdmaDone
;;;228 Uart_Printf("rDSTAT0=0x%x\n", rDSTAT0);
0003c8 e51f02ec LDR r0,|L1.228|
0003cc e5900014 LDR r0,[r0,#0x14]
0003d0 e1a01000 MOV r1,r0
0003d4 e28f0f57 ADR r0,|L1.1336|
0003d8 ebfffffe BL _printf
;;;229 //rDMASKTRIG0|=(1<<2);
;;;230 //while((rDMASKTRIG0&(1<<1) ));
;;;231 Uart_Printf("rDSTAT0=0x%x\n", rDSTAT0);
0003dc e51f0300 LDR r0,|L1.228|
0003e0 e5900014 LDR r0,[r0,#0x14]
0003e4 e1a01000 MOV r1,r0
0003e8 e28f0f52 ADR r0,|L1.1336|
0003ec ebfffffe BL _printf
;;;232 //rDMASKTRIG0|=(1<<2);
;;;233
;;;234
;;;235
;;;236
;;;237
;;;238 for(i=0;i<32;i++)
0003f0 e3a04000 MOV r4,#0
|L1.1012|
0003f4 e3540020 CMP r4,#0x20
0003f8 2a00000a BCS |L1.1064|
0003fc ea000001 B |L1.1032|
|L1.1024|
000400 e2844001 ADD r4,r4,#1
000404 eafffffa B |L1.1012|
;;;239 {
;;;240 if(*((U8 *)(i+d_addr))!=*((U8 *)(i+s_addr))) Uart_Printf("Error occured at 0x%x\n", i);
|L1.1032|
000408 e7d40005 LDRB r0,[r4,r5]
00040c e7d41007 LDRB r1,[r4,r7]
000410 e1500001 CMP r0,r1
000414 0a000002 BEQ |L1.1060|
000418 e1a01004 MOV r1,r4
00041c e28f0f49 ADR r0,|L1.1352|
000420 ebfffffe BL _printf
;;;241 }
|L1.1060|
000424 eafffff5 B |L1.1024|
;;;242
;;;243
;;;244 /*
;;;245 for(i=0;i<trscount;i++)
;;;246 {
;;;247 *((U8 *)(i+d_addr)) = 0xff;
;;;248 }
;;;249 */
;;;250 //rINTSUBMSK&=~(BIT_SUB_DMA0);
;;;251 //rINTMSK &= ~(BIT_DMA);
;;;252 //}
;;;253 rDMASKTRIG0|=(1<<2);
|L1.1064|
000428 e51f034c LDR r0,|L1.228|
00042c e5900020 LDR r0,[r0,#0x20]
000430 e3800004 ORR r0,r0,#4
000434 e51f1358 LDR r1,|L1.228|
000438 e5810020 STR r0,[r1,#0x20]
;;;254 rDMASKTRIG0&=~(1<<1);
00043c e1a00001 MOV r0,r1
000440 e5900020 LDR r0,[r0,#0x20]
000444 e3c00002 BIC r0,r0,#2
000448 e5810020 STR r0,[r1,#0x20]
;;;255 Uart_Printf("rDSTAT0=0x%x\n", rDSTAT0);
00044c e1a00001 MOV r0,r1
000450 e5900014 LDR r0,[r0,#0x14]
000454 e1a01000 MOV r1,r0
000458 e28f00d8 ADR r0,|L1.1336|
00045c ebfffffe BL _printf
;;;256
;;;257
;;;258 rDISRC0=0x0;
000460 e3a00000 MOV r0,#0
000464 e51f1388 LDR r1,|L1.228|
000468 e5810000 STR r0,[r1,#0]
;;;259 rDISRCC0=0x0;
00046c e3a00000 MOV r0,#0
000470 e1c11000 BIC r1,r1,r0
000474 e5810004 STR r0,[r1,#4]
;;;260 rDIDST0=0x0;
000478 e3a00000 MOV r0,#0
00047c e1c11000 BIC r1,r1,r0
000480 e5810008 STR r0,[r1,#8]
;;;261 rDIDSTC0=0x0;
000484 e3a00000 MOV r0,#0
000488 e1c11000 BIC r1,r1,r0
00048c e581000c STR r0,[r1,#0xc]
;;;262 ////////////////////////////////////////////////////////////////
;;;263 rDCON0=0x0;
000490 e3a00000 MOV r0,#0
000494 e1c11000 BIC r1,r1,r0
000498 e5810010 STR r0,[r1,#0x10]
;;;264 rDSTAT0=0x0;
00049c e3a00000 MOV r0,#0
0004a0 e1c11000 BIC r1,r1,r0
0004a4 e5810014 STR r0,[r1,#0x14]
;;;265 ///////////////////////////////////////////////////////////////
;;;266 rDMASKTRIG0=0x0;
0004a8 e3a00000 MOV r0,#0
0004ac e1c11000 BIC r1,r1,r0
0004b0 e5810020 STR r0,[r1,#0x20]
;;;267 rGPCON_U=0x0;
0004b4 e3a00000 MOV r0,#0
0004b8 e2811644 ADD r1,r1,#0x4400000
0004bc e5810000 STR r0,[r1,#0]
;;;268 Uart_Printf("rDSTAT0=0x%x\n", rDSTAT0);
0004c0 e2410644 SUB r0,r1,#0x4400000
0004c4 e5900014 LDR r0,[r0,#0x14]
0004c8 e1a01000 MOV r1,r0
0004cc e28f0064 ADR r0,|L1.1336|
0004d0 ebfffffe BL _printf
;;;269
;;;270
;;;271
;;;272
;;;273 }
0004d4 e8bd8ff8 LDMFD sp!,{r3-r11,pc}
|L1.1240|
0004d8 00000004 DCD ||.bss$2|| + 4
|L1.1244|
0004dc 00000000 DCD ||.bss$2||
|L1.1248|
0004e0 00000008 DCD ||.bss$2|| + 8
|L1.1252|
0004e4 253d6863 DCB "ch=%"
0004e8 00000a78 DCB "x\n\0\0"
|L1.1260|
0004ec 00000000 DCD DmaX0Done
|L1.1264|
0004f0 13fff000 DCD 0x13fff000
|L1.1268|
0004f4 00000000 DCD DmaX1Done
|L1.1272|
0004f8 25414d44 DCB "DMA%"
0004fc 74732064 DCB "d st"
000500 0a747261 DCB "art\n"
000504 00000000 DCB "\0\0\0\0"
|L1.1288|
000508 44747865 DCB "extD"
00050c 7562414d DCB "MAbu"
000510 3a747372 DCB "rst:"
000514 202c7825 DCB "%x, "
000518 44747865 DCB "extD"
00051c 7364414d DCB "MAds"
000520 78253a7a DCB "z:%x"
000524 7865202c DCB ", ex"
000528 414d4474 DCB "tDMA"
00052c 253a6374 DCB "tc:%"
000530 00000a78 DCB "x\n\0\0"
|L1.1332|
000534 40500000 DCD 0x40500000
|L1.1336|
000538 54534472 DCB "rDST"
00053c 3d305441 DCB "AT0="
000540 78257830 DCB "0x%x"
000544 0000000a DCB "\n\0\0\0"
|L1.1352|
000548 6f727245 DCB "Erro"
00054c 636f2072 DCB "r oc"
000550 65727563 DCB "cure"
000554 74612064 DCB "d at"
000558 25783020 DCB " 0x%"
00055c 00000a78 DCB "x\n\0\0"
ENDP
Test_extDMA PROC
;;;86 void Test_extDMA(void)
;;;87 {
000560 e92d4008 STMFD sp!,{r3,lr}
;;;88 //ch-0
;;;89 //extM2M_test(0, _NONCACHE_STARTADDRESS, _NONCACHE_STARTADDRESS + 0x80000);
;;;90 extM2M_test(0, 0x0, _NONCACHE_STARTADDRESS + 0x80000);
000564 e59f21e4 LDR r2,|L1.1872|
000568 e3a01000 MOV r1,#0
00056c e3a00000 MOV r0,#0
000570 ebfffffe BL extM2M_test
;;;91 //ch-1
;;;92 //extM2M_test(1, _NONCACHE_STARTADDRESS, _NONCACHE_STARTADDRESS + 0x80000);
;;;93 }
000574 e8bd8008 LDMFD sp!,{r3,pc}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -