📄 dma.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\dma.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Ch9_DMA PROC
;;;41 void Ch9_DMA(void)
;;;42 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;43 while(1)
000004 e1a00000 NOP
|L1.8|
000008 e1a00000 NOP
;;;44 {
;;;45 int i = 0;
00000c e3a04000 MOV r4,#0
;;;46 Uart_Printf("\n");
000010 e28f00a8 ADR r0,|L1.192|
000014 ebfffffe BL _printf
;;;47 while(1)
000018 e1a00000 NOP
|L1.28|
00001c e1a00000 NOP
;;;48 { //display menu
;;;49 Uart_Printf("%2d:%s\t",i,dma_func[i][1]);
000020 e59f009c LDR r0,|L1.196|
000024 e0800184 ADD r0,r0,r4,LSL #3
000028 e1a01004 MOV r1,r4
00002c e5902004 LDR r2,[r0,#4]
000030 e28f0090 ADR r0,|L1.200|
000034 ebfffffe BL _printf
;;;50 i++;
000038 e2844001 ADD r4,r4,#1
;;;51 if((int)(dma_func[i][0])==0)
00003c e59f0080 LDR r0,|L1.196|
000040 e7900184 LDR r0,[r0,r4,LSL #3]
000044 e3500000 CMP r0,#0
000048 1a000002 BNE |L1.88|
;;;52 {
;;;53 Uart_Printf("\n");
00004c e28f006c ADR r0,|L1.192|
000050 ebfffffe BL _printf
;;;54 break;
000054 ea000007 B |L1.120|
;;;55 }
;;;56 if((i%3)==0)
|L1.88|
000058 e1a01004 MOV r1,r4
00005c e3a00003 MOV r0,#3
000060 ebfffffe BL __rt_sdiv
000064 e3510000 CMP r1,#0
000068 1a000001 BNE |L1.116|
;;;57 Uart_Printf("\n");
00006c e28f004c ADR r0,|L1.192|
000070 ebfffffe BL _printf
;;;58 }
|L1.116|
000074 eaffffe8 B |L1.28|
;;;59
;;;60 Uart_Printf("\nSelect the function to test : ");
|L1.120|
000078 e28f0050 ADR r0,|L1.208|
00007c ebfffffe BL _printf
;;;61 i = Uart_GetIntNum();
000080 ebfffffe BL Uart_GetIntNum
000084 e1a04000 MOV r4,r0
;;;62 Uart_Printf("\n");
000088 e28f0030 ADR r0,|L1.192|
00008c ebfffffe BL _printf
;;;63 if(i==-1) break;
000090 e3740001 CMN r4,#1
000094 1a000000 BNE |L1.156|
000098 ea000007 B |L1.188|
;;;64 if(i>=0 && (i<(sizeof(dma_func)/8)) )
|L1.156|
00009c e3540000 CMP r4,#0
0000a0 ba000004 BLT |L1.184|
0000a4 e3540007 CMP r4,#7
0000a8 2a000002 BCS |L1.184|
;;;65 ( (void (*)(void)) (dma_func[i][0]) )();
0000ac e59f1010 LDR r1,|L1.196|
0000b0 e7910184 LDR r0,[r1,r4,LSL #3]
0000b4 e12fff30 BLX r0
;;;66 }
|L1.184|
0000b8 eaffffd2 B |L1.8|
;;;67 }
|L1.188|
0000bc e8bd8010 LDMFD sp!,{r4,pc}
|L1.192|
0000c0 0000000a DCB "\n\0\0\0"
|L1.196|
0000c4 00000000 DCD dma_func
|L1.200|
0000c8 3a643225 DCB "%2d:"
0000cc 00097325 DCB "%s\t\0"
|L1.208|
0000d0 6c65530a DCB "\nSel"
0000d4 20746365 DCB "ect "
0000d8 20656874 DCB "the "
0000dc 636e7566 DCB "func"
0000e0 6e6f6974 DCB "tion"
0000e4 206f7420 DCB " to "
0000e8 74736574 DCB "test"
0000ec 00203a20 DCB " : \0"
ENDP
Memory_Write_test PROC
;;;69 void Memory_Write_test(void)
;;;70 {
0000f0 e92d4038 STMFD sp!,{r3-r5,lr}
;;;71 volatile U32 i,j;
;;;72
;;;73 while(Uart_GetKey()!='\n')
0000f4 e1a00000 NOP
|L1.248|
0000f8 ebfffffe BL Uart_GetKey
0000fc e350000a CMP r0,#0xa
000100 0a000014 BEQ |L1.344|
;;;74 {
;;;75 Uart_Printf("Type address....:");
000104 e28f0050 ADR r0,|L1.348|
000108 ebfffffe BL _printf
;;;76 i = Uart_GetIntNum();
00010c ebfffffe BL Uart_GetIntNum
000110 e1a04000 MOV r4,r0
;;;77 if(i==-1) break;
000114 e1a00004 MOV r0,r4
000118 e3700001 CMN r0,#1
00011c 1a000000 BNE |L1.292|
000120 ea00000c B |L1.344|
;;;78 Uart_Printf("Type data.... :");
|L1.292|
000124 e28f0044 ADR r0,|L1.368|
000128 ebfffffe BL _printf
;;;79 j = Uart_GetIntNum();
00012c ebfffffe BL Uart_GetIntNum
000130 e1a05000 MOV r5,r0
;;;80 if(i==-1) break;
000134 e3740001 CMN r4,#1
000138 1a000000 BNE |L1.320|
00013c ea000005 B |L1.344|
;;;81 *((U32 *)i) =j;
|L1.320|
000140 e5845000 STR r5,[r4,#0]
;;;82
;;;83 Uart_Printf("Real Addr & Data %x = %x\n",i,*((U32 *)i));
000144 e5942000 LDR r2,[r4,#0]
000148 e1a01004 MOV r1,r4
00014c e28f0030 ADR r0,|L1.388|
000150 ebfffffe BL _printf
;;;84 }
000154 eaffffe7 B |L1.248|
;;;85 }
|L1.344|
000158 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.348|
00015c 65707954 DCB "Type"
000160 64646120 DCB " add"
000164 73736572 DCB "ress"
000168 2e2e2e2e DCB "...."
00016c 0000003a DCB ":\0\0\0"
|L1.368|
000170 65707954 DCB "Type"
000174 74616420 DCB " dat"
000178 2e2e2e61 DCB "a..."
00017c 3a20202e DCB ". :"
000180 00000000 DCB "\0\0\0\0"
|L1.388|
000184 6c616552 DCB "Real"
000188 64644120 DCB " Add"
00018c 20262072 DCB "r & "
000190 61746144 DCB "Data"
000194 78252020 DCB " %x"
000198 25203d20 DCB " = %"
00019c 00000a78 DCB "x\n\0\0"
ENDP
Dma3Done PROC
;;;306 void __irq Dma3Done(void)
;;;307 {
|L1.416|
0001a0 e92d0003 STMFD sp!,{r0,r1}
;;;308 //Uart_Printf("Current TC3 : %x\n",rDSTAT3);
;;;309 rSUBSRCPND=BIT_SUB_DMA3;
0001a4 e3a00540 MOV r0,#0x10000000
0001a8 e59f148c LDR r1,|L1.1596|
0001ac e5810018 STR r0,[r1,#0x18]
;;;310 ClearPending(BIT_DMA);
0001b0 e3a00940 MOV r0,#0x100000
0001b4 e1c11000 BIC r1,r1,r0
0001b8 e5810000 STR r0,[r1,#0]
0001bc e1c10000 BIC r0,r1,r0
0001c0 e5900010 LDR r0,[r0,#0x10]
0001c4 e5810010 STR r0,[r1,#0x10]
0001c8 e1a00001 MOV r0,r1
0001cc e5900010 LDR r0,[r0,#0x10]
;;;311 dmaDone=1;
0001d0 e3a00001 MOV r0,#1
0001d4 e59f1464 LDR r1,|L1.1600|
0001d8 e5810000 STR r0,[r1,#0] ; dmaDone
;;;312 }
0001dc e8bd0003 LDMFD sp!,{r0,r1}
0001e0 e25ef004 SUBS pc,lr,#4
ENDP
Dma2Done PROC
;;;298 void __irq Dma2Done(void)
;;;299 {
|L1.484|
0001e4 e92d0003 STMFD sp!,{r0,r1}
;;;300 //Uart_Printf("Current TC2 : %x\n",rDSTAT2);
;;;301 rSUBSRCPND=BIT_SUB_DMA2;
0001e8 e3a00680 MOV r0,#0x8000000
0001ec e59f1448 LDR r1,|L1.1596|
0001f0 e5810018 STR r0,[r1,#0x18]
;;;302 ClearPending(BIT_DMA);
0001f4 e3a00940 MOV r0,#0x100000
0001f8 e1c11000 BIC r1,r1,r0
0001fc e5810000 STR r0,[r1,#0]
000200 e1c10000 BIC r0,r1,r0
000204 e5900010 LDR r0,[r0,#0x10]
000208 e5810010 STR r0,[r1,#0x10]
00020c e1a00001 MOV r0,r1
000210 e5900010 LDR r0,[r0,#0x10]
;;;303 dmaDone=1;
000214 e3a00001 MOV r0,#1
000218 e59f1420 LDR r1,|L1.1600|
00021c e5810000 STR r0,[r1,#0] ; dmaDone
;;;304 }
000220 e8bd0003 LDMFD sp!,{r0,r1}
000224 e25ef004 SUBS pc,lr,#4
ENDP
Dma1Done PROC
;;;290 void __irq Dma1Done(void)
;;;291 {
|L1.552|
000228 e92d0003 STMFD sp!,{r0,r1}
;;;292 //Uart_Printf("Current TC1 : %x\n",rDSTAT1);
;;;293 rSUBSRCPND=BIT_SUB_DMA1;
00022c e3a00640 MOV r0,#0x4000000
000230 e59f1404 LDR r1,|L1.1596|
000234 e5810018 STR r0,[r1,#0x18]
;;;294 ClearPending(BIT_DMA);
000238 e3a00940 MOV r0,#0x100000
00023c e1c11000 BIC r1,r1,r0
000240 e5810000 STR r0,[r1,#0]
000244 e1c10000 BIC r0,r1,r0
000248 e5900010 LDR r0,[r0,#0x10]
00024c e5810010 STR r0,[r1,#0x10]
000250 e1a00001 MOV r0,r1
000254 e5900010 LDR r0,[r0,#0x10]
;;;295 dmaDone=1;
000258 e3a00001 MOV r0,#1
00025c e59f13dc LDR r1,|L1.1600|
000260 e5810000 STR r0,[r1,#0] ; dmaDone
;;;296 }
000264 e8bd0003 LDMFD sp!,{r0,r1}
000268 e25ef004 SUBS pc,lr,#4
ENDP
Dma0Done PROC
;;;282 void __irq Dma0Done(void)
;;;283 {
|L1.620|
00026c e92d0003 STMFD sp!,{r0,r1}
;;;284 //Uart_Printf("Current TC0 : %x\n",rDSTAT0);
;;;285 rSUBSRCPND=BIT_SUB_DMA0;
000270 e3a00780 MOV r0,#0x2000000
000274 e59f13c0 LDR r1,|L1.1596|
000278 e5810018 STR r0,[r1,#0x18]
;;;286 ClearPending(BIT_DMA);
00027c e3a00940 MOV r0,#0x100000
000280 e1c11000 BIC r1,r1,r0
000284 e5810000 STR r0,[r1,#0]
000288 e1c10000 BIC r0,r1,r0
00028c e5900010 LDR r0,[r0,#0x10]
000290 e5810010 STR r0,[r1,#0x10]
000294 e1a00001 MOV r0,r1
000298 e5900010 LDR r0,[r0,#0x10]
;;;287 dmaDone=1;
00029c e3a00001 MOV r0,#1
0002a0 e59f1398 LDR r1,|L1.1600|
0002a4 e5810000 STR r0,[r1,#0] ; dmaDone
;;;288 }
0002a8 e8bd0003 LDMFD sp!,{r0,r1}
0002ac e25ef004 SUBS pc,lr,#4
ENDP
M2M_test PROC
;;;157 void M2M_test(int ch, int s_addr, int d_addr, int burst, int dsz, int tc)
;;;158 {
0002b0 e92d4fff STMFD sp!,{r0-r11,lr}
0002b4 e24dd00c SUB sp,sp,#0xc
0002b8 e1a09001 MOV r9,r1
0002bc e1a0a002 MOV r10,r2
0002c0 e1a07003 MOV r7,r3
0002c4 e59d4040 LDR r4,[sp,#0x40]
0002c8 e59d5044 LDR r5,[sp,#0x44]
;;;159 int i,j=0,k=0;
0002cc e3a00000 MOV r0,#0
0002d0 e58d0008 STR r0,[sp,#8]
0002d4 e3a08000 MOV r8,#0
;;;160 U32 trscount;
;;;161 volatile U32 memSum0=0, memSum1=0;
0002d8 e3a00000 MOV r0,#0
0002dc e58d0004 STR r0,[sp,#4]
0002e0 e3a00000 MOV r0,#0
0002e4 e58d0000 STR r0,[sp,#0]
;;;162
;;;163 if(dsz==0)
0002e8 e3540000 CMP r4,#0
0002ec 1a000009 BNE |L1.792|
;;;164 {
;;;165 trscount=tc*(burst ? 4:1)*1;
0002f0 e3570000 CMP r7,#0
0002f4 0a000001 BEQ |L1.768|
0002f8 e3a00004 MOV r0,#4
0002fc ea000000 B |L1.772|
|L1.768|
000300 e3a00001 MOV r0,#1
|L1.772|
000304 e0060095 MUL r6,r5,r0
;;;166 Uart_Printf("Transfer count1 =%x\n",trscount);
000308 e1a01006 MOV r1,r6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -