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

📄 dma.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 4 页
字号:
00030c  e28f0fcc          ADR      r0,|L1.1604|
000310  ebfffffe          BL       _printf
000314  ea000018          B        |L1.892|
;;;167    			}
;;;168    		else if(dsz==1)
                  |L1.792|
000318  e3540001          CMP      r4,#1
00031c  1a00000a          BNE      |L1.844|
;;;169    			{
;;;170    			 trscount=tc*(burst ? 4:1)*2;
000320  e3570000          CMP      r7,#0
000324  0a000001          BEQ      |L1.816|
000328  e3a00004          MOV      r0,#4
00032c  ea000000          B        |L1.820|
                  |L1.816|
000330  e3a00001          MOV      r0,#1
                  |L1.820|
000334  e0000095          MUL      r0,r5,r0
000338  e1a06080          MOV      r6,r0,LSL #1
;;;171    			Uart_Printf("Transfer count2 =%x\n",trscount);
00033c  e1a01006          MOV      r1,r6
000340  e28f0fc5          ADR      r0,|L1.1628|
000344  ebfffffe          BL       _printf
000348  ea00000b          B        |L1.892|
;;;172    			}
;;;173    		else if(dsz==2)
                  |L1.844|
00034c  e3540002          CMP      r4,#2
000350  1a000009          BNE      |L1.892|
;;;174    			{
;;;175    			 trscount=tc*(burst ? 4:1)*4;
000354  e3570000          CMP      r7,#0
000358  0a000001          BEQ      |L1.868|
00035c  e3a00004          MOV      r0,#4
000360  ea000000          B        |L1.872|
                  |L1.868|
000364  e3a00001          MOV      r0,#1
                  |L1.872|
000368  e0000095          MUL      r0,r5,r0
00036c  e1a06100          MOV      r6,r0,LSL #2
;;;176    			 Uart_Printf("Transfer count3 =%x\n",trscount);
000370  e1a01006          MOV      r1,r6
000374  e28f0fbe          ADR      r0,|L1.1652|
000378  ebfffffe          BL       _printf
;;;177    			}
;;;178    
;;;179    
;;;180    	switch(ch)
                  |L1.892|
00037c  e59d000c          LDR      r0,[sp,#0xc]
000380  e3500000          CMP      r0,#0
000384  0a000006          BEQ      |L1.932|
000388  e3500001          CMP      r0,#1
00038c  0a00000e          BEQ      |L1.972|
000390  e3500002          CMP      r0,#2
000394  0a000016          BEQ      |L1.1012|
000398  e3500003          CMP      r0,#3
00039c  1a000028          BNE      |L1.1092|
0003a0  ea00001d          B        |L1.1052|
;;;181    		{
;;;182    		case 0 : 
;;;183    			pISR_DMA = (int)Dma0Done;
                  |L1.932|
0003a4  e59f02e0          LDR      r0,|L1.1676|
0003a8  e59f12e0          LDR      r1,|L1.1680|
0003ac  e5810f70          STR      r0,[r1,#0xf70]
;;;184    			rINTMSK = ~(BIT_DMA);
0003b0  e3e00940          MVN      r0,#0x100000
0003b4  e59f1280          LDR      r1,|L1.1596|
0003b8  e5810008          STR      r0,[r1,#8]
;;;185    			rINTSUBMSK=~(BIT_SUB_DMA0);
0003bc  e3e00780          MVN      r0,#0x2000000
0003c0  e0011000          AND      r1,r1,r0
0003c4  e581001c          STR      r0,[r1,#0x1c]
;;;186    			break;
0003c8  ea00001d          B        |L1.1092|
;;;187    		case 1 :
;;;188    			pISR_DMA = (int)Dma1Done;
                  |L1.972|
0003cc  e59f02c0          LDR      r0,|L1.1684|
0003d0  e59f12b8          LDR      r1,|L1.1680|
0003d4  e5810f70          STR      r0,[r1,#0xf70]
;;;189    			rINTMSK = ~(BIT_DMA);
0003d8  e3e00940          MVN      r0,#0x100000
0003dc  e59f1258          LDR      r1,|L1.1596|
0003e0  e5810008          STR      r0,[r1,#8]
;;;190    			rINTSUBMSK=~(BIT_SUB_DMA1);
0003e4  e3e00640          MVN      r0,#0x4000000
0003e8  e0011000          AND      r1,r1,r0
0003ec  e581001c          STR      r0,[r1,#0x1c]
;;;191    			break;
0003f0  ea000013          B        |L1.1092|
;;;192    		case 2 :
;;;193    			pISR_DMA = (int)Dma2Done;
                  |L1.1012|
0003f4  e59f029c          LDR      r0,|L1.1688|
0003f8  e59f1290          LDR      r1,|L1.1680|
0003fc  e5810f70          STR      r0,[r1,#0xf70]
;;;194    			rINTMSK = ~(BIT_DMA);
000400  e3e00940          MVN      r0,#0x100000
000404  e59f1230          LDR      r1,|L1.1596|
000408  e5810008          STR      r0,[r1,#8]
;;;195    			rINTSUBMSK=~(BIT_SUB_DMA2);
00040c  e3e00680          MVN      r0,#0x8000000
000410  e0011000          AND      r1,r1,r0
000414  e581001c          STR      r0,[r1,#0x1c]
;;;196    			break;
000418  ea000009          B        |L1.1092|
;;;197    		case 3 :
;;;198    			pISR_DMA = (int)Dma3Done;
                  |L1.1052|
00041c  e59f0278          LDR      r0,|L1.1692|
000420  e59f1268          LDR      r1,|L1.1680|
000424  e5810f70          STR      r0,[r1,#0xf70]
;;;199    			rINTMSK = ~(BIT_DMA);
000428  e3e00940          MVN      r0,#0x100000
00042c  e59f1208          LDR      r1,|L1.1596|
000430  e5810008          STR      r0,[r1,#8]
;;;200    			rINTSUBMSK=~(BIT_SUB_DMA3);
000434  e3e00540          MVN      r0,#0x10000000
000438  e0011000          AND      r1,r1,r0
00043c  e581001c          STR      r0,[r1,#0x1c]
;;;201    			break;
000440  e1a00000          NOP      
;;;202    		}
;;;203    
;;;204    	dmaDone=0;
                  |L1.1092|
000444  e3a00000          MOV      r0,#0
000448  e59f11f0          LDR      r1,|L1.1600|
00044c  e5810000          STR      r0,[r1,#0]  ; dmaDone
;;;205    
;;;206    	for(i=s_addr;i<s_addr+trscount;i+=4)
000450  e1a0b009          MOV      r11,r9
                  |L1.1108|
000454  e0890006          ADD      r0,r9,r6
000458  e150000b          CMP      r0,r11
00045c  9a000007          BLS      |L1.1152|
000460  ea000001          B        |L1.1132|
                  |L1.1124|
000464  e28bb004          ADD      r11,r11,#4
000468  eafffff9          B        |L1.1108|
;;;207    		{
;;;208    		*((U32 *)i)=i;
                  |L1.1132|
00046c  e58bb000          STR      r11,[r11,#0]
;;;209            memSum0+=i;
000470  e59d0004          LDR      r0,[sp,#4]
000474  e080000b          ADD      r0,r0,r11
000478  e58d0004          STR      r0,[sp,#4]
;;;210    		}
00047c  eafffff8          B        |L1.1124|
;;;211    	
;;;212    	Uart_Printf("DMA%d start\n",ch);
                  |L1.1152|
000480  e28f0f86          ADR      r0,|L1.1696|
000484  e59d100c          LDR      r1,[sp,#0xc]
000488  ebfffffe          BL       _printf
;;;213    
;;;214    	switch(ch)
00048c  e59d000c          LDR      r0,[sp,#0xc]
000490  e3500000          CMP      r0,#0
000494  0a000006          BEQ      |L1.1204|
000498  e3500001          CMP      r0,#1
00049c  0a000018          BEQ      |L1.1284|
0004a0  e3500002          CMP      r0,#2
0004a4  0a00002a          BEQ      |L1.1364|
0004a8  e3500003          CMP      r0,#3
0004ac  1a000050          BNE      |L1.1524|
0004b0  ea00003b          B        |L1.1444|
;;;215    		{
;;;216    		case 0 :
;;;217    			rDISRC0=s_addr;
                  |L1.1204|
0004b4  e59f01f4          LDR      r0,|L1.1712|
0004b8  e5809000          STR      r9,[r0,#0]
;;;218    			rDISRCC0=(0<<1)|(0<<0);
0004bc  e3a00000          MOV      r0,#0
0004c0  e59f11e8          LDR      r1,|L1.1712|
0004c4  e5810004          STR      r0,[r1,#4]
;;;219    			rDIDST0=d_addr;
0004c8  e1c10000          BIC      r0,r1,r0
0004cc  e580a008          STR      r10,[r0,#8]
;;;220    			rDIDSTC0=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
0004d0  e3a00000          MOV      r0,#0
0004d4  e1c11000          BIC      r1,r1,r0
0004d8  e581000c          STR      r0,[r1,#0xc]
;;;221    			rDCON0=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
0004dc  e1a00e07          MOV      r0,r7,LSL #28
0004e0  e1800a04          ORR      r0,r0,r4,LSL #20
0004e4  e1800005          ORR      r0,r0,r5
0004e8  e38004c0          ORR      r0,r0,#0xc0000000
0004ec  e38005a1          ORR      r0,r0,#0x28400000
0004f0  e5810010          STR      r0,[r1,#0x10]
;;;222    			rDMASKTRIG0=(1<<1)|(1<<0);
0004f4  e3a00003          MOV      r0,#3
0004f8  e1c11000          BIC      r1,r1,r0
0004fc  e5810020          STR      r0,[r1,#0x20]
;;;223    			break;
000500  ea00003b          B        |L1.1524|
;;;224    			
;;;225    		case 1 :
;;;226    			rDISRC1=s_addr;
                  |L1.1284|
000504  e59f01a8          LDR      r0,|L1.1716|
000508  e5809000          STR      r9,[r0,#0]
;;;227    			rDISRCC1=(0<<1)|(0<<0);
00050c  e3a00000          MOV      r0,#0
000510  e59f119c          LDR      r1,|L1.1716|
000514  e5810004          STR      r0,[r1,#4]
;;;228    			rDIDST1=d_addr;
000518  e1c10000          BIC      r0,r1,r0
00051c  e580a008          STR      r10,[r0,#8]
;;;229    			rDIDSTC1=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
000520  e3a00000          MOV      r0,#0
000524  e1c11000          BIC      r1,r1,r0
000528  e581000c          STR      r0,[r1,#0xc]
;;;230    			rDCON1=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
00052c  e1a00e07          MOV      r0,r7,LSL #28
000530  e1800a04          ORR      r0,r0,r4,LSL #20
000534  e1800005          ORR      r0,r0,r5
000538  e38004c0          ORR      r0,r0,#0xc0000000
00053c  e38005a1          ORR      r0,r0,#0x28400000
000540  e5810010          STR      r0,[r1,#0x10]
;;;231    			rDMASKTRIG1=(1<<1)|(1<<0);
000544  e3a00003          MOV      r0,#3
000548  e1c11000          BIC      r1,r1,r0
00054c  e5810020          STR      r0,[r1,#0x20]
;;;232    			break;
000550  ea000027          B        |L1.1524|
;;;233    
;;;234    		case 2 :
;;;235    			rDISRC2=s_addr;
                  |L1.1364|
000554  e59f015c          LDR      r0,|L1.1720|
000558  e5809000          STR      r9,[r0,#0]
;;;236    			rDISRCC2=(0<<1)|(0<<0);
00055c  e3a00000          MOV      r0,#0
000560  e59f1150          LDR      r1,|L1.1720|
000564  e5810004          STR      r0,[r1,#4]
;;;237    			rDIDST2=d_addr;
000568  e1c10000          BIC      r0,r1,r0
00056c  e580a008          STR      r10,[r0,#8]
;;;238    			rDIDSTC2=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
000570  e3a00000          MOV      r0,#0
000574  e1c11000          BIC      r1,r1,r0
000578  e581000c          STR      r0,[r1,#0xc]
;;;239    			rDCON2=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
00057c  e1a00e07          MOV      r0,r7,LSL #28
000580  e1800a04          ORR      r0,r0,r4,LSL #20
000584  e1800005          ORR      r0,r0,r5
000588  e38004c0          ORR      r0,r0,#0xc0000000
00058c  e38005a1          ORR      r0,r0,#0x28400000
000590  e5810010          STR      r0,[r1,#0x10]
;;;240    			rDMASKTRIG2=(1<<1)|(1<<0);
000594  e3a00003          MOV      r0,#3
000598  e1c11000          BIC      r1,r1,r0
00059c  e5810020          STR      r0,[r1,#0x20]
;;;241    			break;
0005a0  ea000013          B        |L1.1524|
;;;242    
;;;243    		case 3 :
;;;244    			rDISRC3=s_addr;
                  |L1.1444|
0005a4  e59f0110          LDR      r0,|L1.1724|
0005a8  e5809000          STR      r9,[r0,#0]
;;;245    			rDISRCC3=(0<<1)|(0<<0);
0005ac  e3a00000          MOV      r0,#0
0005b0  e59f1104          LDR      r1,|L1.1724|
0005b4  e5810004          STR      r0,[r1,#4]
;;;246    			rDIDST3=d_addr;
0005b8  e1c10000          BIC      r0,r1,r0
0005bc  e580a008          STR      r10,[r0,#8]
;;;247    			rDIDSTC3=(0<<2)|(0<<1)|(0<<0);//Check Interrupt occurrence time
0005c0  e3a00000          MOV      r0,#0
0005c4  e1c11000          BIC      r1,r1,r0
0005c8  e581000c          STR      r0,[r1,#0xc]
;;;248    			rDCON3=((unsigned)1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|(0<<23)|(1<<22)|(dsz<<20)|(tc);
0005cc  e1a00e07          MOV      r0,r7,LSL #28
0005d0  e1800a04          ORR      r0,r0,r4,LSL #20
0005d4  e1800005          ORR      r0,r0,r5
0005d8  e38004c0          ORR      r0,r0,#0xc0000000
0005dc  e38005a1          ORR      r0,r0,#0x28400000
0005e0  e5810010          STR      r0,[r1,#0x10]
;;;249    			rDMASKTRIG3=(1<<1)|(1<<0);
0005e4  e3a00003          MOV      r0,#3
0005e8  e1c11000          BIC      r1,r1,r0
0005ec  e5810020          STR      r0,[r1,#0x20]
;;;250    			break;
0005f0  e1a00000          NOP      
;;;251    		}
;;;252    	
;;;253    	while(dmaDone==0);
                  |L1.1524|
0005f4  e1a00000          NOP      
                  |L1.1528|
0005f8  e59f0040          LDR      r0,|L1.1600|
0005fc  e5900000          LDR      r0,[r0,#0]  ; dmaDone
000600  e3500000          CMP      r0,#0
000604  0afffffb          BEQ      |L1.1528|
;;;254    
;;;255    	Uart_Printf("DMA transfer done.\n");
000608  e28f00b0          ADR      r0,|L1.1728|
00060c  ebfffffe          BL       _printf
;;;256    
;;;257    	rINTMSK = BIT_ALLMSK;
000610  e3e00000          MVN      r0,#0
000614  e59f1020          LDR      r1,|L1.1596|
000618  e5810008          STR      r0,[r1,#8]
;;;258    	rINTSUBMSK=BIT_SUB_ALLMSK;
00061c  e3e004e0          MVN      r0,#0xe0000000
000620  e1c11440          BIC      r1,r1,r0,ASR #8
000624  e581001c          STR      r0,[r1,#0x1c]
;;;259    
;;;260    	for(k=d_addr;k<d_addr+trscount;k+=4) //Compare source data with destination data
000628  e1a0800a          MOV      r8,r10
                  |L1.1580|
00062c  e08a0006          ADD      r0,r10,r6
000630  e1500008          CMP      r0,r8
000634  9a000037          BLS      |L1.1816|
000638  ea000027          B        |L1.1756|
                  |L1.1596|
00063c  40200000          DCD      0x40200000
                  |L1.1600|
000640  00000000          DCD      ||.bss$2||
                  |L1.1604|
000644  6e617254          DCB      "Tran"
000648  72656673          DCB      "sfer"
00064c  756f6320          DCB      " cou"

⌨️ 快捷键说明

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