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

📄 dma.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; 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 + -