📄 user_test2.txt
字号:
0002b8 e590000c LDR r0,[r0,#0xc]
0002bc e3c00004 BIC r0,r0,#4
0002c0 e3a0144c MOV r1,#0x4c000000
0002c4 e581000c STR r0,[r1,#0xc]
;;;116 rTCON = 0;
0002c8 e3a00000 MOV r0,#0
0002cc e3a01451 MOV r1,#0x51000000
0002d0 e5810008 STR r0,[r1,#8]
;;;117
;;;118 //(1) Return Core voltage
;;;119 Max1718_Set(DVS_VOLTH);
0002d4 e3a00078 MOV r0,#0x78
0002d8 ebfffffe BL Max1718_Set
;;;120 Led_Display(0x6);
0002dc e3a00006 MOV r0,#6
0002e0 ebfffffe BL Led_Display
;;;121
;;;122 // (2) t_DVS, delay while dropping the core voltage...
;;;123 for(i=0; i<2000; i++); // SMDK2442: 28us/0.1V.
0002e4 e3a00000 MOV r0,#0
0002e8 e1a04000 MOV r4,r0
|L1.748|
0002ec e3540e7d CMP r4,#0x7d0
0002f0 aa000002 BGE |L1.768|
0002f4 e2840001 ADD r0,r4,#1
0002f8 e1a04000 MOV r4,r0
0002fc eafffffa B |L1.748|
;;;124 Led_Display(0x7);
|L1.768|
000300 e3a00007 MOV r0,#7
000304 ebfffffe BL Led_Display
;;;125
;;;126 // (3) Return Hclk
;;;127 rCLKDIVN |= (1<<0); // 1:6:6 -> 1:6:12
000308 e3a0044c MOV r0,#0x4c000000
00030c e5900014 LDR r0,[r0,#0x14]
000310 e3800001 ORR r0,r0,#1
000314 e3a0144c MOV r1,#0x4c000000
000318 e5810014 STR r0,[r1,#0x14]
;;;128 rCAMDIVN = (rCAMDIVN & ~(3<<8)); // 1:6:12 -> 1:3:6
00031c e3a0044c MOV r0,#0x4c000000
000320 e5900018 LDR r0,[r0,#0x18]
000324 e3c00fc0 BIC r0,r0,#0x300
000328 e3a0144c MOV r1,#0x4c000000
00032c e5810018 STR r0,[r1,#0x18]
;;;129
;;;130 if(!(cnt++%10)) Uart_Printf("cnt:%d.\n", cnt);
000330 e2850001 ADD r0,r5,#1
000334 e1a02005 MOV r2,r5
000338 e1a05000 MOV r5,r0
00033c e1a01002 MOV r1,r2
000340 e3a0000a MOV r0,#0xa
000344 ebfffffe BL __rt_sdiv
000348 e3510000 CMP r1,#0
00034c 1a000002 BNE |L1.860|
000350 e1a01005 MOV r1,r5
000354 e28f0090 ADR r0,|L1.1004|
000358 ebfffffe BL Uart_Printf
;;;131 //Delay(10);
;;;132 #else
;;;133 // Only for CLKDIV test.
;;;134 // * Strengthen HCLK.
;;;135 //rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8); // 1:3:6 -> 1:6:12
;;;136 //rCLKDIVN &= ~(1<<0); // 1:6:12 -> 1:6:6
;;;137 rCLKDIVN=(rCLKDIVN&~(7<<0))|(7<<0); // for bug of 2442x, 1:3:6
;;;138 rCLKDIVN=(rCLKDIVN&~(7<<0))|(5<<0); // for 2442x, 1:4:8
;;;139 //CLKDIV144();
;;;140 Led_Display(1);
;;;141 // * Drop the core voltage
;;;142 Max1718_Set(DVS_VOLTL);
;;;143 // * set Idle bit.
;;;144 rTCNTB0 = 30; // Timer setting for wake-up from idle mode.
;;;145 rTCON = 1<<3| 1<<1; // load timer.
;;;146 rTCON = 1<<3| 1<<0; // start timer.
;;;147
;;;148 rCLKCON |= 1<<2; // Enter Idle mode.
;;;149 for(i=0;i<10;i++);
;;;150
;;;151 //...
;;;152 //... in Idle mode...
;;;153 //...
;;;154
;;;155 // 2. Wake up from Idle mode...
;;;156 rCLKCON&=~(1<<2); // must clear this bit after wake-up from idle mode.
;;;157 rTCON = 0;
;;;158
;;;159
;;;160 //* Return Core voltage
;;;161 Max1718_Set(DVS_VOLTH);
;;;162 // * t_DVS, delay while dropping the core voltage...
;;;163 for(i=0; i<2000; i++); // SMDK2442: 28us/0.1V.
;;;164
;;;165 // * Return Hclk
;;;166 //rCLKDIVN |= (1<<0); // 1:6:6 -> 1:6:12
;;;167 //rCAMDIVN = (rCAMDIVN & ~(3<<8)); // 1:6:12 -> 1:3:6
;;;168 rCLKDIVN=(rCLKDIVN&~(7<<0))|(3<<0); // for 2442x, 1:2:4
;;;169 //CLKDIV124();
;;;170 Led_Display(0);
;;;171
;;;172 Delay(200);
;;;173 #endif
;;;174 if(Uart_GetKey()==ESC_KEY) break;
|L1.860|
00035c ebfffffe BL Uart_GetKey
000360 e3500071 CMP r0,#0x71
000364 1a000000 BNE |L1.876|
000368 ea000000 B |L1.880|
;;;175 }
|L1.876|
00036c eaffffa8 B |L1.532|
;;;176 }
|L1.880|
000370 e28dd018 ADD sp,sp,#0x18
000374 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.888|
000378 20535644 DCB "DVS "
00037c 74736574 DCB "test"
000380 00000a2e DCB ".\n\0\0"
|L1.900|
000384 6e616843 DCB "Chan"
000388 63206567 DCB "ge c"
00038c 2065726f DCB "ore "
000390 65657073 DCB "spee"
000394 6f742064 DCB "d to"
000398 30303420 DCB " 400"
00039c 2e7a484d DCB "MHz."
0003a0 0000000a DCB "\n\0\0\0"
|L1.932|
0003a4 00000000 DCD Hclk
|L1.936|
0003a8 33333333 DCFD 0x401f333333333333 ; 7.8
0003ac 401f3333
|L1.944|
0003b0 00000000 DCFD 0x412e848000000000 ; 1000000.0
0003b4 412e8480
|L1.952|
0003b8 0001c200 DCD 0x0001c200
|L1.956|
0003bc 00000000 DCD Pclk
|L1.960|
0003c0 63656843 DCB "Chec"
0003c4 6c43206b DCB "k Cl"
0003c8 74756f6b DCB "kout"
0003cc 43463a30 DCB "0:FC"
0003d0 202c4b4c DCB "LK, "
0003d4 6f6b6c43 DCB "Clko"
0003d8 3a317475 DCB "ut1:"
0003dc 4b4c4348 DCB "HCLK"
0003e0 00000a2e DCB ".\n\0\0"
|L1.996|
0003e4 72617473 DCB "star"
0003e8 000a2e74 DCB "t.\n\0"
|L1.1004|
0003ec 3a746e63 DCB "cnt:"
0003f0 0a2e6425 DCB "%d.\n"
0003f4 00000000 DCB "\0\0\0\0"
ENDP
DVS_Onoff_Man PROC
;;;223 void DVS_Onoff_Man(void)
;;;224 {
0003f8 e92d4070 STMFD sp!,{r4-r6,lr}
0003fc e24dd018 SUB sp,sp,#0x18
;;;225 int i=0;
000400 e3a06000 MOV r6,#0
;;;226 char c;
;;;227
;;;228
;;;229 Uart_Printf("Change core speed to 400MHz.\n");
000404 e24f0088 ADR r0,|L1.900|
000408 ebfffffe BL Uart_Printf
;;;230 #if FIN==12000000
;;;231 ChangeClockDivider(13, 12);
;;;232 #if CPU2442A==1
;;;233 ChangeMPllValue(127,2,1); // 406MHz
;;;234 #else
;;;235 ChangeMPllValue(127,2,0); // 406MHz
;;;236 #endif
;;;237 #else // 16.9344Mhz
;;;238 ChangeClockDivider(13, 12);
00040c e3a0100c MOV r1,#0xc
000410 e3a0000d MOV r0,#0xd
000414 ebfffffe BL ChangeClockDivider
;;;239 #if CPU2442A==1
;;;240 ChangeMPllValue(110,3,1); // 400MHz
000418 e3a02001 MOV r2,#1
00041c e3a01003 MOV r1,#3
000420 e3a0006e MOV r0,#0x6e
000424 ebfffffe BL ChangeMPllValue
;;;241 #else
;;;242 ChangeMPllValue(110,3,0); // 400MHz
;;;243 #endif
;;;244 #endif
;;;245
;;;246 Calc_Clock(1);
000428 e3a00001 MOV r0,#1
00042c ebfffffe BL Calc_Clock
;;;247
;;;248 UPDATE_REFRESH(Hclk);
000430 e51f0094 LDR r0,|L1.932|
000434 e5900000 LDR r0,[r0,#0] ; Hclk
000438 ebfffffe BL _ffltu
00043c e1a05000 MOV r5,r0
000440 ebfffffe BL _f2d
000444 e88d0003 STMIA sp,{r0,r1}
000448 e24f00a8 ADR r0,|L1.936|
00044c e890000c LDMIA r0,{r2,r3}
000450 e59d0000 LDR r0,[sp,#0]
000454 ebfffffe BL _dmul
000458 e58d0008 STR r0,[sp,#8]
00045c e58d100c STR r1,[sp,#0xc]
000460 e24f00b8 ADR r0,|L1.944|
000464 e890000c LDMIA r0,{r2,r3}
000468 e59d0008 LDR r0,[sp,#8]
00046c ebfffffe BL _ddiv
000470 e58d0010 STR r0,[sp,#0x10]
000474 e58d1014 STR r1,[sp,#0x14]
000478 ebfffffe BL _dfixu
00047c e2600001 RSB r0,r0,#1
000480 e2800e80 ADD r0,r0,#0x800
000484 e3a01448 MOV r1,#0x48000000
000488 e5911024 LDR r1,[r1,#0x24]
00048c e1a015a1 MOV r1,r1,LSR #11
000490 e1a01581 MOV r1,r1,LSL #11
000494 e1800001 ORR r0,r0,r1
000498 e3a01448 MOV r1,#0x48000000
00049c e5810024 STR r0,[r1,#0x24]
;;;249 Uart_Init(Pclk, 115200);
0004a0 e51f10f0 LDR r1,|L1.952|
0004a4 e51f00f0 LDR r0,|L1.956|
0004a8 e5900000 LDR r0,[r0,#0] ; Pclk
0004ac ebfffffe BL Uart_Init
;;;250
;;;251 Uart_Printf("Check Clkout0:FCLK, Clkout1:HCLK.\n");
0004b0 e24f00f8 ADR r0,|L1.960|
0004b4 ebfffffe BL Uart_Printf
;;;252 // Clkout0: FCLK.
;;;253 Clk0_Enable(2);
0004b8 e3a00002 MOV r0,#2
0004bc ebfffffe BL Clk0_Enable
;;;254 // Clkout1: HCLK.
;;;255 Clk1_Enable(3);
0004c0 e3a00003 MOV r0,#3
0004c4 ebfffffe BL Clk1_Enable
;;;256
;;;257 Uart_Printf("Press key to on/off dvs_on bit.\n");
0004c8 e28f0074 ADR r0,|L1.1348|
0004cc ebfffffe BL Uart_Printf
;;;258 do {
0004d0 e1a00000 NOP
;;;259 c=Uart_Getch();
|L1.1236|
0004d4 ebfffffe BL Uart_Getch
0004d8 e1a04000 MOV r4,r0
;;;260 rCAMDIVN |= BIT_DVS_ON;
0004dc e3a0044c MOV r0,#0x4c000000
0004e0 e5900018 LDR r0,[r0,#0x18]
0004e4 e3800d40 ORR r0,r0,#0x1000
0004e8 e3a0144c MOV r1,#0x4c000000
0004ec e5810018 STR r0,[r1,#0x18]
;;;261 Uart_Printf("DVS=ON(0x%d).\n", rCAMDIVN);
0004f0 e3a0044c MOV r0,#0x4c000000
0004f4 e5900018 LDR r0,[r0,#0x18]
0004f8 e1a01000 MOV r1,r0
0004fc e28f0064 ADR r0,|L1.1384|
000500 ebfffffe BL Uart_Printf
;;;262
;;;263 c=Uart_Getch();
000504 ebfffffe BL Uart_Getch
000508 e1a04000 MOV r4,r0
;;;264 rCAMDIVN &= ~BIT_DVS_ON;
00050c e3a0044c MOV r0,#0x4c000000
000510 e5900018 LDR r0,[r0,#0x18]
000514 e3c00d40 BIC r0,r0,#0x1000
000518 e3a0144c MOV r1,#0x4c000000
00051c e5810018 STR r0,[r1,#0x18]
;;;265 Uart_Printf("DVS=OFF(0x%d).\n", rCAMDIVN);
000520 e3a0044c MOV r0,#0x4c000000
000524 e5900018 LDR r0,[r0,#0x18]
000528 e1a01000 MOV r1,r0
00052c e28f0044 ADR r0,|L1.1400|
000530 ebfffffe BL Uart_Printf
;;;266 } while(c!='q');
000534 e3540071 CMP r4,#0x71
000538 1affffe5 BNE |L1.1236|
;;;267
;;;268 }
00053c e28dd018 ADD sp,sp,#0x18
000540 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.1348|
000544 73657250 DCB "Pres"
000548 656b2073 DCB "s ke"
00054c 6f742079 DCB "y to"
000550 2f6e6f20 DCB " on/"
000554 2066666f DCB "off "
000558 5f737664 DCB "dvs_"
00055c 62206e6f DCB "on b"
000560 0a2e7469 DCB "it.\n"
000564 00000000 DCB "\0\0\0\0"
|L1.1384|
000568 3d535644 DCB "DVS="
00056c 30284e4f DCB "ON(0"
000570 29642578 DCB "x%d)"
000574 00000a2e DCB ".\n\0\0"
|L1.1400|
000578 3d535644 DCB "DVS="
00057c 2846464f DCB "OFF("
000580 64257830 DCB "0x%d"
000584 000a2e29 DCB ").\n\0"
ENDP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -