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

📄 ac97.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0008d8  e3a00003          MOV      r0,#3
0008dc  e3a0144b          MOV      r1,#0x4b000000
0008e0  e581004c          STR      r0,[r1,#0x4c]
;;;826    	rDCON1   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(5<<24)+(1<<23)+(0<<22)+(2<<20)+(PCM_Size/4);
0008e4  e59f0154          LDR      r0,|L1.2624|
0008e8  e0800124          ADD      r0,r0,r4,LSR #2
0008ec  e3a0144b          MOV      r1,#0x4b000000
0008f0  e5810050          STR      r0,[r1,#0x50]
;;;827    	rDMASKTRIG1 = (0<<2) + (1<<1) + (0<<0);          //No-stop[2], DMA1 channel On[1], No-sw trigger[0] 
0008f4  e3a00002          MOV      r0,#2
0008f8  e3a0144b          MOV      r1,#0x4b000000
0008fc  e5810060          STR      r0,[r1,#0x60]
;;;828    
;;;829    	//AC97  Initialize
;;;830    	Uart_Printf("\nConnect Head Phone Line In to CON21 (Head Phone Out) on SMDK2442 and Press Key.\n");
000900  e59f013c          LDR      r0,|L1.2628|
000904  ebfffffe          BL       Uart_Printf
;;;831    	Uart_Getch();
000908  ebfffffe          BL       Uart_Getch
;;;832    	Uart_Printf("\nNow Play...\n");
00090c  e28f0f4d          ADR      r0,|L1.2632|
000910  ebfffffe          BL       Uart_Printf
;;;833    	Uart_Printf("To Volume Up, Press the 'u' key.\n");
000914  e28f0f4f          ADR      r0,|L1.2648|
000918  ebfffffe          BL       Uart_Printf
;;;834    	Uart_Printf("To Volume Down, Press the 'd' key.\n");
00091c  e28f0f56          ADR      r0,|L1.2684|
000920  ebfffffe          BL       Uart_Printf
;;;835    	Uart_Printf("To Mute On/Off, Press EINT0 Button.\n");
000924  e28f0f5d          ADR      r0,|L1.2720|
000928  ebfffffe          BL       Uart_Printf
;;;836    	Uart_Printf("\nIf you want to exit, Press the 'x' key.\n");
00092c  e28f0f65          ADR      r0,|L1.2760|
000930  ebfffffe          BL       Uart_Printf
;;;837    	Uart_Printf("Headphone Volume Register = 0x%x\n", Output_Volume);
000934  e51f0220          LDR      r0,|L1.1820|
000938  e5901000          LDR      r1,[r0,#0]  ; Output_Volume
00093c  e28f0f6c          ADR      r0,|L1.2804|
000940  ebfffffe          BL       Uart_Printf
;;;838    
;;;839    	//Transfer data enable  using AC-Link
;;;840    	rAC_GLBCTRL = 0x200C;
000944  e59f01cc          LDR      r0,|L1.2840|
000948  e3a0145b          MOV      r1,#0x5b000000
00094c  e5810000          STR      r0,[r1,#0]
;;;841    	//Uart_Printf("\nWrite Value to AC_GLBCTRL Reg. =>0x200C\n");
;;;842    	//Uart_Printf("Read Value from AC_GLBCTRL Reg. =>0x%x\n", rAC_GLBCTRL);
;;;843    	
;;;844    	Delay(1000);    
000950  e3a00ffa          MOV      r0,#0x3e8
000954  ebfffffe          BL       Delay
;;;845    
;;;846    	  	while(1)
000958  e1a00000          NOP      
                  |L1.2396|
00095c  e1a00000          NOP      
;;;847    	    	{
;;;848    			//Uart_Printf("STAT3: 0x%x		CURR_TC: 0x%x		DCDST3: 0x%x\n", rDSTAT3&0x300000, rDSTAT3&0xfffff, rDCDST3);
;;;849    	    		Up_Down_Volume=Uart_Getch();
000960  ebfffffe          BL       Uart_Getch
000964  e59f11b0          LDR      r1,|L1.2844|
000968  e5c10000          STRB     r0,[r1,#0]  ; Up_Down_Volume
;;;850    
;;;851    			if( (Up_Down_Volume == 'x') | (Up_Down_Volume == 'X')) 
00096c  e59f01a8          LDR      r0,|L1.2844|
000970  e5d00000          LDRB     r0,[r0,#0]  ; Up_Down_Volume
000974  e3500078          CMP      r0,#0x78
000978  1a000001          BNE      |L1.2436|
00097c  e3a00001          MOV      r0,#1
000980  ea000000          B        |L1.2442|
                  |L1.2436|
000984  e3a00000          MOV      r0,#0
                  |L1.2442|
000988  e59f118c          LDR      r1,|L1.2844|
00098c  e5d11000          LDRB     r1,[r1,#0]  ; Up_Down_Volume
000990  e3510058          CMP      r1,#0x58
000994  1a000001          BNE      |L1.2464|
000998  e3a01001          MOV      r1,#1
00099c  ea000000          B        |L1.2468|
                  |L1.2464|
0009a0  e3a01000          MOV      r1,#0
                  |L1.2468|
0009a4  e1900001          ORRS     r0,r0,r1
0009a8  0a000000          BEQ      |L1.2480|
;;;852    			break;
0009ac  ea000003          B        |L1.2496|
;;;853    	    		PCM_Out_Volume(Up_Down_Volume);
                  |L1.2480|
0009b0  e59f0164          LDR      r0,|L1.2844|
0009b4  e5d00000          LDRB     r0,[r0,#0]  ; Up_Down_Volume
0009b8  ebfffffe          BL       PCM_Out_Volume
;;;854    	   	}
0009bc  eaffffe6          B        |L1.2396|
;;;855    
;;;856    	ClearPending(BIT_DMA1); 
                  |L1.2496|
0009c0  e3a00a40          MOV      r0,#0x40000
0009c4  e3a0144a          MOV      r1,#0x4a000000
0009c8  e5810000          STR      r0,[r1,#0]
0009cc  e3a00a40          MOV      r0,#0x40000
0009d0  e3a0144a          MOV      r1,#0x4a000000
0009d4  e5810010          STR      r0,[r1,#0x10]
0009d8  e3a0044a          MOV      r0,#0x4a000000
0009dc  e5900010          LDR      r0,[r0,#0x10]
;;;857    
;;;858    	rDMASKTRIG1  = (1<<2);       //DMA1 stop
0009e0  e3a00004          MOV      r0,#4
0009e4  e3a0144b          MOV      r1,#0x4b000000
0009e8  e5810060          STR      r0,[r1,#0x60]
;;;859    	rINTMSK|= (BIT_DMA1 | BIT_EINT0);
0009ec  e3a0044a          MOV      r0,#0x4a000000
0009f0  e5900008          LDR      r0,[r0,#8]
0009f4  e3800a40          ORR      r0,r0,#0x40000
0009f8  e3800001          ORR      r0,r0,#1
0009fc  e3a0144a          MOV      r1,#0x4a000000
000a00  e5810008          STR      r0,[r1,#8]
;;;860    
;;;861    	 //AC97 PCM In Channel Finish 
;;;862    	 rAC_GLBCTRL &= ~(1<<13); //PCM Out Transfer Mode Off
000a04  e3a0045b          MOV      r0,#0x5b000000
000a08  e5900000          LDR      r0,[r0,#0]
000a0c  e3c00d80          BIC      r0,r0,#0x2000
000a10  e3a0145b          MOV      r1,#0x5b000000
000a14  e5810000          STR      r0,[r1,#0]
;;;863    	 Uart_Printf("\nEnd of Play!\n");
000a18  e28f0f40          ADR      r0,|L1.2848|
000a1c  ebfffffe          BL       Uart_Printf
;;;864    }
000a20  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.2596|
000a24  00000000          DCD      Muting
                  |L1.2600|
000a28  31fff000          DCD      0x31fff000
                  |L1.2604|
000a2c  00000000          DCD      DMA1_Play_Done
                  |L1.2608|
000a30  fffbfffe          DCD      0xfffbfffe
                  |L1.2612|
000a34  31000030          DCD      0x31000030
                  |L1.2616|
000a38  00000028          DCD      ||.bss$2|| + 40
                  |L1.2620|
000a3c  5b000018          DCD      0x5b000018
                  |L1.2624|
000a40  a5a00000          DCD      0xa5a00000
                  |L1.2628|
000a44  000000d0          DCD      ||.constdata$1|| + 208
                  |L1.2632|
000a48  776f4e0a          DCB      "\nNow"
000a4c  616c5020          DCB      " Pla"
000a50  2e2e2e79          DCB      "y..."
000a54  0000000a          DCB      "\n\0\0\0"
                  |L1.2648|
000a58  56206f54          DCB      "To V"
000a5c  6d756c6f          DCB      "olum"
000a60  70552065          DCB      "e Up"
000a64  7250202c          DCB      ", Pr"
000a68  20737365          DCB      "ess "
000a6c  20656874          DCB      "the "
000a70  20277527          DCB      "\'u\' "
000a74  2e79656b          DCB      "key."
000a78  0000000a          DCB      "\n\0\0\0"
                  |L1.2684|
000a7c  56206f54          DCB      "To V"
000a80  6d756c6f          DCB      "olum"
000a84  6f442065          DCB      "e Do"
000a88  202c6e77          DCB      "wn, "
000a8c  73657250          DCB      "Pres"
000a90  68742073          DCB      "s th"
000a94  64272065          DCB      "e \'d"
000a98  656b2027          DCB      "\' ke"
000a9c  000a2e79          DCB      "y.\n\0"
                  |L1.2720|
000aa0  4d206f54          DCB      "To M"
000aa4  20657475          DCB      "ute "
000aa8  4f2f6e4f          DCB      "On/O"
000aac  202c6666          DCB      "ff, "
000ab0  73657250          DCB      "Pres"
000ab4  49452073          DCB      "s EI"
000ab8  2030544e          DCB      "NT0 "
000abc  74747542          DCB      "Butt"
000ac0  0a2e6e6f          DCB      "on.\n"
000ac4  00000000          DCB      "\0\0\0\0"
                  |L1.2760|
000ac8  2066490a          DCB      "\nIf "
000acc  20756f79          DCB      "you "
000ad0  746e6177          DCB      "want"
000ad4  206f7420          DCB      " to "
000ad8  74697865          DCB      "exit"
000adc  7250202c          DCB      ", Pr"
000ae0  20737365          DCB      "ess "
000ae4  20656874          DCB      "the "
000ae8  20277827          DCB      "\'x\' "
000aec  2e79656b          DCB      "key."
000af0  0000000a          DCB      "\n\0\0\0"
                  |L1.2804|
000af4  64616548          DCB      "Head"
000af8  6e6f6870          DCB      "phon"
000afc  6f562065          DCB      "e Vo"
000b00  656d756c          DCB      "lume"
000b04  67655220          DCB      " Reg"
000b08  65747369          DCB      "iste"
000b0c  203d2072          DCB      "r = "
000b10  78257830          DCB      "0x%x"
000b14  0000000a          DCB      "\n\0\0\0"
                  |L1.2840|
000b18  0000200c          DCD      0x0000200c
                  |L1.2844|
000b1c  0000003c          DCD      ||.bss$2|| + 60
                  |L1.2848|
000b20  646e450a          DCB      "\nEnd"
000b24  20666f20          DCB      " of "
000b28  79616c50          DCB      "Play"
000b2c  00000a21          DCB      "!\n\0\0"
                          ENDP

                  Irq_AC97_PCMout PROC
;;;1291   void __irq Irq_AC97_PCMout(void)
;;;1292   {
000b30  e92d100f          STMFD    sp!,{r0-r3,r12}
;;;1293   	U32 i, AC97_Stat;
;;;1294   	
;;;1295   	rINTMSK |=(BIT_WDT_AC97);
000b34  e3a0244a          MOV      r2,#0x4a000000
000b38  e5922008          LDR      r2,[r2,#8]
000b3c  e3822f80          ORR      r2,r2,#0x200
000b40  e3a0344a          MOV      r3,#0x4a000000
000b44  e5832008          STR      r2,[r3,#8]
;;;1296   	rINTSUBMSK|=(BIT_SUB_AC97);		
000b48  e3a0244a          MOV      r2,#0x4a000000
000b4c  e592201c          LDR      r2,[r2,#0x1c]
000b50  e3822c40          ORR      r2,r2,#0x4000
000b54  e3a0344a          MOV      r3,#0x4a000000
000b58  e583201c          STR      r2,[r3,#0x1c]
;;;1297   
;;;1298   	AC97_Stat = rAC_GLBSTAT;
000b5c  e3a0245b          MOV      r2,#0x5b000000
000b60  e5922004          LDR      r2,[r2,#4]
000b64  e1a01002          MOV      r1,r2
;;;1299   	
;;;1300   	if (AC97_Stat & AC97_PCM_OUT_THRESHOLD)
000b68  e3110a40          TST      r1,#0x40000
000b6c  0a000014          BEQ      |L1.3012|
;;;1301   	{
;;;1302   			for(i=0; i<PCM_OUT_TRIGGER; i++)
000b70  e3a00000          MOV      r0,#0
                  |L1.2932|
000b74  e3500008          CMP      r0,#8
000b78  2a000011          BCS      |L1.3012|
000b7c  ea000001          B        |L1.2952|
                  |L1.2944|
000b80  e2800001          ADD      r0,r0,#1
000b84  eafffffa          B        |L1.2932|
;;;1303   		       {
;;;1304   			 	rAC_PCMDATA = *(Play_AC97_BUF++);			
                  |L1.2952|
000b88  e51f2158          LDR      r2,|L1.2616|
000b8c  e5923000          LDR      r3,[r2,#0]  ; Play_AC97_BUF
000b90  e51fc160          LDR      r12,|L1.2616|
000b94  e4932004          LDR      r2,[r3],#4
000b98  e58c3000          STR      r3,[r12,#0]  ; Play_AC97_BUF
000b9c  e3a0345b          MOV      r3,#0x5b000000
000ba0  e5832018          STR      r2,[r3,#0x18]
;;;1305   
;;;1306   				if(Play_AC97_BUF == End_AC97_BUF)  
000ba4  e51f2174          LDR      r2,|L1.2616|
000ba8  e5922000          LDR      r2,[r2,#0]  ; Play_AC97_BUF
000bac  e59f32d0          LDR      r3,|L1.3716|
000bb0  e5933000          LDR      r3,[r3,#0]  ; End_AC97_BUF
000bb4  e1520003          CMP      r2,r3
000bb8  1a000000          BNE      |L1.3008|
;;;1307   				break;	
000bbc  ea000000          B        |L1.3012|
;;;1308   			}			
                  |L1.3008|
000bc0  eaffffee          B        |L1.2944|
;;;1309   	}
;;;1310   
;;;1311   	if(Play_AC97_BUF == End_AC97_BUF)
                  |L1.3012|
000bc4  e51f2194          LDR      r2,|L1.2616|
000bc8  e5922000          LDR      r2,[r2,#0]  ; Play_AC97_BUF
000bcc  e59f32b0          LDR      r3,|L1.3716|
000bd0  e5933000          LDR      r3,[r3,#0]  ; End_AC97_BUF
000bd4  e1520003          CMP      r2,r3
000bd8  1a000007          BNE      |L1.3068|
;;;1312   	{
;;;1313   		rAC_GLBCTRL &= ~(0x40000);	//PCM Out channel threshold INT disable
000bdc  e3a0245b          MOV      r2,#0x5b000000
000be0  e5922000          LDR      r2,[r2,#0]
000be4  e3c22a40          BIC      r2,r2,#0x40000
000be8  e3a0345b          MOV      r3,#0x5b000000
000bec  e5832000          STR      r2,[r3,#0]
;;;1314   		PCM_Out_INT_Exit =1;	
000bf0  e3a02001          MOV      r2,#1
000bf4  e59f328c          LDR      r3,|L1.3720|
000bf8  e1c320b0          STRH     r2,[r3,#0]  ; PCM_Out_INT_Exit
;;;1315   	}
;;;1316   	
;;;1317   	rSUBSRCPND=(BIT_SUB_AC97);
                  |L1.3068|
000bfc  e3a02c40          MOV      r2,#0x4000
000c00  e3a0344a          MOV      r3,#0x4a000000
000c04  e5832018          STR      r2,[r3,#0x18]
;;;1318   	ClearPending(BIT_WDT_AC97);
000c08  e3a02f80          MOV      r2,#0x200

⌨️ 快捷键说明

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