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

📄 pll.txt

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

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

                          AREA ||.text||, CODE, READONLY

                  Test_PLL PROC
;;;59     void Test_PLL(void)
;;;60     {
000000  e92d4ff0          STMFD    sp!,{r4-r11,lr}
000004  e24dd02c          SUB      sp,sp,#0x2c
;;;61     	int temp, voltage=120;
000008  e3a06078          MOV      r6,#0x78
;;;62     	int i,j, mdiv, pdiv, sdiv, sval, fclk, hdiv_val, pdiv_val;
;;;63     	U32 prev_fclk;
;;;64     	U32 mpllcon_bk, clkdivn_bk, camdivn_bk;
;;;65     
;;;66     	// clock register backup.
;;;67     	mpllcon_bk = rMPLLCON;
00000c  e3a0044c          MOV      r0,#0x4c000000
000010  e5900004          LDR      r0,[r0,#4]
000014  e58d0024          STR      r0,[sp,#0x24]
;;;68     	clkdivn_bk = rCLKDIVN;
000018  e3a0044c          MOV      r0,#0x4c000000
00001c  e5900014          LDR      r0,[r0,#0x14]
000020  e58d0020          STR      r0,[sp,#0x20]
;;;69     	camdivn_bk = rCAMDIVN;
000024  e3a0044c          MOV      r0,#0x4c000000
000028  e5900018          LDR      r0,[r0,#0x18]
00002c  e58d001c          STR      r0,[sp,#0x1c]
;;;70     	
;;;71     	Uart_Printf("[PLL frequency change test 100,000 times]\n");
000030  e28f0fac          ADR      r0,|L1.744|
000034  ebfffffe          BL       Uart_Printf
;;;72     	//Uart_TxEmpty(1);
;;;73     
;;;74     	rLOCKTIME=((U32)(1807*0.8)<<12)|((U32)(1807*0.8)<<0); 
000038  e59f02d4          LDR      r0,|L1.788|
00003c  e3a0144c          MOV      r1,#0x4c000000
000040  e5810000          STR      r0,[r1,#0]
;;;75     	//rLOCKTIME=((U32)(12048)<<16)|((U32)(12048)<<0); 
;;;76     	// 1807 is 150us at 12Mhz
;;;77     
;;;78     	j=0;
000044  e3a05000          MOV      r5,#0
;;;79     	while(1) 
000048  e1a00000          NOP      
                  |L1.76|
00004c  e1a00000          NOP      
;;;80     	{
;;;81     		if(Uart_GetKey()==ESC_KEY) 
000050  ebfffffe          BL       Uart_GetKey
000054  e3500071          CMP      r0,#0x71
000058  1a000000          BNE      |L1.96|
;;;82     			break;
00005c  ea000090          B        |L1.676|
;;;83     		if(j>100000) 
                  |L1.96|
000060  e255cb60          SUBS     r12,r5,#0x18000
000064  a25cce6a          SUBGES   r12,r12,#0x6a0
000068  da000000          BLE      |L1.112|
;;;84     			break;	
00006c  ea00008c          B        |L1.676|
;;;85     
;;;86     		i= j%No_Of_Mps_Val;
                  |L1.112|
000070  e1a01005          MOV      r1,r5
000074  e59f029c          LDR      r0,|L1.792|
000078  e5900000          LDR      r0,[r0,#0]  ; No_Of_Mps_Val
00007c  ebfffffe          BL       __rt_sdiv
000080  e1a04001          MOV      r4,r1
;;;87     
;;;88     
;;;89     		fclk = Mps_Val[i][0];
000084  e59f0290          LDR      r0,|L1.796|
000088  e7900204          LDR      r0,[r0,r4,LSL #4]
00008c  e58d0028          STR      r0,[sp,#0x28]
;;;90     		//Uart_Printf("[%d]FCLK=%d [Mps_Val=%xh,%xh,%xh]\n", j, Mps_Val[i][0],Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
;;;91     		Uart_Printf("[%d] ", j);
000090  e1a01005          MOV      r1,r5
000094  e28f0fa1          ADR      r0,|L1.800|
000098  ebfffffe          BL       Uart_Printf
;;;92     		Uart_TxEmpty(1);
00009c  e3a00001          MOV      r0,#1
0000a0  ebfffffe          BL       Uart_TxEmpty
;;;93     
;;;94     		if(Mps_Val[i][0]<=350000000)
0000a4  e59f0270          LDR      r0,|L1.796|
0000a8  e7900204          LDR      r0,[r0,r4,LSL #4]
0000ac  e59f1274          LDR      r1,|L1.808|
0000b0  e1500001          CMP      r0,r1
0000b4  8a000003          BHI      |L1.200|
;;;95     		{
;;;96     			hdiv_val=12; 
0000b8  e3a0700c          MOV      r7,#0xc
;;;97     			pdiv_val=12;
0000bc  e3a0800c          MOV      r8,#0xc
;;;98     			voltage=110;
0000c0  e3a0606e          MOV      r6,#0x6e
0000c4  ea00000b          B        |L1.248|
;;;99     		}
;;;100    		else if(Mps_Val[i][0]<= 440000000) 
                  |L1.200|
0000c8  e59f024c          LDR      r0,|L1.796|
0000cc  e7900204          LDR      r0,[r0,r4,LSL #4]
0000d0  e59f1254          LDR      r1,|L1.812|
0000d4  e1500001          CMP      r0,r1
0000d8  8a000003          BHI      |L1.236|
;;;101    		{
;;;102    			hdiv_val=13; 
0000dc  e3a0700d          MOV      r7,#0xd
;;;103    			pdiv_val=12;
0000e0  e3a0800c          MOV      r8,#0xc
;;;104    			voltage=120;
0000e4  e3a06078          MOV      r6,#0x78
0000e8  ea000002          B        |L1.248|
;;;105    		}
;;;106    		else
;;;107    		{
;;;108    			hdiv_val=14; 
                  |L1.236|
0000ec  e3a0700e          MOV      r7,#0xe
;;;109    			pdiv_val=12;
0000f0  e3a0800c          MOV      r8,#0xc
;;;110    			voltage=135;
0000f4  e3a06087          MOV      r6,#0x87
;;;111    		}	
;;;112    		
;;;113    		Led_Display(j%2);
                  |L1.248|
0000f8  e0851fa5          ADD      r1,r5,r5,LSR #31
0000fc  e1a010c1          MOV      r1,r1,ASR #1
000100  e045a081          SUB      r10,r5,r1,LSL #1
000104  e1a0000a          MOV      r0,r10
000108  ebfffffe          BL       Led_Display
;;;114    		//Uart_Printf("[FCLK:HCLK:PCLK=1:%d:%d=", hdiv_val%10, (hdiv_val%10)*(pdiv_val%10));
;;;115    		//Uart_Printf("%4.1f:%4.1f:%4.1f MHz]\n", (float)fclk/MEGA, (float)fclk/MEGA/(hdiv_val%10), (float)fclk/MEGA/((hdiv_val%10)*(pdiv_val%10)));
;;;116    		Uart_Printf("Voltage:%4.2f[V]\n", (float)voltage/100);
00010c  e1a00006          MOV      r0,r6
000110  ebfffffe          BL       _fflt
000114  e1a0b000          MOV      r11,r0
000118  e59f1210          LDR      r1,|L1.816|
00011c  ebfffffe          BL       _fdiv
000120  e1a0a000          MOV      r10,r0
000124  ebfffffe          BL       _f2d
000128  e58d0014          STR      r0,[sp,#0x14]
00012c  e58d1018          STR      r1,[sp,#0x18]
000130  e1a02001          MOV      r2,r1
000134  e1a01000          MOV      r1,r0
000138  e28f0f7d          ADR      r0,|L1.820|
00013c  ebfffffe          BL       Uart_Printf
;;;117    		Max1718_Set(voltage);
000140  e1a00006          MOV      r0,r6
000144  ebfffffe          BL       Max1718_Set
;;;118    		Delay(10);
000148  e3a0000a          MOV      r0,#0xa
00014c  ebfffffe          BL       Delay
;;;119    
;;;120    		if(prev_fclk<Mps_Val[i][0]) {
000150  e59f01c4          LDR      r0,|L1.796|
000154  e7900204          LDR      r0,[r0,r4,LSL #4]
000158  e1500009          CMP      r0,r9
00015c  9a000014          BLS      |L1.436|
;;;121    			Led_Display(0x1);		
000160  e3a00001          MOV      r0,#1
000164  ebfffffe          BL       Led_Display
;;;122    			ChangeClockDivider(hdiv_val, pdiv_val);
000168  e1a01008          MOV      r1,r8
00016c  e1a00007          MOV      r0,r7
000170  ebfffffe          BL       ChangeClockDivider
;;;123    			Led_Display(0x2);
000174  e3a00002          MOV      r0,#2
000178  ebfffffe          BL       Led_Display
;;;124    			ChangeMPllValue(Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
00017c  e59f3198          LDR      r3,|L1.796|
000180  e0833204          ADD      r3,r3,r4,LSL #4
000184  e593300c          LDR      r3,[r3,#0xc]
000188  e1a02003          MOV      r2,r3
00018c  e59f3188          LDR      r3,|L1.796|
000190  e0833204          ADD      r3,r3,r4,LSL #4
000194  e5933008          LDR      r3,[r3,#8]
000198  e1a01003          MOV      r1,r3
00019c  e59f3178          LDR      r3,|L1.796|
0001a0  e0833204          ADD      r3,r3,r4,LSL #4
0001a4  e5933004          LDR      r3,[r3,#4]
0001a8  e1a00003          MOV      r0,r3
0001ac  ebfffffe          BL       ChangeMPllValue
0001b0  ea000013          B        |L1.516|
;;;125    		} 
;;;126    		else 
;;;127    		{
;;;128    			Led_Display(0x2);
                  |L1.436|
0001b4  e3a00002          MOV      r0,#2
0001b8  ebfffffe          BL       Led_Display
;;;129    			ChangeMPllValue(Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
0001bc  e59f3158          LDR      r3,|L1.796|
0001c0  e0833204          ADD      r3,r3,r4,LSL #4
0001c4  e593300c          LDR      r3,[r3,#0xc]
0001c8  e1a02003          MOV      r2,r3
0001cc  e59f3148          LDR      r3,|L1.796|
0001d0  e0833204          ADD      r3,r3,r4,LSL #4
0001d4  e5933008          LDR      r3,[r3,#8]
0001d8  e1a01003          MOV      r1,r3
0001dc  e59f3138          LDR      r3,|L1.796|
0001e0  e0833204          ADD      r3,r3,r4,LSL #4
0001e4  e5933004          LDR      r3,[r3,#4]
0001e8  e1a00003          MOV      r0,r3
0001ec  ebfffffe          BL       ChangeMPllValue
;;;130    			Led_Display(0x1);		
0001f0  e3a00001          MOV      r0,#1
0001f4  ebfffffe          BL       Led_Display
;;;131    			ChangeClockDivider(hdiv_val, pdiv_val);
0001f8  e1a01008          MOV      r1,r8
0001fc  e1a00007          MOV      r0,r7
000200  ebfffffe          BL       ChangeClockDivider
;;;132    		}
;;;133    		
;;;134    		Calc_Clock(1);
                  |L1.516|
000204  e3a00001          MOV      r0,#1
000208  ebfffffe          BL       Calc_Clock
;;;135    		Led_Display(0x4);
00020c  e3a00004          MOV      r0,#4
000210  ebfffffe          BL       Led_Display
;;;136    		UPDATE_REFRESH(Hclk);
000214  e59f012c          LDR      r0,|L1.840|
000218  e5900000          LDR      r0,[r0,#0]  ; Hclk
00021c  ebfffffe          BL       _ffltu
000220  e1a0a000          MOV      r10,r0
000224  ebfffffe          BL       _f2d
000228  e98d0003          STMIB    sp,{r0,r1}
00022c  e28f0f46          ADR      r0,|L1.844|
000230  e890000c          LDMIA    r0,{r2,r3}
000234  e59d0004          LDR      r0,[sp,#4]
000238  ebfffffe          BL       _dmul
00023c  e58d000c          STR      r0,[sp,#0xc]
000240  e58d1010          STR      r1,[sp,#0x10]
000244  e28f0f42          ADR      r0,|L1.852|
000248  e890000c          LDMIA    r0,{r2,r3}
00024c  e59d000c          LDR      r0,[sp,#0xc]
000250  ebfffffe          BL       _ddiv
000254  e58d0014          STR      r0,[sp,#0x14]
000258  e58d1018          STR      r1,[sp,#0x18]
00025c  ebfffffe          BL       _dfixu
000260  e2600001          RSB      r0,r0,#1
000264  e2800e80          ADD      r0,r0,#0x800
000268  e3a01448          MOV      r1,#0x48000000
00026c  e5911024          LDR      r1,[r1,#0x24]
000270  e1a015a1          MOV      r1,r1,LSR #11
000274  e1a01581          MOV      r1,r1,LSL #11
000278  e1800001          ORR      r0,r0,r1
00027c  e3a01448          MOV      r1,#0x48000000
000280  e5810024          STR      r0,[r1,#0x24]
;;;137    		Led_Display(0x8);
000284  e3a00008          MOV      r0,#8
000288  ebfffffe          BL       Led_Display
;;;138    
;;;139    #if 1
;;;140    		Mem_Test(1);
00028c  e3a00001          MOV      r0,#1
000290  ebfffffe          BL       Mem_Test
;;;141    #endif
;;;142    
;;;143    		prev_fclk = Mps_Val[i][0];
000294  e59f0080          LDR      r0,|L1.796|
000298  e7909204          LDR      r9,[r0,r4,LSL #4]
;;;144    		j++;
00029c  e2855001          ADD      r5,r5,#1
;;;145    	}  
0002a0  eaffff69          B        |L1.76|
;;;146    
;;;147    	Uart_Printf("\nMPLL change test OK.\n");
                  |L1.676|
0002a4  e28f00b0          ADR      r0,|L1.860|
0002a8  ebfffffe          BL       Uart_Printf
;;;148    
;;;149    	Uart_Printf("\nReturn to Previous setting.\n");
0002ac  e28f00c0          ADR      r0,|L1.884|
0002b0  ebfffffe          BL       Uart_Printf

⌨️ 快捷键说明

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