⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dma.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\dma.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  Dma3Done PROC
;;;170    static void __irq Dma3Done(void)
;;;171    {
                  |L1.0|
000000  e92d0003          STMFD    sp!,{r0,r1}
;;;172        ClearPending(BIT_DMA3);
000004  e3a00940          MOV      r0,#0x100000
000008  e3a0144a          MOV      r1,#0x4a000000
00000c  e5810000          STR      r0,[r1,#0]
000010  e3a00940          MOV      r0,#0x100000
000014  e3a0144a          MOV      r1,#0x4a000000
000018  e5810010          STR      r0,[r1,#0x10]
00001c  e3a0044a          MOV      r0,#0x4a000000
000020  e5900010          LDR      r0,[r0,#0x10]
;;;173        dmaDone=1;
000024  e3a00001          MOV      r0,#1
000028  e59f13e8          LDR      r1,|L1.1048|
00002c  e5810000          STR      r0,[r1,#0]  ; dmaDone
;;;174    }
000030  e8bd0003          LDMFD    sp!,{r0,r1}
000034  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Dma2Done PROC
;;;164    static void __irq Dma2Done(void)
;;;165    {
                  |L1.56|
000038  e92d0003          STMFD    sp!,{r0,r1}
;;;166        ClearPending(BIT_DMA2);
00003c  e3a00a80          MOV      r0,#0x80000
000040  e3a0144a          MOV      r1,#0x4a000000
000044  e5810000          STR      r0,[r1,#0]
000048  e3a00a80          MOV      r0,#0x80000
00004c  e3a0144a          MOV      r1,#0x4a000000
000050  e5810010          STR      r0,[r1,#0x10]
000054  e3a0044a          MOV      r0,#0x4a000000
000058  e5900010          LDR      r0,[r0,#0x10]
;;;167        dmaDone=1;
00005c  e3a00001          MOV      r0,#1
000060  e59f13b0          LDR      r1,|L1.1048|
000064  e5810000          STR      r0,[r1,#0]  ; dmaDone
;;;168    }
000068  e8bd0003          LDMFD    sp!,{r0,r1}
00006c  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Dma1Done PROC
;;;158    static void __irq Dma1Done(void)
;;;159    {
                  |L1.112|
000070  e92d0003          STMFD    sp!,{r0,r1}
;;;160        ClearPending(BIT_DMA1);
000074  e3a00a40          MOV      r0,#0x40000
000078  e3a0144a          MOV      r1,#0x4a000000
00007c  e5810000          STR      r0,[r1,#0]
000080  e3a00a40          MOV      r0,#0x40000
000084  e3a0144a          MOV      r1,#0x4a000000
000088  e5810010          STR      r0,[r1,#0x10]
00008c  e3a0044a          MOV      r0,#0x4a000000
000090  e5900010          LDR      r0,[r0,#0x10]
;;;161        dmaDone=1;
000094  e3a00001          MOV      r0,#1
000098  e59f1378          LDR      r1,|L1.1048|
00009c  e5810000          STR      r0,[r1,#0]  ; dmaDone
;;;162    }
0000a0  e8bd0003          LDMFD    sp!,{r0,r1}
0000a4  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Dma0Done PROC
;;;152    static void __irq Dma0Done(void)
;;;153    {
                  |L1.168|
0000a8  e92d0003          STMFD    sp!,{r0,r1}
;;;154        ClearPending(BIT_DMA0);
0000ac  e3a00b80          MOV      r0,#0x20000
0000b0  e3a0144a          MOV      r1,#0x4a000000
0000b4  e5810000          STR      r0,[r1,#0]
0000b8  e3a00b80          MOV      r0,#0x20000
0000bc  e3a0144a          MOV      r1,#0x4a000000
0000c0  e5810010          STR      r0,[r1,#0x10]
0000c4  e3a0044a          MOV      r0,#0x4a000000
0000c8  e5900010          LDR      r0,[r0,#0x10]
;;;155        dmaDone=1;
0000cc  e3a00001          MOV      r0,#1
0000d0  e59f1340          LDR      r1,|L1.1048|
0000d4  e5810000          STR      r0,[r1,#0]  ; dmaDone
;;;156    }
0000d8  e8bd0003          LDMFD    sp!,{r0,r1}
0000dc  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  DMA_M2M PROC
;;;73     void DMA_M2M(int ch,int srcAddr,int dstAddr,int tc,int dsz,int burst)
;;;74     {
0000e0  e92d4fff          STMFD    sp!,{r0-r11,lr}
0000e4  e24dd02c          SUB      sp,sp,#0x2c
0000e8  e1a07003          MOV      r7,r3
0000ec  e59d6060          LDR      r6,[sp,#0x60]
0000f0  e59db064          LDR      r11,[sp,#0x64]
;;;75         int i,time;
;;;76         volatile U32 memSum0=0,memSum1=0;
0000f4  e3a00000          MOV      r0,#0
0000f8  e1a08000          MOV      r8,r0
0000fc  e3a00000          MOV      r0,#0
000100  e1a09000          MOV      r9,r0
;;;77         DMA *pDMA;
;;;78         int length;
;;;79         
;;;80         length=tc*(burst ? 4:1)*((dsz==0)+(dsz==1)*2+(dsz==2)*4);
000104  e3560000          CMP      r6,#0
000108  1a000001          BNE      |L1.276|
00010c  e3a00001          MOV      r0,#1
000110  ea000000          B        |L1.280|
                  |L1.276|
000114  e3a00000          MOV      r0,#0
                  |L1.280|
000118  e3560001          CMP      r6,#1
00011c  1a000001          BNE      |L1.296|
000120  e3a01001          MOV      r1,#1
000124  ea000000          B        |L1.300|
                  |L1.296|
000128  e3a01000          MOV      r1,#0
                  |L1.300|
00012c  e0801081          ADD      r1,r0,r1,LSL #1
000130  e3560002          CMP      r6,#2
000134  1a000001          BNE      |L1.320|
000138  e3a00001          MOV      r0,#1
00013c  ea000000          B        |L1.324|
                  |L1.320|
000140  e3a00000          MOV      r0,#0
                  |L1.324|
000144  e0811100          ADD      r1,r1,r0,LSL #2
000148  e35b0000          CMP      r11,#0
00014c  0a000001          BEQ      |L1.344|
000150  e3a00004          MOV      r0,#4
000154  ea000000          B        |L1.348|
                  |L1.344|
000158  e3a00001          MOV      r0,#1
                  |L1.348|
00015c  e0000097          MUL      r0,r7,r0
000160  e00a0190          MUL      r10,r0,r1
;;;81         
;;;82         Uart_Printf("[DMA%d MEM2MEM Test]\n",ch);
000164  e28f0fac          ADR      r0,|L1.1052|
000168  e59d102c          LDR      r1,[sp,#0x2c]
00016c  ebfffffe          BL       Uart_Printf
;;;83     
;;;84         switch(ch)
000170  e59d002c          LDR      r0,[sp,#0x2c]
000174  e3500000          CMP      r0,#0
000178  0a000006          BEQ      |L1.408|
00017c  e3500001          CMP      r0,#1
000180  0a00000e          BEQ      |L1.448|
000184  e3500002          CMP      r0,#2
000188  0a000016          BEQ      |L1.488|
00018c  e3500003          CMP      r0,#3
000190  1a000028          BNE      |L1.568|
000194  ea00001d          B        |L1.528|
;;;85         {
;;;86         case 0:
;;;87         	pISR_DMA0=(int)Dma0Done;
                  |L1.408|
000198  e59f0294          LDR      r0,|L1.1076|
00019c  e59f1294          LDR      r1,|L1.1080|
0001a0  e5810f64          STR      r0,[r1,#0xf64]
;;;88         	rINTMSK&=~(BIT_DMA0);  
0001a4  e3a0044a          MOV      r0,#0x4a000000
0001a8  e5900008          LDR      r0,[r0,#8]
0001ac  e3c00b80          BIC      r0,r0,#0x20000
0001b0  e3a0144a          MOV      r1,#0x4a000000
0001b4  e5810008          STR      r0,[r1,#8]
;;;89         	pDMA=(void *)0x4b000000;
0001b8  e3a0544b          MOV      r5,#0x4b000000
;;;90         	break;
0001bc  ea00001d          B        |L1.568|
;;;91         case 1:
;;;92         	pISR_DMA1=(int)Dma1Done;
                  |L1.448|
0001c0  e59f0274          LDR      r0,|L1.1084|
0001c4  e59f126c          LDR      r1,|L1.1080|
0001c8  e5810f68          STR      r0,[r1,#0xf68]
;;;93         	rINTMSK&=~(BIT_DMA1);  
0001cc  e3a0044a          MOV      r0,#0x4a000000
0001d0  e5900008          LDR      r0,[r0,#8]
0001d4  e3c00a40          BIC      r0,r0,#0x40000
0001d8  e3a0144a          MOV      r1,#0x4a000000
0001dc  e5810008          STR      r0,[r1,#8]
;;;94         	pDMA=(void *)0x4b000040;
0001e0  e59f5258          LDR      r5,|L1.1088|
;;;95         	break;
0001e4  ea000013          B        |L1.568|
;;;96         case 2:
;;;97     	pISR_DMA2=(int)Dma2Done;
                  |L1.488|
0001e8  e59f0254          LDR      r0,|L1.1092|
0001ec  e59f1244          LDR      r1,|L1.1080|
0001f0  e5810f6c          STR      r0,[r1,#0xf6c]
;;;98         	rINTMSK&=~(BIT_DMA2);  
0001f4  e3a0044a          MOV      r0,#0x4a000000
0001f8  e5900008          LDR      r0,[r0,#8]
0001fc  e3c00a80          BIC      r0,r0,#0x80000
000200  e3a0144a          MOV      r1,#0x4a000000
000204  e5810008          STR      r0,[r1,#8]
;;;99         	pDMA=(void *)0x4b000080;
000208  e59f5238          LDR      r5,|L1.1096|
;;;100    	break;
00020c  ea000009          B        |L1.568|
;;;101        case 3:
;;;102            pISR_DMA3=(int)Dma3Done;
                  |L1.528|
000210  e59f0234          LDR      r0,|L1.1100|
000214  e59f121c          LDR      r1,|L1.1080|
000218  e5810f70          STR      r0,[r1,#0xf70]
;;;103           	rINTMSK&=~(BIT_DMA3);  
00021c  e3a0044a          MOV      r0,#0x4a000000
000220  e5900008          LDR      r0,[r0,#8]
000224  e3c00940          BIC      r0,r0,#0x100000
000228  e3a0144a          MOV      r1,#0x4a000000
00022c  e5810008          STR      r0,[r1,#8]
;;;104           	pDMA=(void *)0x4b0000c0;
000230  e59f5218          LDR      r5,|L1.1104|
;;;105            break;
000234  e1a00000          NOP      
;;;106        }
;;;107                                                                                                                                
;;;108        Uart_Printf("DMA%d %8xh->%8xh,size=%xh(tc=%xh),dsz=%d,burst=%d\n",ch, srcAddr,dstAddr,length,tc,dsz,burst);
                  |L1.568|
000238  e58d6008          STR      r6,[sp,#8]
00023c  e58db00c          STR      r11,[sp,#0xc]
000240  e58d7004          STR      r7,[sp,#4]
000244  e58da000          STR      r10,[sp,#0]
000248  e28f0f81          ADR      r0,|L1.1108|
00024c  e28d302c          ADD      r3,sp,#0x2c
000250  e893000e          LDMIA    r3,{r1-r3}
000254  ebfffffe          BL       Uart_Printf
;;;109    
;;;110        Uart_Printf("Initialize the src.\n");
000258  e28f0f8a          ADR      r0,|L1.1160|
00025c  ebfffffe          BL       Uart_Printf
;;;111        
;;;112        for(i=srcAddr;i<(srcAddr+length);i+=4)
000260  e59d4030          LDR      r4,[sp,#0x30]
                  |L1.612|
000264  e59d0030          LDR      r0,[sp,#0x30]
000268  e080000a          ADD      r0,r0,r10
00026c  e1500004          CMP      r0,r4
000270  da00000a          BLE      |L1.672|
000274  ea000001          B        |L1.640|
                  |L1.632|
000278  e2844004          ADD      r4,r4,#4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -