📄 idle.txt
字号:
000614 e5900020 LDR r0,[r0,#0x20]
000618 e3c00007 BIC r0,r0,#7
00061c e3800002 ORR r0,r0,#2
000620 e5810020 STR r0,[r1,#0x20]
;;;217
;;;218 SetTouchWakeUp();
000624 ebfffffe BL SetTouchWakeUp
;;;219
;;;220 #if USE_RTC_ALARM
;;;221 SetAlarmWakeUp(10);
000628 e3a0000a MOV r0,#0xa
00062c ebfffffe BL SetAlarmWakeUp
;;;222 #endif
;;;223
;;;224 SetModemWakeUp();
000630 ebfffffe BL SetModemWakeUp
;;;225
;;;226 rINTMSK=BIT_ALLMSK;
000634 e3e00000 MVN r0,#0
000638 e51f1570 LDR r1,|L1.208|
00063c e5810008 STR r0,[r1,#8]
;;;227 rINTSUBMSK=BIT_SUB_ALLMSK;
000640 e3e004e0 MVN r0,#0xe0000000
000644 e1c11440 BIC r1,r1,r0,ASR #8
000648 e581001c STR r0,[r1,#0x1c]
;;;228 rEINTMASK=BIT_EINTPEND_ALLMSK;
00064c e1a004c0 MOV r0,r0,ASR #9
000650 e2811646 ADD r1,r1,#0x4600000
000654 e5810034 STR r0,[r1,#0x34]
;;;229
;;;230 pISR_EINT0_2=(U32)EintInt;
000658 e59f0254 LDR r0,|L1.2228|
00065c e59f1254 LDR r1,|L1.2232|
000660 e5810f20 STR r0,[r1,#0xf20]
;;;231 pISR_EINT7_10=(U32)Eint9Int;
000664 e59f0250 LDR r0,|L1.2236|
000668 e5810f28 STR r0,[r1,#0xf28]
;;;232 pISR_EINT11_14=(U32)EintInt;
00066c e59f0240 LDR r0,|L1.2228|
000670 e5810f2c STR r0,[r1,#0xf2c]
;;;233 pISR_RTC=(U32)AlarmInt;
000674 e59f0244 LDR r0,|L1.2240|
000678 e5810f98 STR r0,[r1,#0xf98]
;;;234 pISR_MODEM=(U32)ModemInt;
00067c e59f0240 LDR r0,|L1.2244|
000680 e5810f6c STR r0,[r1,#0xf6c]
;;;235 pISR_ADC_PENUP_DOWN=(U32)PenDownInt;
000684 e59f023c LDR r0,|L1.2248|
000688 e5810f9c STR r0,[r1,#0xf9c]
;;;236
;;;237 //Clear sub interrupt pending
;;;238 rEINTPEND=BIT_EINTPEND_EINT0;
00068c e3a00001 MOV r0,#1
000690 e51f1614 LDR r1,|L1.132|
000694 e5810038 STR r0,[r1,#0x38]
;;;239 rEINTPEND=BIT_EINTPEND_EINT1;
000698 e3a00002 MOV r0,#2
00069c e1c11000 BIC r1,r1,r0
0006a0 e5810038 STR r0,[r1,#0x38]
;;;240 rEINTPEND=BIT_EINTPEND_EINT9;
0006a4 e3a00f80 MOV r0,#0x200
0006a8 e1c11000 BIC r1,r1,r0
0006ac e5810038 STR r0,[r1,#0x38]
;;;241 rEINTPEND=BIT_EINTPEND_EINT11;
0006b0 e3a00e80 MOV r0,#0x800
0006b4 e1c11000 BIC r1,r1,r0
0006b8 e5810038 STR r0,[r1,#0x38]
;;;242 rSUBSRCPND=(BIT_SUB_PENDN|BIT_SUB_PENUP);
0006bc e3a00a60 MOV r0,#0x60000
0006c0 e2411646 SUB r1,r1,#0x4600000
0006c4 e5810018 STR r0,[r1,#0x18]
;;;243 //Clear interrupt pending
;;;244 ClearPending(BIT_EINT0_2);
0006c8 e3a00001 MOV r0,#1
0006cc e1c11000 BIC r1,r1,r0
0006d0 e5810000 STR r0,[r1,#0]
0006d4 e1c10000 BIC r0,r1,r0
0006d8 e5900010 LDR r0,[r0,#0x10]
0006dc e5810010 STR r0,[r1,#0x10]
0006e0 e1a00001 MOV r0,r1
0006e4 e5900010 LDR r0,[r0,#0x10]
;;;245 ClearPending(BIT_EINT7_10);
0006e8 e3a00004 MOV r0,#4
0006ec e1c11000 BIC r1,r1,r0
0006f0 e5810000 STR r0,[r1,#0]
0006f4 e1c10000 BIC r0,r1,r0
0006f8 e5900010 LDR r0,[r0,#0x10]
0006fc e5810010 STR r0,[r1,#0x10]
000700 e1a00001 MOV r0,r1
000704 e5900010 LDR r0,[r0,#0x10]
;;;246 ClearPending(BIT_EINT11_14);
000708 e3a00008 MOV r0,#8
00070c e1c11000 BIC r1,r1,r0
000710 e5810000 STR r0,[r1,#0]
000714 e1c10000 BIC r0,r1,r0
000718 e5900010 LDR r0,[r0,#0x10]
00071c e5810010 STR r0,[r1,#0x10]
000720 e1a00001 MOV r0,r1
000724 e5900010 LDR r0,[r0,#0x10]
;;;247 ClearPending(BIT_RTC);
000728 e3a00440 MOV r0,#0x40000000
00072c e18014c0 ORR r1,r0,r0,ASR #9
000730 e5810000 STR r0,[r1,#0]
000734 e18004c0 ORR r0,r0,r0,ASR #9
000738 e5900010 LDR r0,[r0,#0x10]
00073c e5810010 STR r0,[r1,#0x10]
000740 e1a00001 MOV r0,r1
000744 e5900010 LDR r0,[r0,#0x10]
;;;248 ClearPending(BIT_MODEM);
000748 e3a00a80 MOV r0,#0x80000
00074c e1c11000 BIC r1,r1,r0
000750 e5810000 STR r0,[r1,#0]
000754 e1c10000 BIC r0,r1,r0
000758 e5900010 LDR r0,[r0,#0x10]
00075c e5810010 STR r0,[r1,#0x10]
000760 e1a00001 MOV r0,r1
000764 e5900010 LDR r0,[r0,#0x10]
;;;249 ClearPending(BIT_ADC_PENUP_DOWN);
000768 e3a00480 MOV r0,#0x80000000
00076c e1c11000 BIC r1,r1,r0
000770 e5810000 STR r0,[r1,#0]
000774 e1c10000 BIC r0,r1,r0
000778 e5900010 LDR r0,[r0,#0x10]
00077c e5810010 STR r0,[r1,#0x10]
000780 e1a00001 MOV r0,r1
000784 e5900010 LDR r0,[r0,#0x10]
;;;250
;;;251 //Uart_Printf("rINTMSK=0x%x, rINTSUBMSK=0x%x, rEINTMASK=0x%x\n",rINTMSK, rINTSUBMSK, rEINTMASK);
;;;252 //rPWRMAN=rPWRMAN&~(1<<8)|(1<<8); //Mask touch screen wakeup
;;;253
;;;254 //Unmask interrupt
;;;255 rINTMSK=rINTMSK&~(BIT_EINT0_2);
000788 e1a00001 MOV r0,r1
00078c e5900008 LDR r0,[r0,#8]
000790 e3c00001 BIC r0,r0,#1
000794 e5810008 STR r0,[r1,#8]
;;;256 rINTMSK=rINTMSK&~(BIT_EINT7_10);
000798 e1a00001 MOV r0,r1
00079c e5900008 LDR r0,[r0,#8]
0007a0 e3c00004 BIC r0,r0,#4
0007a4 e5810008 STR r0,[r1,#8]
;;;257 rINTMSK=rINTMSK&~(BIT_EINT11_14);
0007a8 e1a00001 MOV r0,r1
0007ac e5900008 LDR r0,[r0,#8]
0007b0 e3c00008 BIC r0,r0,#8
0007b4 e5810008 STR r0,[r1,#8]
;;;258 rINTMSK=rINTMSK&~(BIT_RTC);
0007b8 e1a00001 MOV r0,r1
0007bc e5900008 LDR r0,[r0,#8]
0007c0 e3c00440 BIC r0,r0,#0x40000000
0007c4 e5810008 STR r0,[r1,#8]
;;;259 rINTMSK=rINTMSK&~(BIT_MODEM);
0007c8 e1a00001 MOV r0,r1
0007cc e5900008 LDR r0,[r0,#8]
0007d0 e3c00a80 BIC r0,r0,#0x80000
0007d4 e5810008 STR r0,[r1,#8]
;;;260 rINTMSK=rINTMSK&~(BIT_ADC_PENUP_DOWN);
0007d8 e1a00001 MOV r0,r1
0007dc e5900008 LDR r0,[r0,#8]
0007e0 e3c00480 BIC r0,r0,#0x80000000
0007e4 e5810008 STR r0,[r1,#8]
;;;261 //Unmask sub interrupt
;;;262 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT0);
0007e8 e2810646 ADD r0,r1,#0x4600000
0007ec e5900034 LDR r0,[r0,#0x34]
0007f0 e3c00001 BIC r0,r0,#1
0007f4 e2811646 ADD r1,r1,#0x4600000
0007f8 e5810034 STR r0,[r1,#0x34]
;;;263 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT1);
0007fc e1a00001 MOV r0,r1
000800 e5900034 LDR r0,[r0,#0x34]
000804 e3c00002 BIC r0,r0,#2
000808 e5810034 STR r0,[r1,#0x34]
;;;264 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT9);
00080c e1a00001 MOV r0,r1
000810 e5900034 LDR r0,[r0,#0x34]
000814 e3c00f80 BIC r0,r0,#0x200
000818 e5810034 STR r0,[r1,#0x34]
;;;265 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT11);
00081c e1a00001 MOV r0,r1
000820 e5900034 LDR r0,[r0,#0x34]
000824 e3c00e80 BIC r0,r0,#0x800
000828 e5810034 STR r0,[r1,#0x34]
;;;266 rINTSUBMSK=rINTSUBMSK&~(BIT_SUB_PENDN);
00082c e2410646 SUB r0,r1,#0x4600000
000830 e590001c LDR r0,[r0,#0x1c]
000834 e3c00a40 BIC r0,r0,#0x40000
000838 e2411646 SUB r1,r1,#0x4600000
00083c e581001c STR r0,[r1,#0x1c]
;;;267
;;;268 Uart_Printf("\nEntering IDLE mode......\n\n");
000840 e28f0084 ADR r0,|L1.2252|
000844 ebfffffe BL _printf
;;;269 Uart_TxEmpty(0);
000848 e3a00000 MOV r0,#0
00084c ebfffffe BL Uart_TxEmpty
;;;270
;;;271 rCLKCON=( rCLKCON & ~(1<<2) ) | (1<<2); //enter IDLE mode.
000850 e3a00440 MOV r0,#0x40000000
000854 e5900020 LDR r0,[r0,#0x20]
000858 e3800004 ORR r0,r0,#4
00085c e3a01440 MOV r1,#0x40000000
000860 e5810020 STR r0,[r1,#0x20]
;;;272 for(i=0;i<10;i++);
000864 e3a04000 MOV r4,#0
|L1.2152|
000868 e354000a CMP r4,#0xa
00086c aa00001d BGE |L1.2280|
000870 e2844001 ADD r4,r4,#1
000874 eafffffb B |L1.2152|
|L1.2168|
000878 4c44495b DCB "[IDL"
00087c 6f4d2045 DCB "E Mo"
000880 54206564 DCB "de T"
000884 5d747365 DCB "est]"
000888 0000000a DCB "\n\0\0\0"
|L1.2188|
00088c 63656843 DCB "Chec"
000890 6874206b DCB "k th"
000894 75632065 DCB "e cu"
000898 6e657272 DCB "rren"
00089c 75632074 DCB "t cu"
0008a0 6d75736e DCB "nsum"
0008a4 6f697470 DCB "ptio"
0008a8 000a2e6e DCB "n.\n\0"
|L1.2220|
0008ac 00000000 DCD ||.constdata$1||
|L1.2224|
0008b0 00000044 DCD ||.constdata$1|| + 68
|L1.2228|
0008b4 00000000 DCD EintInt
|L1.2232|
0008b8 13fff000 DCD 0x13fff000
|L1.2236|
0008bc 00000000 DCD Eint9Int
|L1.2240|
0008c0 00000000 DCD AlarmInt
|L1.2244|
0008c4 00000000 DCD ModemInt
|L1.2248|
0008c8 00000000 DCD PenDownInt
|L1.2252|
0008cc 746e450a DCB "\nEnt"
0008d0 6e697265 DCB "erin"
0008d4 44492067 DCB "g ID"
0008d8 6d20454c DCB "LE m"
0008dc 2e65646f DCB "ode."
0008e0 2e2e2e2e DCB "...."
0008e4 000a0a2e DCB ".\n\n\0"
;;;273 //wait until S3C24A0X enters IDLE mode.
;;;274 //wait EINT, RTC alarm, Touch screen pen-down or Modem interrupt
;;;275
;;;276 rCLKCON &= ~(1<<2);
|L1.2280|
0008e8 e3a00440 MOV r0,#0x40000000
0008ec e5900020 LDR r0,[r0,#0x20]
0008f0 e3c00004 BIC r0,r0,#4
0008f4 e3a01440 MOV r1,#0x40000000
0008f8 e5810020 STR r0,[r1,#0x20]
;;;277 rINTMSK=BIT_ALLMSK;
0008fc e3e00000 MVN r0,#0
000900 e0411a80 SUB r1,r1,r0,LSL #21
000904 e5810008 STR r0,[r1,#8]
;;;278 //turn-off IDLE bit. IDLE bit should be turned off after wake-up.
;;;279 Uart_Printf("Return to Normal Mode.\n");
000908 e28f0004 ADR r0,|L1.2324|
00090c ebfffffe BL _printf
;;;280 }
000910 e8bd8010 LDMFD sp!,{r4,pc}
|L1.2324|
000914 75746552 DCB "Retu"
000918 74206e72 DCB "rn t"
00091c 6f4e206f DCB "o No"
000920 6c616d72 DCB "rmal"
000924 646f4d20 DCB " Mod"
000928 000a2e65 DCB "e.\n\0"
ENDP
Test_IdleModeHard PROC
;;;283 void Test_IdleModeHard(void)
;;;284 {
00092c e92d4010 STMFD sp!,{r4,lr}
;;;285 int i;
;;;286
;;;287 Uart_Printf("[IDLE Mode Hard Test with Function Genenrator]\n");
000930 e28f0f44 ADR r0,|L1.2632|
000934 ebfffffe BL _printf
;;;288 Uart_Printf("S3C24A0X will wake up by EINT9 at its falling edge.\n");
000938 e28f0f4e ADR r0,|L1.2680|
00093c ebfffffe BL _printf
;;;289 Uart_TxEmpty(0); //Wait until UART0 Tx buffer empty.
000940 e3a00000 MOV r0,#0
000944 ebfffffe BL Uart_TxEmpty
;;;290
;;;291 m_cnt=0;
000948 e3a00000 MOV r0,#0
00094c e51f16e8 LDR r1,|L1.620|
000950 e5810000 STR r0,[r1,#0] ; m_cnt
;;;292 m_flag=1;
000954 e3a00001 MOV r0,#1
000958 e51f16ec LDR r1,|L1.628|
00095c e5810000 STR r0,[r1,#0] ; m_flag
;;;293 rGPCON_L=( rGPCON_L & ~(3<<18) ) | (2<<18); //GP9=EINT9
000960 e51f08e4 LDR r0,|L1.132|
000964 e5900008 LDR r0,[r0,#8]
000968 e3c00ac0 BIC r0,r0,#0xc0000
00096c e3800a80 ORR r0,r0,#0x80000
000970 e51f18f4 LDR r1,|L1.132|
000974 e5810008 STR r0,[r1,#8]
;;;294 rEXTINTC1=( rEXTINTC1 & ~(7<<24) ) | (2<<24); //EINT9=falling edge triggered
000978 e1a00001 MOV r0,r1
00097c e590001c LDR r0,[r0,#0x1c]
000980 e3c00670 BIC r0,r0,#0x7000000
000984 e3800780 ORR r0,r0,#0x2000000
000988 e581001c STR r0,[r1,#0x1c]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -