📄 pll.txt
字号:
; 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 + -