📄 pwr_c.txt
字号:
0002b0 e3a00000 MOV r0,#0
0002b4 ebfffffe BL Lcd_PowerEnable
;;;214 Lcd_EnvidOnOff(1);
0002b8 e3a00001 MOV r0,#1
0002bc ebfffffe BL Lcd_EnvidOnOff
;;;215
;;;216 Glib_ClearScr(0, MODE_TFT_16BIT_240320);
0002c0 e59f12e4 LDR r1,|L1.1452|
0002c4 e3a00000 MOV r0,#0
0002c8 ebfffffe BL Glib_ClearScr
;;;217 Glib_FilledRectangle(0,0,119,159,0xf800); // R
0002cc e3a03cf8 MOV r3,#0xf800
0002d0 e58d3000 STR r3,[sp,#0]
0002d4 e3a0309f MOV r3,#0x9f
0002d8 e3a02077 MOV r2,#0x77
0002dc e3a01000 MOV r1,#0
0002e0 e3a00000 MOV r0,#0
0002e4 ebfffffe BL Glib_FilledRectangle
;;;218 Glib_FilledRectangle(120,0,240,159,0x07e0); // G
0002e8 e3a03e7e MOV r3,#0x7e0
0002ec e58d3000 STR r3,[sp,#0]
0002f0 e3a0309f MOV r3,#0x9f
0002f4 e3a020f0 MOV r2,#0xf0
0002f8 e3a01000 MOV r1,#0
0002fc e3a00078 MOV r0,#0x78
000300 ebfffffe BL Glib_FilledRectangle
;;;219 Glib_FilledRectangle(0,160,119,320,0x001f); // B
000304 e3a0301f MOV r3,#0x1f
000308 e58d3000 STR r3,[sp,#0]
00030c e3a03f50 MOV r3,#0x140
000310 e3a02077 MOV r2,#0x77
000314 e3a010a0 MOV r1,#0xa0
000318 e3a00000 MOV r0,#0
00031c ebfffffe BL Glib_FilledRectangle
;;;220 Glib_FilledRectangle(120,160,240,320,0xffff); // W
000320 e59f3288 LDR r3,|L1.1456|
000324 e58d3000 STR r3,[sp,#0]
000328 e3a03f50 MOV r3,#0x140
00032c e3a020f0 MOV r2,#0xf0
000330 e3a010a0 MOV r1,#0xa0
000334 e3a00078 MOV r0,#0x78
000338 ebfffffe BL Glib_FilledRectangle
;;;221
;;;222 }
00033c e8bd8008 LDMFD sp!,{r3,pc}
ENDP
PWR_StartTimer PROC
;;;224 void PWR_StartTimer(void)
;;;225 {
000340 e59f026c LDR r0,|L1.1460|
;;;226 //Uart_Printf("All 5 timers are running(130KHz).\n");
;;;227
;;;228 rTCFG0=0x8080; //Prescaler=128;
000344 e3a01451 MOV r1,#0x51000000
000348 e5810000 STR r0,[r1,#0]
;;;229 rTCFG1=0x11111; //Devider=1/4; Period: 66.7MHz/12/4 = 130KHz.
00034c e59f0264 LDR r0,|L1.1464|
000350 e3a01451 MOV r1,#0x51000000
000354 e5810004 STR r0,[r1,#4]
;;;230 rTCNTB0=0x8000;
000358 e3a00c80 MOV r0,#0x8000
00035c e3a01451 MOV r1,#0x51000000
000360 e581000c STR r0,[r1,#0xc]
;;;231 rTCMPB0=0x4000;
000364 e3a00c40 MOV r0,#0x4000
000368 e3a01451 MOV r1,#0x51000000
00036c e5810010 STR r0,[r1,#0x10]
;;;232 rTCNTB1=0x8000;
000370 e3a00c80 MOV r0,#0x8000
000374 e3a01451 MOV r1,#0x51000000
000378 e5810018 STR r0,[r1,#0x18]
;;;233 rTCMPB1=0x4000;
00037c e3a00c40 MOV r0,#0x4000
000380 e3a01451 MOV r1,#0x51000000
000384 e581001c STR r0,[r1,#0x1c]
;;;234 rTCNTB2=0x8000;
000388 e3a00c80 MOV r0,#0x8000
00038c e3a01451 MOV r1,#0x51000000
000390 e5810024 STR r0,[r1,#0x24]
;;;235 rTCMPB2=0x4000;
000394 e3a00c40 MOV r0,#0x4000
000398 e3a01451 MOV r1,#0x51000000
00039c e5810028 STR r0,[r1,#0x28]
;;;236 rTCNTB3=0x8000;
0003a0 e3a00c80 MOV r0,#0x8000
0003a4 e3a01451 MOV r1,#0x51000000
0003a8 e5810030 STR r0,[r1,#0x30]
;;;237 rTCMPB3=0x4000;
0003ac e3a00c40 MOV r0,#0x4000
0003b0 e3a01451 MOV r1,#0x51000000
0003b4 e5810034 STR r0,[r1,#0x34]
;;;238 rTCNTB4=0x8000;
0003b8 e3a00c80 MOV r0,#0x8000
0003bc e3a01451 MOV r1,#0x51000000
0003c0 e581003c STR r0,[r1,#0x3c]
;;;239 rTCON=0x6aaa0a; // Auto reload.
0003c4 e59f01f0 LDR r0,|L1.1468|
0003c8 e3a01451 MOV r1,#0x51000000
0003cc e5810008 STR r0,[r1,#8]
;;;240 rTCON=0x599909; //run
0003d0 e59f01e8 LDR r0,|L1.1472|
0003d4 e3a01451 MOV r1,#0x51000000
0003d8 e5810008 STR r0,[r1,#8]
;;;241 }
0003dc e1a0f00e MOV pc,lr
ENDP
PWR_IsrDma0 PROC
;;;247 void __irq PWR_IsrDma0(void)
;;;248 {
0003e0 e92d0003 STMFD sp!,{r0,r1}
;;;249 ClearPending(BIT_DMA0);
0003e4 e3a00b80 MOV r0,#0x20000
0003e8 e3a0144a MOV r1,#0x4a000000
0003ec e5810000 STR r0,[r1,#0]
0003f0 e3a00b80 MOV r0,#0x20000
0003f4 e3a0144a MOV r1,#0x4a000000
0003f8 e5810010 STR r0,[r1,#0x10]
0003fc e3a0044a MOV r0,#0x4a000000
000400 e5900010 LDR r0,[r0,#0x10]
;;;250 rDMASKTRIG0=0x3;
000404 e3a00003 MOV r0,#3
000408 e3a0144b MOV r1,#0x4b000000
00040c e5810020 STR r0,[r1,#0x20]
;;;251 //Uart_Printf("$");
;;;252 }
000410 e8bd0003 LDMFD sp!,{r0,r1}
000414 e25ef004 SUBS pc,lr,#4
ENDP
StartDmaMem2Mem PROC
;;;255 void StartDmaMem2Mem(void)
;;;256 {
000418 e59f01a4 LDR r0,|L1.1476|
;;;257 //Uart_Printf("seamless DMA0 SDRAM->SDRAM transfer is running.\n");
;;;258
;;;259 pISR_DMA0=(unsigned int)PWR_IsrDma0;
00041c e51f124c LDR r1,|L1.472|
000420 e5810f64 STR r0,[r1,#0xf64]
;;;260 rINTMSK=rINTMSK&~(BIT_DMA0);
000424 e3a0044a MOV r0,#0x4a000000
000428 e5900008 LDR r0,[r0,#8]
00042c e3c00b80 BIC r0,r0,#0x20000
000430 e3a0144a MOV r1,#0x4a000000
000434 e5810008 STR r0,[r1,#8]
;;;261
;;;262 rDISRC0=(U32)buf1;
000438 e59f0188 LDR r0,|L1.1480|
00043c e3a0144b MOV r1,#0x4b000000
000440 e5810000 STR r0,[r1,#0]
;;;263 rDISRCC0=(0<<1)|(0<<0); //src=AHB,increment
000444 e3a00000 MOV r0,#0
000448 e3a0144b MOV r1,#0x4b000000
00044c e5810004 STR r0,[r1,#4]
;;;264 rDIDST0=(U32)buf2;
000450 e59f0174 LDR r0,|L1.1484|
000454 e3a0144b MOV r1,#0x4b000000
000458 e5810008 STR r0,[r1,#8]
;;;265 rDIDSTC0=(0<<1)|(0<<0); //dst=AHB,increment
00045c e3a00000 MOV r0,#0
000460 e3a0144b MOV r1,#0x4b000000
000464 e581000c STR r0,[r1,#0xc]
;;;266 rDCON0=(1<<31)|(1<<29)|(1<<27)|(2<<20)|(1024);
000468 e59f0160 LDR r0,|L1.1488|
00046c e3a0144b MOV r1,#0x4b000000
000470 e5810010 STR r0,[r1,#0x10]
;;;267 //handshake,done int. enable,whole mode,DSZ=word,TC=1024
;;;268 rDMASKTRIG0=0x3;
000474 e3a00003 MOV r0,#3
000478 e3a0144b MOV r1,#0x4b000000
00047c e5810020 STR r0,[r1,#0x20]
;;;269 }
000480 e1a0f00e MOV pc,lr
ENDP
MeasurePowerConsumption PROC
;;;53 void MeasurePowerConsumption(void)
;;;54 {
000484 e92d4030 STMFD sp!,{r4,r5,lr}
000488 e24dd01c SUB sp,sp,#0x1c
;;;55 int i,j, hdiv_val, pdiv_val, select;
;;;56 volatile int a,b,c;
;;;57
;;;58 Uart_Printf("[Measure the power consumption of S3C2442]\n");
00048c e28f0f50 ADR r0,|L1.1492|
000490 ebfffffe BL Uart_Printf
;;;59
;;;60 MMU_Init();
000494 ebfffffe BL MMU_Init
;;;61
;;;62 #if 0
;;;63 Uart_Printf("(1)203MHz,(2)305MHz,(3)400MHz(1:4:8),(4)400MHz(1:3:6),(5)533MHz\n");
;;;64 Uart_Printf("Select Clock Frequency to test(0 or Enter to skip) : ");
;;;65 select = Uart_GetIntNum();
;;;66
;;;67 // Clock setting
;;;68 ChangeUPllValue(56,2,2); // 48MHz
;;;69
;;;70 switch(select) {
;;;71 case 1: // 203.2MHz
;;;72 ChangeClockDivider(12,12); // 1:2:4
;;;73 ChangeMPllValue(246,13,0);
;;;74 break;
;;;75 case 2: // 305MHz
;;;76 ChangeClockDivider(13,12); // 1:3:6
;;;77 ChangeMPllValue(119,3,0);
;;;78 break;
;;;79 case 3: // 400MHz, 1:4:8
;;;80 ChangeClockDivider(14,12);
;;;81 ChangeMPllValue(92,1,0);
;;;82 break;
;;;83 case 4: // 400MHz, 1:3:6
;;;84 ChangeClockDivider(13,12); // 1:4:8
;;;85 ChangeMPllValue(92,1,0);
;;;86 break;
;;;87 case 5: // 533MHz
;;;88 ChangeClockDivider(14,12); // 1:4:8
;;;89 ChangeMPllValue(214,3,0);
;;;90 break;
;;;91 case 0:
;;;92 default:
;;;93 break;
;;;94 }
;;;95 #endif
;;;96
;;;97 Calc_Clock(1);
000498 e3a00001 MOV r0,#1
00049c ebfffffe BL Calc_Clock
;;;98 UPDATE_REFRESH(Hclk);
0004a0 e59f0158 LDR r0,|L1.1536|
0004a4 e5900000 LDR r0,[r0,#0] ; Hclk
0004a8 ebfffffe BL _ffltu
0004ac e1a05000 MOV r5,r0
0004b0 ebfffffe BL _f2d
0004b4 e98d0003 STMIB sp,{r0,r1}
0004b8 e28f0f51 ADR r0,|L1.1540|
0004bc e890000c LDMIA r0,{r2,r3}
0004c0 e59d0004 LDR r0,[sp,#4]
0004c4 ebfffffe BL _dmul
0004c8 e58d000c STR r0,[sp,#0xc]
0004cc e58d1010 STR r1,[sp,#0x10]
0004d0 e28f0f4d ADR r0,|L1.1548|
0004d4 e890000c LDMIA r0,{r2,r3}
0004d8 e59d000c LDR r0,[sp,#0xc]
0004dc ebfffffe BL _ddiv
0004e0 e58d0014 STR r0,[sp,#0x14]
0004e4 e58d1018 STR r1,[sp,#0x18]
0004e8 ebfffffe BL _dfixu
0004ec e2600001 RSB r0,r0,#1
0004f0 e2800e80 ADD r0,r0,#0x800
0004f4 e3a01448 MOV r1,#0x48000000
0004f8 e5911024 LDR r1,[r1,#0x24]
0004fc e1a015a1 MOV r1,r1,LSR #11
000500 e1a01581 MOV r1,r1,LSL #11
000504 e1800001 ORR r0,r0,r1
000508 e3a01448 MOV r1,#0x48000000
00050c e5810024 STR r0,[r1,#0x24]
;;;99 //Uart_Init(Pclk, 115200);
;;;100
;;;101 // Clock off unused block.
;;;102 rCLKCON &= ~( (1<<19) | (1<<18) | (0<<17) | (1<<16) | \
000510 e3a0044c MOV r0,#0x4c000000
000514 e590000c LDR r0,[r0,#0xc]
000518 e3c00ad8 BIC r0,r0,#0xd8000
00051c e3c00f84 BIC r0,r0,#0x210
000520 e3a0144c MOV r1,#0x4c000000
000524 e581000c STR r0,[r1,#0xc]
;;;103 (1<<15) | (0<<14) | (0<<13) | (0<<12) | \
;;;104 (0<<11) | (0<<10) | (1<<9) | (0<<8) | \
;;;105 (0<<7) | (0<<6) | (0<<5) | (1<<4) );
;;;106
;;;107 Uart_Printf("Add Mem to Mem DMA(y/n) ? ");
000528 e28f00e4 ADR r0,|L1.1556|
00052c ebfffffe BL Uart_Printf
;;;108 if(Uart_Getch()=='y') {
000530 ebfffffe BL Uart_Getch
000534 e3500079 CMP r0,#0x79
000538 1a000002 BNE |L1.1352|
;;;109 Uart_Printf("\n- DMA Mem to Mem(1024 words).\n");
00053c e28f00ec ADR r0,|L1.1584|
000540 ebfffffe BL Uart_Printf
;;;110 StartDmaMem2Mem();
000544 ebfffffe BL StartDmaMem2Mem
;;;111 }
;;;112 Uart_Printf("\n");
|L1.1352|
000548 e28f0f40 ADR r0,|L1.1616|
00054c ebfffffe BL Uart_Printf
;;;113
;;;114 Uart_Printf("- Run 5-Timers (130KHz).\n");
000550 e28f00fc ADR r0,|L1.1620|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -