📄 pll.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\pll.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Test_PLL PROC
;;;18 void Test_PLL(void)
;;;19 {
|L1.0|
000000 e92d4ff0 STMFD sp!,{r4-r11,lr}
000004 e24ddf49 SUB sp,sp,#0x124
;;;20 int i,j,k;
;;;21 unsigned int saveCLKDIVN,saveMPLLCON;
;;;22 U32 mps[][6]={
000008 e3a02f48 MOV r2,#0x120
00000c e59f1238 LDR r1,|L1.588|
000010 e28d0004 ADD r0,sp,#4
000014 ebfffffe BL __rt_memcpy_w
;;;23 // 1:1:1
;;;24 50000000, 42,1,2,0,0, //FCLK,MDIV,PDIV,SDIV,HCLKdiv,PCLKdiv
;;;25 56000000, 48,1,2,0,0,
;;;26 67000000, 59,1,2,0,0,
;;;27 79000000, 71,4,1,0,0,
;;;28 //84000000, 76,4,1,0,0,
;;;29 //90000000, 82,4,1,0,0,
;;;30 // 1:1:2
;;;31 84000000, 76,4,1,0,1,
;;;32 90000000, 82,4,1,0,1,
;;;33 96000000, 56,2,1,0,1,
;;;34 101000000, 93,4,1,0,1,
;;;35 113000000,105,4,1,0,1,
;;;36 118000000, 51,1,1,0,1,
;;;37 124000000, 54,1,1,0,1,
;;;38 135000000, 82,2,1,0,1,
;;;39 //147000000, 41,2,0,0,1,
;;;40 //152000000, 68,4,0,0,1,
;;;41 //158000000, 71,4,0,0,1,
;;;42 // 1:2:2
;;;43 //84000000, 76,4,1,1,0,
;;;44 //90000000, 82,4,1,1,0,
;;;45 //96000000, 56,2,1,1,0,
;;;46 //101000000, 93,4,1,1,0,
;;;47 //113000000,105,4,1,1,0,
;;;48 //118000000, 51,1,1,1,0,
;;;49 //124000000, 54,1,1,1,0,
;;;50 //135000000, 82,2,1,1,0,
;;;51 //147000000, 41,2,0,1,0,
;;;52 //152000000, 68,4,0,1,0,
;;;53 //158000000, 71,4,0,1,0,
;;;54 // 1:2:4
;;;55 /*
;;;56 170000000, 77,4,0,1,1,
;;;57 180000000, 82,4,0,1,1,
;;;58 186000000, 85,4,0,1,1,
;;;59 192000000, 56,2,0,1,1,
;;;60 202000000, 93,4,0,1,1,
;;;61 214000000, 99,4,0,1,1,
;;;62 220000000, 47,1,0,1,1,
;;;63 226000000,105,4,0,1,1,
;;;64 237000000, 71,2,0,1,1,
;;;65 */
;;;66 };
;;;67
;;;68 saveCLKDIVN=rCLKDIVN;
000018 e3a00440 MOV r0,#0x40000000
00001c e5900028 LDR r0,[r0,#0x28]
000020 e1a06000 MOV r6,r0
;;;69 saveMPLLCON=rMPLLCON;
000024 e3a00440 MOV r0,#0x40000000
000028 e5900010 LDR r0,[r0,#0x10]
00002c e1a07000 MOV r7,r0
;;;70
;;;71 LcdEnvidOnOff(0);
000030 e3a00000 MOV r0,#0
000034 ebfffffe BL LcdEnvidOnOff
;;;72 Uart_Printf("[PLL frequency change test]\n");
000038 e28f0f84 ADR r0,|L1.592|
00003c ebfffffe BL _printf
;;;73 Uart_TxEmpty(0);
000040 e3a00000 MOV r0,#0
000044 ebfffffe BL Uart_TxEmpty
;;;74 rLOCKTIME=(3602<<16)|(0xfff<<0); // 3602 is about 300us at 12Mhz
000048 e59f0220 LDR r0,|L1.624|
00004c e3a01440 MOV r1,#0x40000000
000050 e5810000 STR r0,[r1,#0]
;;;75 srand(0); //Set a random starting point
000054 e3a00000 MOV r0,#0
000058 ebfffffe BL srand
;;;76
;;;77 for(j=0;j<100000;j++)
00005c e3a05000 MOV r5,#0
|L1.96|
000060 e255cb60 SUBS r12,r5,#0x18000
000064 a25cce6a SUBGES r12,r12,#0x6a0
000068 aa00006c BGE |L1.544|
00006c ea000001 B |L1.120|
|L1.112|
000070 e2855001 ADD r5,r5,#1
000074 eafffff9 B |L1.96|
;;;78 {
;;;79 i=rand()/(float)RAND_MAX*(sizeof(mps)/24);
|L1.120|
000078 ebfffffe BL rand
00007c e1a0b000 MOV r11,r0
000080 ebfffffe BL _fflt
000084 e1a0a000 MOV r10,r0
000088 e3a015c0 MOV r1,#0x30000000
00008c ebfffffe BL _fmul
000090 e1a09000 MOV r9,r0
000094 e59f11d8 LDR r1,|L1.628|
000098 ebfffffe BL _fmul
00009c e1a08000 MOV r8,r0
0000a0 ebfffffe BL _ffix
0000a4 e1a04000 MOV r4,r0
;;;80 Uart_Printf("FCLK=%d MDIV=%xh,PDIV=%xh,SDIV=%xh\n",mps[i][0],mps[i][1],mps[i][2],mps[i][3]);
0000a8 e0840084 ADD r0,r4,r4,LSL #1
0000ac e28d1004 ADD r1,sp,#4
0000b0 e0810180 ADD r0,r1,r0,LSL #3
0000b4 e590300c LDR r3,[r0,#0xc]
0000b8 e0840084 ADD r0,r4,r4,LSL #1
0000bc e58d3000 STR r3,[sp,#0]
0000c0 e28dc004 ADD r12,sp,#4
0000c4 e08c0180 ADD r0,r12,r0,LSL #3
0000c8 e5903008 LDR r3,[r0,#8]
0000cc e0840084 ADD r0,r4,r4,LSL #1
0000d0 e28dc004 ADD r12,sp,#4
0000d4 e08c0180 ADD r0,r12,r0,LSL #3
0000d8 e5902004 LDR r2,[r0,#4]
0000dc e0840084 ADD r0,r4,r4,LSL #1
0000e0 e28dc004 ADD r12,sp,#4
0000e4 e79c1180 LDR r1,[r12,r0,LSL #3]
0000e8 e28f0f62 ADR r0,|L1.632|
0000ec ebfffffe BL _printf
;;;81 Uart_TxEmpty(0);
0000f0 e3a00000 MOV r0,#0
0000f4 ebfffffe BL Uart_TxEmpty
;;;82 if((mps[i][4]==0)&&(mps[i][5]==0))
0000f8 e0840084 ADD r0,r4,r4,LSL #1
0000fc e28d1004 ADD r1,sp,#4
000100 e0810180 ADD r0,r1,r0,LSL #3
000104 e5900010 LDR r0,[r0,#0x10]
000108 e3500000 CMP r0,#0
00010c 1a000016 BNE |L1.364|
000110 e0840084 ADD r0,r4,r4,LSL #1
000114 e28d1004 ADD r1,sp,#4
000118 e0810180 ADD r0,r1,r0,LSL #3
00011c e5900014 LDR r0,[r0,#0x14]
000120 e3500000 CMP r0,#0
000124 1a000010 BNE |L1.364|
;;;83 {
;;;84 ChangeMPllValue(mps[i][1],mps[i][2],mps[i][3]); //Set MPS first
000128 e0843084 ADD r3,r4,r4,LSL #1
00012c e28dc004 ADD r12,sp,#4
000130 e08c3183 ADD r3,r12,r3,LSL #3
000134 e593200c LDR r2,[r3,#0xc]
000138 e0843084 ADD r3,r4,r4,LSL #1
00013c e28dc004 ADD r12,sp,#4
000140 e08c3183 ADD r3,r12,r3,LSL #3
000144 e5931008 LDR r1,[r3,#8]
000148 e0843084 ADD r3,r4,r4,LSL #1
00014c e28dc004 ADD r12,sp,#4
000150 e08c3183 ADD r3,r12,r3,LSL #3
000154 e5930004 LDR r0,[r3,#4]
000158 ebfffffe BL ChangeMPllValue
;;;85 ChangeClockDivider(0,0); //And then set divider
00015c e3a01000 MOV r1,#0
000160 e3a00000 MOV r0,#0
000164 ebfffffe BL ChangeClockDivider
000168 ea000015 B |L1.452|
;;;86 }
;;;87 else
;;;88 {
;;;89 ChangeClockDivider(mps[i][4],mps[i][5]);
|L1.364|
00016c e0842084 ADD r2,r4,r4,LSL #1
000170 e28d3004 ADD r3,sp,#4
000174 e0832182 ADD r2,r3,r2,LSL #3
000178 e5921014 LDR r1,[r2,#0x14]
00017c e0842084 ADD r2,r4,r4,LSL #1
000180 e28d3004 ADD r3,sp,#4
000184 e0832182 ADD r2,r3,r2,LSL #3
000188 e5920010 LDR r0,[r2,#0x10]
00018c ebfffffe BL ChangeClockDivider
;;;90 ChangeMPllValue(mps[i][1],mps[i][2],mps[i][3]);
000190 e0843084 ADD r3,r4,r4,LSL #1
000194 e28dc004 ADD r12,sp,#4
000198 e08c3183 ADD r3,r12,r3,LSL #3
00019c e593200c LDR r2,[r3,#0xc]
0001a0 e0843084 ADD r3,r4,r4,LSL #1
0001a4 e28dc004 ADD r12,sp,#4
0001a8 e08c3183 ADD r3,r12,r3,LSL #3
0001ac e5931008 LDR r1,[r3,#8]
0001b0 e0843084 ADD r3,r4,r4,LSL #1
0001b4 e28dc004 ADD r12,sp,#4
0001b8 e08c3183 ADD r3,r12,r3,LSL #3
0001bc e5930004 LDR r0,[r3,#4]
0001c0 ebfffffe BL ChangeMPllValue
;;;91 }
;;;92 Uart_Init((mps[i][0]/(mps[i][4]+1))/(mps[i][5]+1),115200); //PCLK, Baud Rate
|L1.452|
0001c4 e0842084 ADD r2,r4,r4,LSL #1
0001c8 e28d3004 ADD r3,sp,#4
0001cc e7931182 LDR r1,[r3,r2,LSL #3]
0001d0 e0842084 ADD r2,r4,r4,LSL #1
0001d4 e28d3004 ADD r3,sp,#4
0001d8 e0832182 ADD r2,r3,r2,LSL #3
0001dc e5922010 LDR r2,[r2,#0x10]
0001e0 e2820001 ADD r0,r2,#1
0001e4 ebfffffe BL __rt_udiv
0001e8 e1a09000 MOV r9,r0
0001ec e0841084 ADD r1,r4,r4,LSL #1
0001f0 e28d2004 ADD r2,sp,#4
0001f4 e0821181 ADD r1,r2,r1,LSL #3
0001f8 e5911014 LDR r1,[r1,#0x14]
0001fc e2810001 ADD r0,r1,#1
000200 e1a01009 MOV r1,r9
000204 ebfffffe BL __rt_udiv
000208 e1a08000 MOV r8,r0
00020c e59f1088 LDR r1,|L1.668|
000210 ebfffffe BL Uart_Init
;;;93 Uart_Printf("...I'm running in changed FCLK...\n");
000214 e28f0084 ADR r0,|L1.672|
000218 ebfffffe BL _printf
;;;94 }
00021c eaffff93 B |L1.112|
;;;95 rCLKDIVN=saveCLKDIVN;
|L1.544|
000220 e3a00440 MOV r0,#0x40000000
000224 e5806028 STR r6,[r0,#0x28]
;;;96 rMPLLCON=saveMPLLCON;
000228 e3a00440 MOV r0,#0x40000000
00022c e5807010 STR r7,[r0,#0x10]
;;;97 Uart_Init(PCLK,115200);
000230 e59f1064 LDR r1,|L1.668|
000234 e59f0088 LDR r0,|L1.708|
000238 ebfffffe BL Uart_Init
;;;98 LcdEnvidOnOff(1);
00023c e3a00001 MOV r0,#1
000240 ebfffffe BL LcdEnvidOnOff
;;;99 }
000244 e28ddf49 ADD sp,sp,#0x124
000248 e8bd8ff0 LDMFD sp!,{r4-r11,pc}
|L1.588|
00024c 00000000 DCD ||.constdata$1||
|L1.592|
000250 4c4c505b DCB "[PLL"
000254 65726620 DCB " fre"
000258 6e657571 DCB "quen"
00025c 63207963 DCB "cy c"
000260 676e6168 DCB "hang"
000264 65742065 DCB "e te"
000268 0a5d7473 DCB "st]\n"
00026c 00000000 DCB "\0\0\0\0"
|L1.624|
000270 0e120fff DCD 0x0e120fff
|L1.628|
000274 41400000 DCD 0x41400000
|L1.632|
000278 4b4c4346 DCB "FCLK"
00027c 2064253d DCB "=%d "
000280 5649444d DCB "MDIV"
000284 6878253d DCB "=%xh"
000288 4944502c DCB ",PDI"
00028c 78253d56 DCB "V=%x"
000290 44532c68 DCB "h,SD"
000294 253d5649 DCB "IV=%"
000298 000a6878 DCB "xh\n\0"
|L1.668|
00029c 0001c200 DCD 0x0001c200
|L1.672|
0002a0 492e2e2e DCB "...I"
0002a4 72206d27 DCB "\'m r"
0002a8 696e6e75 DCB "unni"
0002ac 6920676e DCB "ng i"
0002b0 6863206e DCB "n ch"
0002b4 65676e61 DCB "ange"
0002b8 43462064 DCB "d FC"
0002bc 2e2e4b4c DCB "LK.."
0002c0 00000a2e DCB ".\n\0\0"
|L1.708|
0002c4 030a32c0 DCD 0x030a32c0
ENDP
ChangePLL PROC
;;;102 void ChangePLL(void)
;;;103 {
0002c8 e92d4ffe STMFD sp!,{r1-r11,lr}
;;;104 int i, pdiv, mdiv, sdiv, HCLKdiv, PCLKdiv, fclk;
;;;105
;;;106 Uart_Printf("[Running change test of M/P/S value]\n");
0002cc e28f0f5c ADR r0,|L1.1092|
0002d0 ebfffffe BL _printf
;;;107
;;;108 Uart_Printf("Input FCLK vlaue\n");
0002d4 e28f0f64 ADR r0,|L1.1132|
0002d8 ebfffffe BL _printf
;;;109 fclk=Uart_GetIntNum();
0002dc ebfffffe BL Uart_GetIntNum
0002e0 e1a05000 MOV r5,r0
;;;110 Uart_Printf("Input M vlaue\n");
0002e4 e28f0f65 ADR r0,|L1.1152|
0002e8 ebfffffe BL _printf
;;;111 mdiv=Uart_GetIntNum();
0002ec ebfffffe BL Uart_GetIntNum
0002f0 e1a08000 MOV r8,r0
;;;112 Uart_Printf("Input P vlaue\n");
0002f4 e28f0f65 ADR r0,|L1.1168|
0002f8 ebfffffe BL _printf
;;;113 pdiv=Uart_GetIntNum();
0002fc ebfffffe BL Uart_GetIntNum
000300 e1a07000 MOV r7,r0
;;;114 Uart_Printf("Input S vlaue\n");
000304 e28f0f65 ADR r0,|L1.1184|
000308 ebfffffe BL _printf
;;;115 sdiv=Uart_GetIntNum();
00030c ebfffffe BL Uart_GetIntNum
000310 e1a09000 MOV r9,r0
;;;116
;;;117 Uart_Printf("Input HCLKdiv(0 or 1)\n");
000314 e28f0f65 ADR r0,|L1.1200|
000318 ebfffffe BL _printf
;;;118 HCLKdiv=Uart_GetIntNum();
00031c ebfffffe BL Uart_GetIntNum
000320 e1a04000 MOV r4,r0
;;;119 Uart_Printf("Input PCLKdiv(0 or 1)\n");
000324 e28f0f67 ADR r0,|L1.1224|
000328 ebfffffe BL _printf
;;;120 PCLKdiv=Uart_GetIntNum();
00032c ebfffffe BL Uart_GetIntNum
000330 e1a06000 MOV r6,r0
;;;121
;;;122 Uart_Printf("fclk=%d,Mdiv=%d,Pdiv=%d,Sdiv=%d,HCLKdiv=%d,PCLKdiv=%d\n",fclk*1000000,mdiv,pdiv,sdiv,HCLKdiv,PCLKdiv);
000334 e98d0050 STMIB sp,{r4,r6}
000338 e58d9000 STR r9,[sp,#0]
00033c e59f219c LDR r2,|L1.1248|
000340 e0010592 MUL r1,r2,r5
000344 e1a03007 MOV r3,r7
000348 e1a02008 MOV r2,r8
00034c e28f0f64 ADR r0,|L1.1252|
000350 ebfffffe BL _printf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -