📄 pwr_c.txt
字号:
00030c 2e747365 DCB "est."
000310 0000000a DCB "\n\0\0\0"
ENDP
PWR_StartTimer PROC
;;;216 void PWR_StartTimer(void)
;;;217 {
000314 e92d4008 STMFD sp!,{r3,lr}
;;;218 Uart_Printf("All 5 timers are running.\n");
000318 e28f00a0 ADR r0,|L1.960|
00031c ebfffffe BL _printf
;;;219
;;;220 rTCFG0=0x8080; //Prescaler=128;
000320 e59f00b4 LDR r0,|L1.988|
000324 e3a01444 MOV r1,#0x44000000
000328 e5810000 STR r0,[r1,#0]
;;;221 rTCFG1=0x11111; //Devider=1/4;
00032c e59f00ac LDR r0,|L1.992|
000330 e3a01444 MOV r1,#0x44000000
000334 e5810004 STR r0,[r1,#4]
;;;222 rTCNTB0=0x8000; //Count buffer=32768
000338 e3a00c80 MOV r0,#0x8000
00033c e3a01444 MOV r1,#0x44000000
000340 e581000c STR r0,[r1,#0xc]
;;;223 rTCMPB0=0x4000; //Compare buffer=16384
000344 e3a00c40 MOV r0,#0x4000
000348 e3a01444 MOV r1,#0x44000000
00034c e5810010 STR r0,[r1,#0x10]
;;;224 rTCNTB1=0x8000;
000350 e3a00c80 MOV r0,#0x8000
000354 e3a01444 MOV r1,#0x44000000
000358 e5810018 STR r0,[r1,#0x18]
;;;225 rTCMPB1=0x4000;
00035c e3a00c40 MOV r0,#0x4000
000360 e3a01444 MOV r1,#0x44000000
000364 e581001c STR r0,[r1,#0x1c]
;;;226 rTCNTB2=0x8000;
000368 e3a00c80 MOV r0,#0x8000
00036c e3a01444 MOV r1,#0x44000000
000370 e5810024 STR r0,[r1,#0x24]
;;;227 rTCMPB2=0x4000;
000374 e3a00c40 MOV r0,#0x4000
000378 e3a01444 MOV r1,#0x44000000
00037c e5810028 STR r0,[r1,#0x28]
;;;228 rTCNTB3=0x8000;
000380 e3a00c80 MOV r0,#0x8000
000384 e3a01444 MOV r1,#0x44000000
000388 e5810030 STR r0,[r1,#0x30]
;;;229 rTCMPB3=0x4000;
00038c e3a00c40 MOV r0,#0x4000
000390 e3a01444 MOV r1,#0x44000000
000394 e5810034 STR r0,[r1,#0x34]
;;;230 rTCNTB4=0x8000;
000398 e3a00c80 MOV r0,#0x8000
00039c e3a01444 MOV r1,#0x44000000
0003a0 e581003c STR r0,[r1,#0x3c]
;;;231 rTCON=0x6aaa0a; //manual update
0003a4 e59f0038 LDR r0,|L1.996|
0003a8 e3a01444 MOV r1,#0x44000000
0003ac e5810008 STR r0,[r1,#8]
;;;232 rTCON=0x599909; //run
0003b0 e59f0030 LDR r0,|L1.1000|
0003b4 e3a01444 MOV r1,#0x44000000
0003b8 e5810008 STR r0,[r1,#8]
;;;233 }
0003bc e8bd8008 LDMFD sp!,{r3,pc}
|L1.960|
0003c0 206c6c41 DCB "All "
0003c4 69742035 DCB "5 ti"
0003c8 7372656d DCB "mers"
0003cc 65726120 DCB " are"
0003d0 6e757220 DCB " run"
0003d4 676e696e DCB "ning"
0003d8 00000a2e DCB ".\n\0\0"
|L1.988|
0003dc 00008080 DCD 0x00008080
|L1.992|
0003e0 00011111 DCD 0x00011111
|L1.996|
0003e4 006aaa0a DCD 0x006aaa0a
|L1.1000|
0003e8 00599909 DCD 0x00599909
ENDP
PWR_IsrDma0 PROC
;;;238 void __irq PWR_IsrDma0(void)
;;;239 {
0003ec e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;240 rINTSUBMSK=rINTSUBMSK|(BIT_SUB_DMA0);
0003f0 e51f02f8 LDR r0,|L1.256|
0003f4 e590001c LDR r0,[r0,#0x1c]
0003f8 e3800780 ORR r0,r0,#0x2000000
0003fc e51f1304 LDR r1,|L1.256|
000400 e581001c STR r0,[r1,#0x1c]
;;;241 rINTMSK=rINTMSK|(BIT_DMA);
000404 e1a00001 MOV r0,r1
000408 e5900008 LDR r0,[r0,#8]
00040c e3800940 ORR r0,r0,#0x100000
000410 e5810008 STR r0,[r1,#8]
;;;242 ClearPending(BIT_DMA);
000414 e3a00940 MOV r0,#0x100000
000418 e1c11000 BIC r1,r1,r0
00041c e5810000 STR r0,[r1,#0]
000420 e1c10000 BIC r0,r1,r0
000424 e5900010 LDR r0,[r0,#0x10]
000428 e5810010 STR r0,[r1,#0x10]
00042c e1a00001 MOV r0,r1
000430 e5900010 LDR r0,[r0,#0x10]
;;;243 rSUBSRCPND=BIT_SUB_DMA0;
000434 e3a00780 MOV r0,#0x2000000
000438 e1c11000 BIC r1,r1,r0
00043c e5810018 STR r0,[r1,#0x18]
;;;244
;;;245 Uart_Printf("$");
000440 e28f0038 ADR r0,|L1.1152|
000444 ebfffffe BL _printf
;;;246 rDMASKTRIG0=0x3;
000448 e3a00003 MOV r0,#3
00044c e59f1030 LDR r1,|L1.1156|
000450 e5810020 STR r0,[r1,#0x20]
;;;247
;;;248 rINTMSK=rINTMSK&~(BIT_DMA);
000454 e0210a80 EOR r0,r1,r0,LSL #21
000458 e5900008 LDR r0,[r0,#8]
00045c e3c00940 BIC r0,r0,#0x100000
000460 e2411980 SUB r1,r1,#0x200000
000464 e5810008 STR r0,[r1,#8]
;;;249 rINTSUBMSK=rINTSUBMSK&~(BIT_SUB_DMA0);
000468 e1a00001 MOV r0,r1
00046c e590001c LDR r0,[r0,#0x1c]
000470 e3c00780 BIC r0,r0,#0x2000000
000474 e581001c STR r0,[r1,#0x1c]
;;;250 }
000478 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
00047c e25ef004 SUBS pc,lr,#4
|L1.1152|
000480 00000024 DCB "$$\0\0\0"
|L1.1156|
000484 40400000 DCD 0x40400000
ENDP
StartDmaMem2Mem PROC
;;;252 void StartDmaMem2Mem(void)
;;;253 {
000488 e92d4008 STMFD sp!,{r3,lr}
;;;254 Uart_Printf("seamless DMA0 SDRAM->SDRAM transfer is running.\n");
00048c e28f00a0 ADR r0,|L1.1332|
000490 ebfffffe BL _printf
;;;255
;;;256 pISR_DMA=(unsigned)PWR_IsrDma0;
000494 e59f00cc LDR r0,|L1.1384|
000498 e51f1270 LDR r1,|L1.560|
00049c e5810f70 STR r0,[r1,#0xf70]
;;;257 //Clear interrupt pending
;;;258 ClearPending(BIT_DMA);
0004a0 e3a00940 MOV r0,#0x100000
0004a4 e51f13ac LDR r1,|L1.256|
0004a8 e5810000 STR r0,[r1,#0]
0004ac e1c10000 BIC r0,r1,r0
0004b0 e5900010 LDR r0,[r0,#0x10]
0004b4 e5810010 STR r0,[r1,#0x10]
0004b8 e1a00001 MOV r0,r1
0004bc e5900010 LDR r0,[r0,#0x10]
;;;259 rSUBSRCPND=BIT_SUB_DMA0;
0004c0 e3a00780 MOV r0,#0x2000000
0004c4 e1c11000 BIC r1,r1,r0
0004c8 e5810018 STR r0,[r1,#0x18]
;;;260 //Unmask interrupt
;;;261 rINTMSK=rINTMSK&~(BIT_DMA);
0004cc e1c10000 BIC r0,r1,r0
0004d0 e5900008 LDR r0,[r0,#8]
0004d4 e3c00940 BIC r0,r0,#0x100000
0004d8 e5810008 STR r0,[r1,#8]
;;;262 rINTSUBMSK=rINTSUBMSK&~(BIT_SUB_DMA0);
0004dc e1a00001 MOV r0,r1
0004e0 e590001c LDR r0,[r0,#0x1c]
0004e4 e3c00780 BIC r0,r0,#0x2000000
0004e8 e581001c STR r0,[r1,#0x1c]
;;;263
;;;264 rDISRC0=(U32)buf1;
0004ec e59f0078 LDR r0,|L1.1388|
0004f0 e2811980 ADD r1,r1,#0x200000
0004f4 e5810000 STR r0,[r1,#0]
;;;265 rDISRCC0=(0<<1)|(0<<0); //src=AHB,increment
0004f8 e3a00000 MOV r0,#0
0004fc e1c11000 BIC r1,r1,r0
000500 e5810004 STR r0,[r1,#4]
;;;266 rDIDST0=(U32)buf2;
000504 e59f0064 LDR r0,|L1.1392|
000508 e5810008 STR r0,[r1,#8]
;;;267 rDIDSTC0=(0<<1)|(0<<0); //dst=AHB,increment
00050c e3a00000 MOV r0,#0
000510 e1c11000 BIC r1,r1,r0
000514 e581000c STR r0,[r1,#0xc]
;;;268 rDCON0=(1<<31)|(1<<30)|(1<<29)|(1<<27)|(2<<20)|(1024);
000518 e59f0054 LDR r0,|L1.1396|
00051c e00112c0 AND r1,r1,r0,ASR #5
000520 e5810010 STR r0,[r1,#0x10]
;;;269 //handshake,AHB sync,done int. enable,whole mode,DSZ=word,TC=1024
;;;270 rDMASKTRIG0=0x3;
000524 e3a00003 MOV r0,#3
000528 e1c11000 BIC r1,r1,r0
00052c e5810020 STR r0,[r1,#0x20]
;;;271 }
000530 e8bd8008 LDMFD sp!,{r3,pc}
|L1.1332|
000534 6d616573 DCB "seam"
000538 7373656c DCB "less"
00053c 414d4420 DCB " DMA"
000540 44532030 DCB "0 SD"
000544 2d4d4152 DCB "RAM-"
000548 5244533e DCB ">SDR"
00054c 74204d41 DCB "AM t"
000550 736e6172 DCB "rans"
000554 20726566 DCB "fer "
000558 72207369 DCB "is r"
00055c 696e6e75 DCB "unni"
000560 0a2e676e DCB "ng.\n"
000564 00000000 DCB "\0\0\0\0"
|L1.1384|
000568 00000000 DCD PWR_IsrDma0
|L1.1388|
00056c 00040004 DCD ||.bss$2|| + 262148
|L1.1392|
000570 00041004 DCD ||.bss$2|| + 266244
|L1.1396|
000574 e8200400 DCD 0xe8200400
ENDP
MeasurePowerConsumption PROC
;;;51 void MeasurePowerConsumption(void)
;;;52 {
000578 e92d4010 STMFD sp!,{r4,lr}
;;;53 int i;
;;;54 Uart_Printf("[Measure the power consumption of S3C24A0]\n");
00057c e28f0f42 ADR r0,|L1.1676|
000580 ebfffffe BL _printf
;;;55 Uart_Printf("FCLK is changed to %5.1lfMhz.\n",TMP_FCLK/1000000.);
000584 e28f0f4b ADR r0,|L1.1720|
000588 e8900006 LDMIA r0,{r1,r2}
00058c e28f0f4b ADR r0,|L1.1728|
000590 ebfffffe BL printf
;;;56 MMU_Init();
000594 ebfffffe BL MMU_Init
;;;57 PreChangeSdramParameter();
000598 ebfffffe BL PreChangeSdramParameter
;;;58 //port => 1:SDRAM Xp Port, 2:SDRAM Xd Port, 3: both ports
;;;59 PreChangeSromParameter(3);
00059c e3a00003 MOV r0,#3
0005a0 ebfffffe BL PreChangeSromParameter
;;;60 //bank => 0:bank0, 1:bank1, 2:bank2, 3:all banks
;;;61
;;;62 #if TMP_FCLK==237000000
;;;63 ChangeClockDivider(1,1); // 1:2:4
;;;64 ChangeMPllValue(71,2,0); // TMP_FCLK=237000000Hz
;;;65 Uart_Init(237000000/4,115200);
;;;66 ChangeSdramParameter(TMP_FCLK/2);
;;;67 ChangeSromParameter((TMP_FCLK/2), 3);
;;;68 #endif
;;;69 #if TMP_FCLK==226000000
;;;70 ChangeClockDivider(1,1); // 1:2:4
;;;71 ChangeMPllValue(105,4,0); // TMP_FCLK=226000000Hz
;;;72 Uart_Init(226000000/4,115200);
;;;73 ChangeSdramParameter(TMP_FCLK/2);
;;;74 ChangeSromParameter((TMP_FCLK/2), 3);
;;;75 #endif
;;;76 #if TMP_FCLK==214000000
;;;77 ChangeClockDivider(1,1); // 1:2:4
;;;78 ChangeMPllValue(99,4,0); // TMP_FCLK=214000000Hz
;;;79 Uart_Init(214000000/4,115200);
;;;80 ChangeSdramParameter(TMP_FCLK/2);
;;;81 ChangeSromParameter((TMP_FCLK/2), 3);
;;;82 #endif
;;;83 #if TMP_FCLK==202000000
;;;84 ChangeClockDivider(1,1); // 1:2:4
;;;85 ChangeMPllValue(93,4,0); // TMP_FCLK=202000000Hz
;;;86 Uart_Init(202000000/4,115200);
;;;87 ChangeSdramParameter(TMP_FCLK/2);
;;;88 ChangeSromParameter((TMP_FCLK/2), 3);
;;;89 #endif
;;;90 #if TMP_FCLK==180000000
;;;91 ChangeClockDivider(1,1); // 1:2:4
;;;92 ChangeMPllValue(82,4,0); // TMP_FCLK=180000000Hz
;;;93 Uart_Init(180000000/4,115200);
;;;94 ChangeSdramParameter(TMP_FCLK/2);
;;;95 ChangeSromParameter((TMP_FCLK/2), 3);
;;;96 #endif
;;;97 #if TMP_FCLK==152000000
;;;98 ChangeClockDivider(1,0); // 1:2:2
;;;99 ChangeMPllValue(68,4,0); // TMP_FCLK=152000000Hz
;;;100 Uart_Init(152000000/2,115200);
;;;101 ChangeSdramParameter(TMP_FCLK/2);
;;;102 ChangeSromParameter((TMP_FCLK/2), 3);
;;;103 #endif
;;;104 #if TMP_FCLK==135000000
;;;105 ChangeClockDivider(0,1); // 1:1:2
0005a4 e3a01001 MOV r1,#1
0005a8 e3a00000 MOV r0,#0
0005ac ebfffffe BL ChangeClockDivider
;;;106 ChangeMPllValue(82,2,1); // FCLK=135000000Hz
0005b0 e3a02001 MOV r2,#1
0005b4 e3a01002 MOV r1,#2
0005b8 e3a00052 MOV r0,#0x52
0005bc ebfffffe BL ChangeMPllValue
;;;107 Uart_Init(135000000/2,115200);
0005c0 e59f1118 LDR r1,|L1.1760|
0005c4 e59f0118 LDR r0,|L1.1764|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -