?? dma2.txt
字號:
;;;112 */
;;;113 Uart_Printf("#");
000330 e28f0f6d ADR r0,|L1.1260|
000334 ebfffffe BL _printf
;;;114
;;;115 switch(ch)
000338 e59d0014 LDR r0,[sp,#0x14]
00033c e3500000 CMP r0,#0
000340 0a000006 BEQ |L1.864|
000344 e3500001 CMP r0,#1
000348 0a00000d BEQ |L1.900|
00034c e3500002 CMP r0,#2
000350 0a000014 BEQ |L1.936|
000354 e3500003 CMP r0,#3
000358 1a000028 BNE |L1.1024|
00035c ea00001a B |L1.972|
;;;116 {
;;;117 case 0:
;;;118 //DMA Ch 1
;;;119 //DMA0123_M2M(1,_NONCACHE_STARTADDRESS+0x20000,_NONCACHE_STARTADDRESS+0xa0000,0x40000,1,0); //halfword,single
;;;120 DMA0123_M2M(1, _NONCACHE_STARTADDRESS+0x40000, _NONCACHE_STARTADDRESS + 0x140000, 0xfffff,1, 0);
|L1.864|
000360 e3a03000 MOV r3,#0
000364 e3a02001 MOV r2,#1
000368 e88d000c STMIA sp,{r2,r3}
00036c e0623a02 RSB r3,r2,r2,LSL #20
000370 e59f2178 LDR r2,|L1.1264|
000374 e2421940 SUB r1,r2,#0x100000
000378 e3a00001 MOV r0,#1
00037c ebfffffe BL DMA0123_M2M
;;;121 break;
000380 ea00001f B |L1.1028|
;;;122 case 1:
;;;123 //DMA Ch 2
;;;124 //DMA0123_M2M(2,_NONCACHE_STARTADDRESS+0x40000,_NONCACHE_STARTADDRESS+0xc0000,0x20000,2,0); //word,single
;;;125 DMA0123_M2M(2, _NONCACHE_STARTADDRESS+0x80000, _NONCACHE_STARTADDRESS + 0x180000, 0xfffff,2, 0);
|L1.900|
000384 e3a03000 MOV r3,#0
000388 e3a02002 MOV r2,#2
00038c e88d000c STMIA sp,{r2,r3}
000390 e59f315c LDR r3,|L1.1268|
000394 e59f215c LDR r2,|L1.1272|
000398 e2421940 SUB r1,r2,#0x100000
00039c e3a00002 MOV r0,#2
0003a0 ebfffffe BL DMA0123_M2M
;;;126 break;
0003a4 ea000016 B |L1.1028|
;;;127 case 2:
;;;128 //DMA Ch 3
;;;129 //DMA0123_M2M(3,_NONCACHE_STARTADDRESS+0x60000,_NONCACHE_STARTADDRESS+0xe0000,0x8000,2,1); //word,burst
;;;130 DMA0123_M2M(3, _NONCACHE_STARTADDRESS+0xC0000, _NONCACHE_STARTADDRESS + 0x1C0000, 0xfffff,2, 1);
|L1.936|
0003a8 e3a03001 MOV r3,#1
0003ac e3a02002 MOV r2,#2
0003b0 e88d000c STMIA sp,{r2,r3}
0003b4 e0633982 RSB r3,r3,r2,LSL #19
0003b8 e59f213c LDR r2,|L1.1276|
0003bc e2421940 SUB r1,r2,#0x100000
0003c0 e3a00003 MOV r0,#3
0003c4 ebfffffe BL DMA0123_M2M
;;;131 break;
0003c8 ea00000d B |L1.1028|
;;;132 case 3:
;;;133 rDMASKTRIG0=(1<<1)|1;
|L1.972|
0003cc e3a00003 MOV r0,#3
0003d0 e59f1128 LDR r1,|L1.1280|
0003d4 e5810020 STR r0,[r1,#0x20]
;;;134 rDMASKTRIG1=(1<<1)|1;
0003d8 e3a00003 MOV r0,#3
0003dc e2811940 ADD r1,r1,#0x100000
0003e0 e5810020 STR r0,[r1,#0x20]
;;;135 rDMASKTRIG2=(1<<1)|1;
0003e4 e3a00003 MOV r0,#3
0003e8 e0211a00 EOR r1,r1,r0,LSL #20
0003ec e5810020 STR r0,[r1,#0x20]
;;;136 rDMASKTRIG3=(1<<1)|1;
0003f0 e3a00003 MOV r0,#3
0003f4 e1811a00 ORR r1,r1,r0,LSL #20
0003f8 e5810020 STR r0,[r1,#0x20]
;;;137 break;
0003fc ea000000 B |L1.1028|
;;;138 default:
;;;139 break;
|L1.1024|
000400 e1a00000 NOP
;;;140 }
;;;141
;;;142 for(i=srcAddr;i<(srcAddr+length);i+=4)
|L1.1028|
000404 e1a04007 MOV r4,r7
|L1.1032|
000408 e59d1010 LDR r1,[sp,#0x10]
00040c e0870001 ADD r0,r7,r1
000410 e1500004 CMP r0,r4
000414 da000006 BLE |L1.1076|
000418 ea000001 B |L1.1060|
|L1.1052|
00041c e2844004 ADD r4,r4,#4
000420 eafffff8 B |L1.1032|
;;;143 {
;;;144 memSum0+=*((U32 *)i);
|L1.1060|
000424 e5940000 LDR r0,[r4,#0]
000428 e0800009 ADD r0,r0,r9
00042c e1a09000 MOV r9,r0
;;;145 }
000430 eafffff9 B |L1.1052|
;;;146
;;;147 while(dmaDone!=0xf);
|L1.1076|
000434 e1a00000 NOP
|L1.1080|
000438 e51f02f4 LDR r0,|L1.332|
00043c e5900000 LDR r0,[r0,#0] ; dmaDone
000440 e350000f CMP r0,#0xf
000444 1afffffb BNE |L1.1080|
;;;148
;;;149 rINTMSK=BIT_ALLMSK;
000448 e3e00000 MVN r0,#0
00044c e51f130c LDR r1,|L1.328|
000450 e5810008 STR r0,[r1,#8]
;;;150 rINTSUBMSK=BIT_SUB_ALLMSK;
000454 e3e004e0 MVN r0,#0xe0000000
000458 e1c11440 BIC r1,r1,r0,ASR #8
00045c e581001c STR r0,[r1,#0x1c]
;;;151
;;;152
;;;153 for(i=dstAddr;i<dstAddr+length;i+=4)
000460 e1a04008 MOV r4,r8
|L1.1124|
000464 e59d1010 LDR r1,[sp,#0x10]
000468 e0880001 ADD r0,r8,r1
00046c e1500004 CMP r0,r4
000470 da000006 BLE |L1.1168|
000474 ea000001 B |L1.1152|
|L1.1144|
000478 e2844004 ADD r4,r4,#4
00047c eafffff8 B |L1.1124|
;;;154 {
;;;155 memSum1+=*((U32 *)i);
|L1.1152|
000480 e5940000 LDR r0,[r4,#0]
000484 e080000a ADD r0,r0,r10
000488 e1a0a000 MOV r10,r0
;;;156 }
00048c eafffff9 B |L1.1144|
;;;157
;;;158 Uart_Printf("\nDMA%d %8xh->%8xh,size=%xh(tc=%xh),dsz=%d,burst=%d\n",ch,srcAddr,dstAddr,length,tc,dsz,burst);
|L1.1168|
000490 e59d0010 LDR r0,[sp,#0x10]
000494 e59d1020 LDR r1,[sp,#0x20]
000498 e1a03008 MOV r3,r8
00049c e1a02007 MOV r2,r7
0004a0 e88d0843 STMIA sp,{r0,r1,r6,r11}
0004a4 e28f0058 ADR r0,|L1.1284|
0004a8 e59d1014 LDR r1,[sp,#0x14]
0004ac ebfffffe BL _printf
;;;159 Uart_Printf("memSum0=%x,memSum1=%x\n",memSum0,memSum1);
0004b0 e1a0200a MOV r2,r10
0004b4 e1a01009 MOV r1,r9
0004b8 e28f0078 ADR r0,|L1.1336|
0004bc ebfffffe BL _printf
;;;160 if(memSum0==memSum1)
0004c0 e159000a CMP r9,r10
0004c4 1a000002 BNE |L1.1236|
;;;161 Uart_Printf("DMA test result--------------------------------------O.K.\n");
0004c8 e28f0080 ADR r0,|L1.1360|
0004cc ebfffffe BL _printf
0004d0 ea000001 B |L1.1244|
;;;162 else
;;;163 Uart_Printf("DMA test result--------------------------------------ERROR!!!\n");
|L1.1236|
0004d4 e28f00b0 ADR r0,|L1.1420|
0004d8 ebfffffe BL _printf
;;;164
;;;165 }
|L1.1244|
0004dc e28dd024 ADD sp,sp,#0x24
0004e0 e8bd8ff0 LDMFD sp!,{r4-r11,pc}
|L1.1252|
0004e4 00000000 DCD WorstDmaDone
|L1.1256|
0004e8 13fff000 DCD 0x13fff000
|L1.1260|
0004ec 00000023 DCB "#\0\0\0"
|L1.1264|
0004f0 11140000 DCD 0x11140000
|L1.1268|
0004f4 000fffff DCD 0x000fffff
|L1.1272|
0004f8 11180000 DCD 0x11180000
|L1.1276|
0004fc 111c0000 DCD 0x111c0000
|L1.1280|
000500 40400000 DCD 0x40400000
|L1.1284|
000504 414d440a DCB "\nDMA"
000508 25206425 DCB "%d %"
00050c 2d687838 DCB "8xh-"
000510 7838253e DCB ">%8x"
000514 69732c68 DCB "h,si"
000518 253d657a DCB "ze=%"
00051c 74286878 DCB "xh(t"
000520 78253d63 DCB "c=%x"
000524 642c2968 DCB "h),d"
000528 253d7a73 DCB "sz=%"
00052c 75622c64 DCB "d,bu"
000530 3d747372 DCB "rst="
000534 000a6425 DCB "%d\n\0"
|L1.1336|
000538 536d656d DCB "memS"
00053c 3d306d75 DCB "um0="
000540 6d2c7825 DCB "%x,m"
000544 75536d65 DCB "emSu"
000548 253d316d DCB "m1=%"
00054c 00000a78 DCB "x\n\0\0"
|L1.1360|
000550 20414d44 DCB "DMA "
000554 74736574 DCB "test"
000558 73657220 DCB " res"
00055c 2d746c75 DCB "ult-"
000560 2d2d2d2d DCB "----"
000564 2d2d2d2d DCB "----"
000568 2d2d2d2d DCB "----"
00056c 2d2d2d2d DCB "----"
000570 2d2d2d2d DCB "----"
000574 2d2d2d2d DCB "----"
000578 2d2d2d2d DCB "----"
00057c 2d2d2d2d DCB "----"
000580 2d2d2d2d DCB "----"
000584 4b2e4f2d DCB "-O.K"
000588 00000a2e DCB ".\n\0\0"
|L1.1420|
00058c 20414d44 DCB "DMA "
000590 74736574 DCB "test"
000594 73657220 DCB " res"
000598 2d746c75 DCB "ult-"
00059c 2d2d2d2d DCB "----"
0005a0 2d2d2d2d DCB "----"
0005a4 2d2d2d2d DCB "----"
0005a8 2d2d2d2d DCB "----"
0005ac 2d2d2d2d DCB "----"
0005b0 2d2d2d2d DCB "----"
0005b4 2d2d2d2d DCB "----"
0005b8 2d2d2d2d DCB "----"
0005bc 2d2d2d2d DCB "----"
0005c0 5252452d DCB "-ERR"
0005c4 2121524f DCB "OR!!"
0005c8 00000a21 DCB "!\n\0\0"
ENDP
Test_DMAWorst PROC
;;;37 void Test_DMAWorst(void)
;;;38 {
0005cc e92d401c STMFD sp!,{r2-r4,lr}
;;;39 int i;
;;;40
;;;41 Uart_Printf("[DMA0123 MEM2MEM Worst Test]\n");
0005d0 e28f0058 ADR r0,|L1.1584|
0005d4 ebfffffe BL _printf
;;;42 dmaDone=0;
0005d8 e3a00000 MOV r0,#0
0005dc e51f1498 LDR r1,|L1.332|
0005e0 e5810000 STR r0,[r1,#0] ; dmaDone
;;;43
;;;44 for(i=_NONCACHE_STARTADDRESS;i<_NONCACHE_STARTADDRESS+0x800000;i+=4)
0005e4 e3a04544 MOV r4,#0x11000000
|L1.1512|
0005e8 e3540546 CMP r4,#0x11800000
0005ec aa000006 BGE |L1.1548|
0005f0 ea000001 B |L1.1532|
|L1.1524|
0005f4 e2844004 ADD r4,r4,#4
0005f8 eafffffa B |L1.1512|
;;;45 {
;;;46 *((U32 *)i)=i^0x55aa5aa5;
|L1.1532|
0005fc e59f004c LDR r0,|L1.1616|
000600 e0240000 EOR r0,r4,r0
000604 e5840000 STR r0,[r4,#0]
;;;47 //*((U32 *)i)=i;
;;;48 }
000608 eafffff9 B |L1.1524|
;;;49
;;;50 //Start DMA ch0,1,2,3 simultaneously.
;;;51 //DMA0123_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x80000,0x80000,0,0); //byte,single
;;;52 DMA0123_M2M(0, _NONCACHE_STARTADDRESS, _NONCACHE_STARTADDRESS + 0x100000, 0xfffff,0, 0);
|L1.1548|
00060c e3a03000 MOV r3,#0
000610 e58d3000 STR r3,[sp,#0]
000614 e58d3004 STR r3,[sp,#4]
000618 e51f312c LDR r3,|L1.1268|
00061c e59f2030 LDR r2,|L1.1620|
000620 e3a01544 MOV r1,#0x11000000
000624 e3a00000 MOV r0,#0
000628 ebfffffe BL DMA0123_M2M
;;;53 }
00062c e8bd801c LDMFD sp!,{r2-r4,pc}
|L1.1584|
000630 414d445b DCB "[DMA"
000634 33323130 DCB "0123"
000638 4d454d20 DCB " MEM"
00063c 4d454d32 DCB "2MEM"
000640 726f5720 DCB " Wor"
000644 54207473 DCB "st T"
000648 5d747365 DCB "est]"
00064c 0000000a DCB "\n\0\0\0"
|L1.1616|
000650 55aa5aa5 DCD 0x55aa5aa5
|L1.1620|
000654 11100000 DCD 0x11100000
ENDP
AREA ||.bss||, NOINIT, ALIGN=2
dmaDone
||.bss$2||
% 4
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -