📄 pll.txt
字号:
Manual_Change_Pll PROC
;;;217 void Manual_Change_Pll(void)
;;;218 {
00059c e92d4ff0 STMFD sp!,{r4-r11,lr}
0005a0 e24dd03c SUB sp,sp,#0x3c
;;;219 U32 pdiv, mdiv, sdiv, sval, fclk, hdiv_val, pdiv_val, voltage=120;
0005a4 e3a09078 MOV r9,#0x78
;;;220 int i, fclk_sel;
;;;221 float ffclk;
;;;222
;;;223 Uart_Printf("[Running change test of M/P/S value]\n");
0005a8 e28f0fbf ADR r0,|L1.2220|
0005ac ebfffffe BL Uart_Printf
;;;224
;;;225 for(i=0; i<sizeof(Mps_Val)/16; i++) {
0005b0 e3a04000 MOV r4,#0
|L1.1460|
0005b4 e3540006 CMP r4,#6
0005b8 2a000024 BCS |L1.1616|
0005bc ea000001 B |L1.1480|
|L1.1472|
0005c0 e2844001 ADD r4,r4,#1
0005c4 eafffffa B |L1.1460|
;;;226 if(i%2==0) Uart_Printf("\n");
|L1.1480|
0005c8 e3140001 TST r4,#1
0005cc 1a000001 BNE |L1.1496|
0005d0 e28f0fbe ADR r0,|L1.2256|
0005d4 ebfffffe BL Uart_Printf
;;;227 Uart_Printf("%2d: FCLK=%4.1f [%xh(%d),%xh,%xh] ", i, (float)Mps_Val[i][0]/MEGA,Mps_Val[i][1],Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
|L1.1496|
0005d8 e51f12c4 LDR r1,|L1.796|
0005dc e7911204 LDR r1,[r1,r4,LSL #4]
0005e0 e1a00001 MOV r0,r1
0005e4 ebfffffe BL _ffltu
0005e8 e1a0b000 MOV r11,r0
0005ec e59f12e0 LDR r1,|L1.2260|
0005f0 ebfffffe BL _fdiv
0005f4 e1a0a000 MOV r10,r0
0005f8 ebfffffe BL _f2d
0005fc e58d0024 STR r0,[sp,#0x24]
000600 e58d1028 STR r1,[sp,#0x28]
000604 e51f02f0 LDR r0,|L1.796|
000608 e0800204 ADD r0,r0,r4,LSL #4
00060c e590300c LDR r3,[r0,#0xc]
000610 e51f02fc LDR r0,|L1.796|
000614 e0800204 ADD r0,r0,r4,LSL #4
000618 e5902008 LDR r2,[r0,#8]
00061c e51f0308 LDR r0,|L1.796|
000620 e0800204 ADD r0,r0,r4,LSL #4
000624 e5901004 LDR r1,[r0,#4]
000628 e51f0314 LDR r0,|L1.796|
00062c e0800204 ADD r0,r0,r4,LSL #4
000630 e5900004 LDR r0,[r0,#4]
000634 e88d000f STMIA sp,{r0-r3}
000638 e1a01004 MOV r1,r4
00063c e28f0fa5 ADR r0,|L1.2264|
000640 e59d2024 LDR r2,[sp,#0x24]
000644 e59d3028 LDR r3,[sp,#0x28]
000648 ebfffffe BL Uart_Printf
;;;228 }
00064c eaffffdb B |L1.1472|
;;;229 Uart_Printf("\n");
|L1.1616|
000650 e28f0f9e ADR r0,|L1.2256|
000654 ebfffffe BL Uart_Printf
;;;230
;;;231 #if 1
;;;232 Uart_Printf("Select FCLK No(0-%d): ", sizeof(Mps_Val)/16-1);
000658 e3a01005 MOV r1,#5
00065c e28f0fa6 ADR r0,|L1.2300|
000660 ebfffffe BL Uart_Printf
;;;233 fclk_sel=Uart_GetIntNum();
000664 ebfffffe BL Uart_GetIntNum
000668 e1a06000 MOV r6,r0
;;;234 mdiv = Mps_Val[fclk_sel][1];
00066c e51f0358 LDR r0,|L1.796|
000670 e0800206 ADD r0,r0,r6,LSL #4
000674 e5905004 LDR r5,[r0,#4]
;;;235 pdiv = Mps_Val[fclk_sel][2];
000678 e51f0364 LDR r0,|L1.796|
00067c e0800206 ADD r0,r0,r6,LSL #4
000680 e5907008 LDR r7,[r0,#8]
;;;236 sdiv = Mps_Val[fclk_sel][3];
000684 e51f0370 LDR r0,|L1.796|
000688 e0800206 ADD r0,r0,r6,LSL #4
00068c e590800c LDR r8,[r0,#0xc]
;;;237 #else
;;;238 Uart_Printf("Input M vlaue : ");
;;;239 mdiv=Uart_GetIntNum();
;;;240 Uart_Printf("Input P vlaue : ");
;;;241 pdiv=Uart_GetIntNum();
;;;242 Uart_Printf("Input S vlaue : ");
;;;243 sdiv=Uart_GetIntNum();
;;;244 #endif
;;;245
;;;246 Uart_Printf("Select FCLK : HCLK(1:1=11,1:2=12,1:3=13,1:4=14,...) : ");
000690 e28f0f9f ADR r0,|L1.2324|
000694 ebfffffe BL Uart_Printf
;;;247 hdiv_val=Uart_GetIntNum();
000698 ebfffffe BL Uart_GetIntNum
00069c e58d0034 STR r0,[sp,#0x34]
;;;248 Uart_Printf("Select HCLK : PCLK(1:1=11,1:2=12) : ");
0006a0 e28f0fa9 ADR r0,|L1.2380|
0006a4 ebfffffe BL Uart_Printf
;;;249 pdiv_val=Uart_GetIntNum();
0006a8 ebfffffe BL Uart_GetIntNum
0006ac e58d0030 STR r0,[sp,#0x30]
;;;250
;;;251 sval=(int)pow(2,sdiv);
0006b0 e1a00008 MOV r0,r8
0006b4 ebfffffe BL _dfltu
0006b8 e58d001c STR r0,[sp,#0x1c]
0006bc e58d1020 STR r1,[sp,#0x20]
0006c0 e1a03001 MOV r3,r1
0006c4 e1a02000 MOV r2,r0
0006c8 e28f0fa9 ADR r0,|L1.2420|
0006cc e8900003 LDMIA r0,{r0,r1}
0006d0 ebfffffe BL __softfp_pow
0006d4 e58d0024 STR r0,[sp,#0x24]
0006d8 e58d1028 STR r1,[sp,#0x28]
0006dc ebfffffe BL _dfix
0006e0 e58d0038 STR r0,[sp,#0x38]
;;;252 ffclk = (U32) ( (((float)mdiv+8)*FIN*2.0)/(((float)pdiv+2)*(float)sval)); // pll2188x.
0006e4 e1a00005 MOV r0,r5
0006e8 ebfffffe BL _ffltu
0006ec e1a0b000 MOV r11,r0
0006f0 e3a01441 MOV r1,#0x41000000
0006f4 ebfffffe BL _fadd
0006f8 e1a0a000 MOV r10,r0
0006fc e59f1278 LDR r1,|L1.2428|
000700 ebfffffe BL _fmul
000704 e58d0004 STR r0,[sp,#4]
000708 ebfffffe BL _f2d
00070c e58d0008 STR r0,[sp,#8]
000710 e58d100c STR r1,[sp,#0xc]
000714 e28f0f96 ADR r0,|L1.2420|
000718 e890000c LDMIA r0,{r2,r3}
00071c e59d0008 LDR r0,[sp,#8]
000720 ebfffffe BL _dmul
000724 e58d0018 STR r0,[sp,#0x18]
000728 e58d101c STR r1,[sp,#0x1c]
00072c e1a00007 MOV r0,r7
000730 ebfffffe BL _ffltu
000734 e1a0b000 MOV r11,r0
000738 e3a01440 MOV r1,#0x40000000
00073c ebfffffe BL _fadd
000740 e58d0008 STR r0,[sp,#8]
000744 e59d0038 LDR r0,[sp,#0x38]
000748 ebfffffe BL _ffltu
00074c e1a0a000 MOV r10,r0
000750 e59d1008 LDR r1,[sp,#8]
000754 ebfffffe BL _fmul
000758 e58d000c STR r0,[sp,#0xc]
00075c ebfffffe BL _f2d
000760 e58d0010 STR r0,[sp,#0x10]
000764 e58d1014 STR r1,[sp,#0x14]
000768 e59d2018 LDR r2,[sp,#0x18]
00076c e59d301c LDR r3,[sp,#0x1c]
000770 ebfffffe BL _drdiv
000774 e58d0020 STR r0,[sp,#0x20]
000778 e58d1024 STR r1,[sp,#0x24]
00077c ebfffffe BL _dfixu
000780 e58d0028 STR r0,[sp,#0x28]
000784 ebfffffe BL _ffltu
000788 e58d002c STR r0,[sp,#0x2c]
;;;253 Uart_Printf("Now change PLL value...(%dhz)[mps=%xh(%d), %d, %d]\n", (U32)ffclk, mdiv,mdiv, pdiv, sdiv);
00078c e59d002c LDR r0,[sp,#0x2c]
000790 ebfffffe BL _ffixu
000794 e1a0a000 MOV r10,r0
000798 e1a03005 MOV r3,r5
00079c e1a02005 MOV r2,r5
0007a0 e1a01000 MOV r1,r0
0007a4 e28f0f75 ADR r0,|L1.2432|
0007a8 e88d0180 STMIA sp,{r7,r8}
0007ac ebfffffe BL Uart_Printf
;;;254
;;;255 Uart_Printf("Voltage: ");
0007b0 e28f0f7f ADR r0,|L1.2484|
0007b4 ebfffffe BL Uart_Printf
;;;256 voltage = Uart_GetIntNum();
0007b8 ebfffffe BL Uart_GetIntNum
0007bc e1a09000 MOV r9,r0
;;;257 Max1718_Set(voltage);
0007c0 e1a00009 MOV r0,r9
0007c4 ebfffffe BL Max1718_Set
;;;258 Delay(10);
0007c8 e3a0000a MOV r0,#0xa
0007cc ebfffffe BL Delay
;;;259
;;;260 ChangeClockDivider(hdiv_val, pdiv_val);
0007d0 e59d0034 LDR r0,[sp,#0x34]
0007d4 e59d1030 LDR r1,[sp,#0x30]
0007d8 ebfffffe BL ChangeClockDivider
;;;261 ChangeMPllValue(mdiv,pdiv,sdiv);
0007dc e1a02008 MOV r2,r8
0007e0 e1a01007 MOV r1,r7
0007e4 e1a00005 MOV r0,r5
0007e8 ebfffffe BL ChangeMPllValue
;;;262
;;;263 Calc_Clock(1);
0007ec e3a00001 MOV r0,#1
0007f0 ebfffffe BL Calc_Clock
;;;264 UPDATE_REFRESH(Hclk);
0007f4 e51f04b4 LDR r0,|L1.840|
0007f8 e5900000 LDR r0,[r0,#0] ; Hclk
0007fc ebfffffe BL _ffltu
000800 e1a0a000 MOV r10,r0
000804 ebfffffe BL _f2d
000808 e58d0014 STR r0,[sp,#0x14]
00080c e58d1018 STR r1,[sp,#0x18]
000810 e59f01a8 LDR r0,|L1.2496|
000814 e890000c LDMIA r0,{r2,r3}
000818 e59d0014 LDR r0,[sp,#0x14]
00081c ebfffffe BL _dmul
000820 e58d001c STR r0,[sp,#0x1c]
000824 e58d1020 STR r1,[sp,#0x20]
000828 e59f0194 LDR r0,|L1.2500|
00082c e890000c LDMIA r0,{r2,r3}
000830 e59d001c LDR r0,[sp,#0x1c]
000834 ebfffffe BL _ddiv
000838 e58d0024 STR r0,[sp,#0x24]
00083c e58d1028 STR r1,[sp,#0x28]
000840 ebfffffe BL _dfixu
000844 e2600001 RSB r0,r0,#1
000848 e2800e80 ADD r0,r0,#0x800
00084c e3a01448 MOV r1,#0x48000000
000850 e5911024 LDR r1,[r1,#0x24]
000854 e1a015a1 MOV r1,r1,LSR #11
000858 e1a01581 MOV r1,r1,LSL #11
00085c e1800001 ORR r0,r0,r1
000860 e3a01448 MOV r1,#0x48000000
000864 e5810024 STR r0,[r1,#0x24]
;;;265 Uart_Init(Pclk, 115200);
000868 e59f1158 LDR r1,|L1.2504|
00086c e59f0158 LDR r0,|L1.2508|
000870 e5900000 LDR r0,[r0,#0] ; Pclk
000874 ebfffffe BL Uart_Init
;;;266
;;;267
;;;268 #if 1
;;;269 //Uart_Getch();
;;;270 Uart_Printf("Memory test (y/n)? ");
000878 e28f0f54 ADR r0,|L1.2512|
00087c ebfffffe BL Uart_Printf
;;;271 if(Uart_Getch()=='y') {
000880 ebfffffe BL Uart_Getch
000884 e3500079 CMP r0,#0x79
000888 1a000056 BNE |L1.2536|
;;;272 while(1) {
00088c e1a00000 NOP
|L1.2192|
000890 e1a00000 NOP
;;;273 Mem_Test(1);
000894 e3a00001 MOV r0,#1
000898 ebfffffe BL Mem_Test
;;;274 if(Uart_GetKey()!=0x0) break;
00089c ebfffffe BL Uart_GetKey
0008a0 e3500000 CMP r0,#0
0008a4 0a00004e BEQ |L1.2532|
0008a8 ea00004e B |L1.2536|
|L1.2220|
0008ac 6e75525b DCB "[Run"
0008b0 676e696e DCB "ning"
0008b4 61686320 DCB " cha"
0008b8 2065676e DCB "nge "
0008bc 74736574 DCB "test"
0008c0 20666f20 DCB " of "
0008c4 2f502f4d DCB "M/P/"
0008c8 61762053 DCB "S va"
0008cc 5d65756c DCB "lue]"
|L1.2256|
0008d0 0000000a DCB "\n\0\0\0"
|L1.2260|
0008d4 49742400 DCD 0x49742400
|L1.2264|
0008d8 3a643225 DCB "%2d:"
0008dc 4c434620 DCB " FCL"
0008e0 34253d4b DCB "K=%4"
0008e4 2066312e DCB ".1f "
0008e8 6878255b DCB "[%xh"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -