📄 idle.txt
字号:
00032c e3a01456 MOV r1,#0x56000000
000330 e5810088 STR r0,[r1,#0x88]
;;;132
;;;133 rSRCPND = BIT_EINT0;
000334 e3a00001 MOV r0,#1
000338 e3a0144a MOV r1,#0x4a000000
00033c e5810000 STR r0,[r1,#0]
;;;134 rINTPND = BIT_EINT0;
000340 e3a00001 MOV r0,#1
000344 e3a0144a MOV r1,#0x4a000000
000348 e5810010 STR r0,[r1,#0x10]
;;;135
;;;136 t0cnt=0;t1cnt=0;
00034c e3a00000 MOV r0,#0
000350 e51f111c LDR r1,|L1.572|
000354 e5810000 STR r0,[r1,#0] ; t0cnt
000358 e3a00000 MOV r0,#0
00035c e51f1124 LDR r1,|L1.576|
000360 e5810000 STR r0,[r1,#0] ; t1cnt
;;;137
;;;138 pISR_TIMER0=(U32)Timer0Int;
000364 e59f0170 LDR r0,|L1.1244|
000368 e51f10ac LDR r1,|L1.708|
00036c e5810f48 STR r0,[r1,#0xf48]
;;;139 pISR_TIMER1=(U32)Timer1Int;
000370 e59f0168 LDR r0,|L1.1248|
000374 e5810f4c STR r0,[r1,#0xf4c]
;;;140 pISR_EINT0=(U32)Eint0Int;
000378 e51f00c0 LDR r0,|L1.704|
00037c e5810f20 STR r0,[r1,#0xf20]
;;;141
;;;142 rTCFG0=0x0; //PRESC01=1,PRESC234=1
000380 e3a00000 MOV r0,#0
000384 e3a01451 MOV r1,#0x51000000
000388 e5810000 STR r0,[r1,#0]
;;;143 rTCFG1=0x0; //TIMER0,1,2,3,4,5= 1/2
00038c e3a00000 MOV r0,#0
000390 e3a01451 MOV r1,#0x51000000
000394 e5810004 STR r0,[r1,#4]
;;;144 rTCNTB0=65535;
000398 e59f0144 LDR r0,|L1.1252|
00039c e3a01451 MOV r1,#0x51000000
0003a0 e581000c STR r0,[r1,#0xc]
;;;145 rTCNTB1=2570;
0003a4 e59f013c LDR r0,|L1.1256|
0003a8 e3a01451 MOV r1,#0x51000000
0003ac e5810018 STR r0,[r1,#0x18]
;;;146 rTCON=0xa0a; //T0,T1=manualUpdate,interval mode
0003b0 e3a01451 MOV r1,#0x51000000
0003b4 e5810008 STR r0,[r1,#8]
;;;147 rTCON=0x909; //Start T0,T1.
0003b8 e59f012c LDR r0,|L1.1260|
0003bc e3a01451 MOV r1,#0x51000000
0003c0 e5810008 STR r0,[r1,#8]
;;;148 //rTCON=0x00a;
;;;149 //rTCON=0x009;
;;;150
;;;151 rINTMSK=~(BIT_EINT0|BIT_TIMER0|BIT_TIMER1);
0003c4 e59f0124 LDR r0,|L1.1264|
0003c8 e3a0144a MOV r1,#0x4a000000
0003cc e5810008 STR r0,[r1,#8]
;;;152
;;;153 for(i=0;i<10000;i++)
0003d0 e3a04000 MOV r4,#0
|L1.980|
0003d4 e254cd80 SUBS r12,r4,#0x2000
0003d8 a25cce71 SUBGES r12,r12,#0x710
0003dc aa000019 BGE |L1.1096|
0003e0 ea000001 B |L1.1004|
|L1.996|
0003e4 e2844001 ADD r4,r4,#1
0003e8 eafffff9 B |L1.980|
;;;154 {
;;;155 rCLKCON|=(1<<2); //enter IDLE mode.
|L1.1004|
0003ec e3a0044c MOV r0,#0x4c000000
0003f0 e590000c LDR r0,[r0,#0xc]
0003f4 e3800004 ORR r0,r0,#4
0003f8 e3a0144c MOV r1,#0x4c000000
0003fc e581000c STR r0,[r1,#0xc]
;;;156
;;;157 //wait until S3C2400X enters IDLE mode.
;;;158 //wait EINT0 interrupt or RTC alarm interrupt
;;;159 for(j=0;j<10;j++);
000400 e3a05000 MOV r5,#0
|L1.1028|
000404 e355000a CMP r5,#0xa
000408 aa000001 BGE |L1.1044|
00040c e2855001 ADD r5,r5,#1
000410 eafffffb B |L1.1028|
;;;160
;;;161 rCLKCON&=~(1<<2);
|L1.1044|
000414 e3a0044c MOV r0,#0x4c000000
000418 e590000c LDR r0,[r0,#0xc]
00041c e3c00004 BIC r0,r0,#4
000420 e3a0144c MOV r1,#0x4c000000
000424 e581000c STR r0,[r1,#0xc]
;;;162 //turn-off IDLE bit. IDLE bit should be turned off after wake-up.
;;;163
;;;164 if(i%100==0)Uart_Printf("#");
000428 e1a01004 MOV r1,r4
00042c e3a00064 MOV r0,#0x64
000430 ebfffffe BL __rt_sdiv
000434 e3510000 CMP r1,#0
000438 1a000001 BNE |L1.1092|
00043c e28f00b0 ADR r0,|L1.1268|
000440 ebfffffe BL Uart_Printf
;;;165 }
|L1.1092|
000444 eaffffe6 B |L1.996|
;;;166
;;;167 rTCON=0x0; //turn the timer off
|L1.1096|
000448 e3a00000 MOV r0,#0
00044c e3a01451 MOV r1,#0x51000000
000450 e5810008 STR r0,[r1,#8]
;;;168
;;;169 rINTMSK=BIT_ALLMSK;
000454 e3e00000 MVN r0,#0
000458 e3a0144a MOV r1,#0x4a000000
00045c e5810008 STR r0,[r1,#8]
;;;170
;;;171 Uart_Printf("\nt0cnt=%d,t1cnt=%d(t0cnt+t1cnt>=10000)\n",t0cnt,t1cnt);
000460 e51f0228 LDR r0,|L1.576|
000464 e5902000 LDR r2,[r0,#0] ; t1cnt
000468 e51f0234 LDR r0,|L1.572|
00046c e5901000 LDR r1,[r0,#0] ; t0cnt
000470 e28f0080 ADR r0,|L1.1272|
000474 ebfffffe BL Uart_Printf
;;;172 Uart_Printf("Return to Normal Mode.\n");
000478 e24f0f6d ADR r0,|L1.716|
00047c ebfffffe BL Uart_Printf
;;;173 }
000480 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1156|
000484 4c44495b DCB "[IDL"
000488 6f4d2045 DCB "E Mo"
00048c 48206564 DCB "de H"
000490 20647261 DCB "ard "
000494 74736554 DCB "Test"
000498 74697720 DCB " wit"
00049c 69542068 DCB "h Ti"
0004a0 3072656d DCB "mer0"
0004a4 00000a5d DCB "]\n\0\0"
|L1.1192|
0004a8 32433353 DCB "S3C2"
0004ac 20323434 DCB "442 "
0004b0 6c6c6977 DCB "will"
0004b4 736c6120 DCB " als"
0004b8 6177206f DCB "o wa"
0004bc 7520656b DCB "ke u"
0004c0 79622070 DCB "p by"
0004c4 4e494520 DCB " EIN"
0004c8 66203054 DCB "T0 f"
0004cc 696c6c61 DCB "alli"
0004d0 6520676e DCB "ng e"
0004d4 2e656764 DCB "dge."
0004d8 0000000a DCB "\n\0\0\0"
|L1.1244|
0004dc 00000000 DCD Timer0Int
|L1.1248|
0004e0 00000000 DCD Timer1Int
|L1.1252|
0004e4 0000ffff DCD 0x0000ffff
|L1.1256|
0004e8 00000a0a DCD 0x00000a0a
|L1.1260|
0004ec 00000909 DCD 0x00000909
|L1.1264|
0004f0 fffff3fe DCD 0xfffff3fe
|L1.1268|
0004f4 00000023 DCB "#\0\0\0"
|L1.1272|
0004f8 6330740a DCB "\nt0c"
0004fc 253d746e DCB "nt=%"
000500 31742c64 DCB "d,t1"
000504 3d746e63 DCB "cnt="
000508 74286425 DCB "%d(t"
00050c 746e6330 DCB "0cnt"
000510 6331742b DCB "+t1c"
000514 3d3e746e DCB "nt>="
000518 30303031 DCB "1000"
00051c 000a2930 DCB "0)\n\0"
ENDP
Test_MMUIdleMode PROC
;;;180 void Test_MMUIdleMode(void)
;;;181 {
000520 e92d4010 STMFD sp!,{r4,lr}
;;;182 int i;
;;;183 int extintMode;
;;;184
;;;185 MMU_SetAsyncBusMode(); //ARM920T should be in the async. Bus mode.
000524 ebfffffe BL MMU_SetAsyncBusMode
;;;186
;;;187 Uart_Printf("[MMU IDLE Mode Test]\n");
000528 e28f00c8 ADR r0,|L1.1528|
00052c ebfffffe BL Uart_Printf
;;;188 Uart_Printf("This routine tests MMU registser7:Wait for interrupt function.\n");
000530 e28f00d8 ADR r0,|L1.1552|
000534 ebfffffe BL Uart_Printf
;;;189 Uart_Printf("After 10 seconds, S3C2442 will wake up by RTC alarm interrupt.\n");
000538 e24f0fba ADR r0,|L1.600|
00053c ebfffffe BL Uart_Printf
;;;190 Uart_Printf("S3C2442 will also wake up by EINT0.\n");
000540 e24f0fac ADR r0,|L1.664|
000544 ebfffffe BL Uart_Printf
;;;191 Uart_TxEmpty(1); //Wait until UART0 Tx buffer empty.
000548 e3a00001 MOV r0,#1
00054c ebfffffe BL Uart_TxEmpty
;;;192
;;;193 rGPFCON=rGPFCON & ~(3<<0)|(2<<0); //PF0=EINT0
000550 e3a00456 MOV r0,#0x56000000
000554 e5900050 LDR r0,[r0,#0x50]
000558 e3c00003 BIC r0,r0,#3
00055c e3800002 ORR r0,r0,#2
000560 e3a01456 MOV r1,#0x56000000
000564 e5810050 STR r0,[r1,#0x50]
;;;194 rEXTINT0=rEXTINT0&(7<<0)|(0x2<<0); //EINT0=falling edge triggered
000568 e3a00456 MOV r0,#0x56000000
00056c e5900088 LDR r0,[r0,#0x88]
000570 e2000007 AND r0,r0,#7
000574 e3800002 ORR r0,r0,#2
000578 e3a01456 MOV r1,#0x56000000
00057c e5810088 STR r0,[r1,#0x88]
;;;195
;;;196 pISR_EINT0=(U32)Eint0Int;
000580 e51f02c8 LDR r0,|L1.704|
000584 e51f12c8 LDR r1,|L1.708|
000588 e5810f20 STR r0,[r1,#0xf20]
;;;197 pISR_RTC=(U32)AlarmInt;
00058c e51f02cc LDR r0,|L1.712|
000590 e5810f98 STR r0,[r1,#0xf98]
;;;198
;;;199 rSRCPND = BIT_EINT0|BIT_RTC; //to clear the previous pending states
000594 e3a00350 MOV r0,#0x40000001
000598 e3a0144a MOV r1,#0x4a000000
00059c e5810000 STR r0,[r1,#0]
;;;200 rINTPND = BIT_EINT0|BIT_RTC;
0005a0 e3a00350 MOV r0,#0x40000001
0005a4 e3a0144a MOV r1,#0x4a000000
0005a8 e5810010 STR r0,[r1,#0x10]
;;;201
;;;202 rINTMSK=~(BIT_EINT0|BIT_RTC);
0005ac e3e00350 MVN r0,#0x40000001
0005b0 e3a0144a MOV r1,#0x4a000000
0005b4 e5810008 STR r0,[r1,#8]
;;;203 //rINTMSK=~(BIT_RTC);
;;;204 //rINTMSK=BIT_ALLMSK;
;;;205
;;;206 SetAlarmWakeUp();
0005b8 ebfffffe BL SetAlarmWakeUp
;;;207 rRTCCON = 0x0; // R/W disable, but interrupt will be generated.
0005bc e3a00000 MOV r0,#0
0005c0 e3a01457 MOV r1,#0x57000000
0005c4 e5c10040 STRB r0,[r1,#0x40]
;;;208
;;;209 MMU_WaitForInterrupt();
0005c8 ebfffffe BL MMU_WaitForInterrupt
;;;210
;;;211 //wait until S3C2400X enters IDLE mode.
;;;212 //wait EINT0 interrupt or RTC alarm interrupt
;;;213 for(i=0;i<10;i++);
0005cc e3a04000 MOV r4,#0
|L1.1488|
0005d0 e354000a CMP r4,#0xa
0005d4 aa000001 BGE |L1.1504|
0005d8 e2844001 ADD r4,r4,#1
0005dc eafffffb B |L1.1488|
;;;214
;;;215 Uart_Printf("Return to Normal Mode.\n");
|L1.1504|
0005e0 e24f0fc7 ADR r0,|L1.716|
0005e4 ebfffffe BL Uart_Printf
;;;216
;;;217 rINTMSK=BIT_ALLMSK;
0005e8 e3e00000 MVN r0,#0
0005ec e3a0144a MOV r1,#0x4a000000
0005f0 e5810008 STR r0,[r1,#8]
;;;218 }
0005f4 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1528|
0005f8 554d4d5b DCB "[MMU"
0005fc 4c444920 DCB " IDL"
000600 6f4d2045 DCB "E Mo"
000604 54206564 DCB "de T"
000608 5d747365 DCB "est]"
00060c 0000000a DCB "\n\0\0\0"
|L1.1552|
000610 73696854 DCB "This"
000614 756f7220 DCB " rou"
000618 656e6974 DCB "tine"
00061c 73657420 DCB " tes"
000620 4d207374 DCB "ts M"
000624 7220554d DCB "MU r"
000628 73696765 DCB "egis"
00062c 72657374 DCB "tser"
000630 61573a37 DCB "7:Wa"
000634 66207469 DCB "it f"
000638 6920726f DCB "or i"
00063c 7265746e DCB "nter"
000640 74707572 DCB "rupt"
000644 6e756620 DCB " fun"
000648 6f697463 DCB "ctio"
00064c 000a2e6e DCB "n.\n\0"
ENDP
AREA ||.bss||, NOINIT, ALIGN=2
t0cnt
||.bss$2||
% 4
t1cnt
% 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -