📄 stop.txt
字号:
0005e0 e1c11000 BIC r1,r1,r0
0005e4 e5810018 STR r0,[r1,#0x18]
;;;186 rEXTINTC1 = 0x2222222; //EINT9~3
0005e8 e59f03b4 LDR r0,|L1.2468|
0005ec e1c11000 BIC r1,r1,r0
0005f0 e581001c STR r0,[r1,#0x1c]
;;;187
;;;188 //Peri. port pull-up control
;;;189 //PERIPU :PERIPU[26] PERIPU[24] PERIPU[14] PERIPU[13] PERIPU[12] PERIPU[11]
;;;190 //Signal :XmsSDIO XsdDAT[3:0] XrADR[25:18] XciCDATA[7:0] XmiADR[10:0] XmiDATA[7:0]
;;;191 //PU_OFF :off(extPU) off(extPU) on on on on
;;;192 //--------------------------------------------------------------------------------------------------
;;;193 //PERIPU :PERIPU[10] PERIPU[9] PERIPU[8] PERIPU[4] PERIPU[2]
;;;194 //Signal :XspiCLK X2sLRCK XspiMISO XrDATA[15:0] XpDATA[31:0]
;;;195 //PU_OFF :on on on on on
;;;196 //rENPU = 0x50f0200; //Xr, Xd, XpDATA pull-up on. The data bus will not be float by pull-up resister.
;;;197 rPERIPU=(1<<26)|(1<<24);
0005f4 e3a00650 MOV r0,#0x5000000
0005f8 e28015fe ADD r1,r0,#0x3f800000
0005fc e5810040 STR r0,[r1,#0x40]
;;;198 }
000600 e12fff1e BX lr
ENDP
Test_StopMode PROC
;;;210 void Test_StopMode(void)
;;;211 {
000604 e92d4010 STMFD sp!,{r4,lr}
000608 e24dd068 SUB sp,sp,#0x68
;;;212 int i, j;
;;;213 U32 portStatus[26];
;;;214 Uart_Printf("[STOP Mode Test]\n");
00060c e28f0fe5 ADR r0,|L1.2472|
000610 ebfffffe BL _printf
;;;215 Uart_Printf("nBATT_FLT pin should be tested.\n");
000614 e28f0fe8 ADR r0,|L1.2492|
000618 ebfffffe BL _printf
;;;216 Uart_Printf("S3C24A0 will wake up by EINT0/1/9, Stylus down, Modem or Alarm(10 sec).\n");
00061c e59f03bc LDR r0,|L1.2528|
000620 ebfffffe BL _printf
;;;217
;;;218 //rLOCKTIME=(0xfff<<16)|(0xfff<<0); // 3602 is about 300us at 12Mhz
;;;219
;;;220 // Save the port configurations
;;;221 #if GPIO_RESTORE
;;;222 for(i=0;i<26;i++)
000624 e3a04000 MOV r4,#0
|L1.1576|
000628 e354001a CMP r4,#0x1a
00062c aa000006 BGE |L1.1612|
000630 ea000001 B |L1.1596|
|L1.1588|
000634 e2844001 ADD r4,r4,#1
000638 eafffffa B |L1.1576|
;;;223 portStatus[i]=*( (volatile U32 *)(0x44800000 + i*4));
|L1.1596|
00063c e51f0598 LDR r0,|L1.172|
000640 e7900104 LDR r0,[r0,r4,LSL #2]
000644 e78d0104 STR r0,[sp,r4,LSL #2]
000648 eafffff9 B |L1.1588|
;;;224 #endif
;;;225
;;;226 ConfigStopGPIO();
|L1.1612|
00064c ebfffffe BL ConfigStopGPIO
;;;227
;;;228 #if XTAL_ENABLE_STOPMODE
;;;229 rALIVECON&=~(1<<0);
;;;230 rCLKSRC=rCLKSRC&~(1<<8)|(1<<8); //X-Tal oscillator is always enabled even S3C24A0 is in the STOP mode
;;;231 #else
;;;232 rALIVECON|=(1<<0);
000650 e51f05ac LDR r0,|L1.172|
000654 e5900044 LDR r0,[r0,#0x44]
000658 e3800001 ORR r0,r0,#1
00065c e51f15b8 LDR r1,|L1.172|
000660 e5810044 STR r0,[r1,#0x44]
;;;233 rXTALWSET=(XTAL_SETTLEDOWN_TIME<<16)|(XTAL_SETTLEDOWN_TIME<<0);
000664 e59f0378 LDR r0,|L1.2532|
000668 e3a01440 MOV r1,#0x40000000
00066c e5810004 STR r0,[r1,#4]
;;;234 #endif
;;;235
;;;236 //Wake-up(EINT0)
;;;237 rGPCON_L= (rGPCON_L & ~(3<<0) ) | (2<<0); //GP0=EINT0
000670 e2810648 ADD r0,r1,#0x4800000
000674 e5900008 LDR r0,[r0,#8]
000678 e3c00003 BIC r0,r0,#3
00067c e3800002 ORR r0,r0,#2
000680 e2811648 ADD r1,r1,#0x4800000
000684 e5810008 STR r0,[r1,#8]
;;;238 #if CHOOSE_EINT0_TYPE
;;;239 SelectEintType();
;;;240 #else
;;;241 rEXTINTC0=( rEXTINTC0 & ~(7<<0) ) | (2<<0); //EINT0= falling edge triggered
000688 e1a00001 MOV r0,r1
00068c e5900018 LDR r0,[r0,#0x18]
000690 e3c00007 BIC r0,r0,#7
000694 e3800002 ORR r0,r0,#2
000698 e5810018 STR r0,[r1,#0x18]
;;;242 #endif
;;;243
;;;244 //Wake-up(EINT1)
;;;245 rGPCON_L= ( rGPCON_L & ~(3<<2) ) | (2<<2); //GP1=EINT1
00069c e1a00001 MOV r0,r1
0006a0 e5900008 LDR r0,[r0,#8]
0006a4 e3c0000c BIC r0,r0,#0xc
0006a8 e3800008 ORR r0,r0,#8
0006ac e5810008 STR r0,[r1,#8]
;;;246 rEXTINTC0=( rEXTINTC0 & ~(7<<4) ) | (0<<0); //EINT0=low level triggered
0006b0 e1a00001 MOV r0,r1
0006b4 e5900018 LDR r0,[r0,#0x18]
0006b8 e3c00070 BIC r0,r0,#0x70
0006bc e5810018 STR r0,[r1,#0x18]
;;;247
;;;248 //Wake-up(EINT9)
;;;249 rGPCON_L= ( rGPCON_L&~(3<<18) ) | (2<<18); //GP9=EINT9
0006c0 e1a00001 MOV r0,r1
0006c4 e5900008 LDR r0,[r0,#8]
0006c8 e3c00ac0 BIC r0,r0,#0xc0000
0006cc e3800a80 ORR r0,r0,#0x80000
0006d0 e5810008 STR r0,[r1,#8]
;;;250 rEXTINTC1= ( rEXTINTC1 & ~(7<<24) ) | (2<<24); //EINT9=rising edge triggered
0006d4 e1a00001 MOV r0,r1
0006d8 e590001c LDR r0,[r0,#0x1c]
0006dc e3c00670 BIC r0,r0,#0x7000000
0006e0 e3800780 ORR r0,r0,#0x2000000
0006e4 e581001c STR r0,[r1,#0x1c]
;;;251
;;;252 //To test not available wake-up EINT(EINT11)
;;;253 rGPCON_M=rGPCON_M&~(3<<0)|(2<<0); //GP11=EINT11
0006e8 e1a00001 MOV r0,r1
0006ec e5900004 LDR r0,[r0,#4]
0006f0 e3c00003 BIC r0,r0,#3
0006f4 e3800002 ORR r0,r0,#2
0006f8 e5810004 STR r0,[r1,#4]
;;;254 rEXTINTC2=rEXTINTC2&~(7<<0)|(2<<0); //EINT11=falling edge triggered
0006fc e1a00001 MOV r0,r1
000700 e5900020 LDR r0,[r0,#0x20]
000704 e3c00007 BIC r0,r0,#7
000708 e3800002 ORR r0,r0,#2
00070c e5810020 STR r0,[r1,#0x20]
;;;255
;;;256 //Interrupt service routine
;;;257 pISR_EINT0_2=(U32)EintInt; //for EINT0/1
000710 e59f02d0 LDR r0,|L1.2536|
000714 e59f12d0 LDR r1,|L1.2540|
000718 e5810f20 STR r0,[r1,#0xf20]
;;;258 pISR_EINT7_10=(U32)Eint9Int; //for EINT9
00071c e59f02cc LDR r0,|L1.2544|
000720 e5810f28 STR r0,[r1,#0xf28]
;;;259 pISR_EINT11_14=(U32)Eint11Int; //for EINT11
000724 e59f02c8 LDR r0,|L1.2548|
000728 e5810f2c STR r0,[r1,#0xf2c]
;;;260 pISR_RTC=(U32)AlarmInt;
00072c e59f02c4 LDR r0,|L1.2552|
000730 e5810f98 STR r0,[r1,#0xf98]
;;;261 pISR_ADC_PENUP_DOWN=(U32)PenDownInt;
000734 e59f02c0 LDR r0,|L1.2556|
000738 e5810f9c STR r0,[r1,#0xf9c]
;;;262 pISR_MODEM=(U32)ModemInt;
00073c e59f02bc LDR r0,|L1.2560|
000740 e5810f6c STR r0,[r1,#0xf6c]
;;;263
;;;264 //Clear all sub pending
;;;265 rEINTPEND=rEINTPEND;
000744 e51f06a0 LDR r0,|L1.172|
000748 e5900038 LDR r0,[r0,#0x38]
00074c e51f16a8 LDR r1,|L1.172|
000750 e5810038 STR r0,[r1,#0x38]
;;;266 rSUBSRCPND=(BIT_SUB_PENDN|BIT_SUB_PENUP);
000754 e3a00a60 MOV r0,#0x60000
000758 e2411646 SUB r1,r1,#0x4600000
00075c e5810018 STR r0,[r1,#0x18]
;;;267
;;;268 //Clear interrupt pending
;;;269 ClearPending(BIT_EINT11_14);
000760 e3a00008 MOV r0,#8
000764 e1c11000 BIC r1,r1,r0
000768 e5810000 STR r0,[r1,#0]
00076c e1c10000 BIC r0,r1,r0
000770 e5900010 LDR r0,[r0,#0x10]
000774 e5810010 STR r0,[r1,#0x10]
000778 e1a00001 MOV r0,r1
00077c e5900010 LDR r0,[r0,#0x10]
;;;270 ClearPending(BIT_EINT7_10);
000780 e3a00004 MOV r0,#4
000784 e1c11000 BIC r1,r1,r0
000788 e5810000 STR r0,[r1,#0]
00078c e1c10000 BIC r0,r1,r0
000790 e5900010 LDR r0,[r0,#0x10]
000794 e5810010 STR r0,[r1,#0x10]
000798 e1a00001 MOV r0,r1
00079c e5900010 LDR r0,[r0,#0x10]
;;;271 ClearPending(BIT_EINT0_2);
0007a0 e3a00001 MOV r0,#1
0007a4 e1c11000 BIC r1,r1,r0
0007a8 e5810000 STR r0,[r1,#0]
0007ac e1c10000 BIC r0,r1,r0
0007b0 e5900010 LDR r0,[r0,#0x10]
0007b4 e5810010 STR r0,[r1,#0x10]
0007b8 e1a00001 MOV r0,r1
0007bc e5900010 LDR r0,[r0,#0x10]
;;;272 ClearPending(BIT_RTC);
0007c0 e3a00440 MOV r0,#0x40000000
0007c4 e18014c0 ORR r1,r0,r0,ASR #9
0007c8 e5810000 STR r0,[r1,#0]
0007cc e18004c0 ORR r0,r0,r0,ASR #9
0007d0 e5900010 LDR r0,[r0,#0x10]
0007d4 e5810010 STR r0,[r1,#0x10]
0007d8 e1a00001 MOV r0,r1
0007dc e5900010 LDR r0,[r0,#0x10]
;;;273 ClearPending(BIT_MODEM);
0007e0 e3a00a80 MOV r0,#0x80000
0007e4 e1c11000 BIC r1,r1,r0
0007e8 e5810000 STR r0,[r1,#0]
0007ec e1c10000 BIC r0,r1,r0
0007f0 e5900010 LDR r0,[r0,#0x10]
0007f4 e5810010 STR r0,[r1,#0x10]
0007f8 e1a00001 MOV r0,r1
0007fc e5900010 LDR r0,[r0,#0x10]
;;;274 ClearPending(BIT_ADC_PENUP_DOWN);
000800 e3a00480 MOV r0,#0x80000000
000804 e1c11000 BIC r1,r1,r0
000808 e5810000 STR r0,[r1,#0]
00080c e1c10000 BIC r0,r1,r0
000810 e5900010 LDR r0,[r0,#0x10]
000814 e5810010 STR r0,[r1,#0x10]
000818 e1a00001 MOV r0,r1
00081c e5900010 LDR r0,[r0,#0x10]
;;;275
;;;276 #if 1
;;;277 //Unmask interrupt
;;;278 rINTMSK=rINTMSK&~(BIT_EINT11_14);
000820 e1a00001 MOV r0,r1
000824 e5900008 LDR r0,[r0,#8]
000828 e3c00008 BIC r0,r0,#8
00082c e5810008 STR r0,[r1,#8]
;;;279 rINTMSK=rINTMSK&~(BIT_EINT7_10);
000830 e1a00001 MOV r0,r1
000834 e5900008 LDR r0,[r0,#8]
000838 e3c00004 BIC r0,r0,#4
00083c e5810008 STR r0,[r1,#8]
;;;280 rINTMSK=rINTMSK&~(BIT_EINT0_2);
000840 e1a00001 MOV r0,r1
000844 e5900008 LDR r0,[r0,#8]
000848 e3c00001 BIC r0,r0,#1
00084c e5810008 STR r0,[r1,#8]
;;;281 rINTMSK=rINTMSK&~(BIT_RTC);
000850 e1a00001 MOV r0,r1
000854 e5900008 LDR r0,[r0,#8]
000858 e3c00440 BIC r0,r0,#0x40000000
00085c e5810008 STR r0,[r1,#8]
;;;282 rINTMSK=rINTMSK&~(BIT_MODEM);
000860 e1a00001 MOV r0,r1
000864 e5900008 LDR r0,[r0,#8]
000868 e3c00a80 BIC r0,r0,#0x80000
00086c e5810008 STR r0,[r1,#8]
;;;283 rINTMSK=rINTMSK&~(BIT_ADC_PENUP_DOWN);
000870 e1a00001 MOV r0,r1
000874 e5900008 LDR r0,[r0,#8]
000878 e3c00480 BIC r0,r0,#0x80000000
00087c e5810008 STR r0,[r1,#8]
;;;284
;;;285 //Unmask sub interrupt
;;;286 //rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT0);
;;;287 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT1);
000880 e2810646 ADD r0,r1,#0x4600000
000884 e5900034 LDR r0,[r0,#0x34]
000888 e3c00002 BIC r0,r0,#2
00088c e2811646 ADD r1,r1,#0x4600000
000890 e5810034 STR r0,[r1,#0x34]
;;;288 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT9);
000894 e1a00001 MOV r0,r1
000898 e5900034 LDR r0,[r0,#0x34]
00089c e3c00f80 BIC r0,r0,#0x200
0008a0 e5810034 STR r0,[r1,#0x34]
;;;289 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT11);
0008a4 e1a00001 MOV r0,r1
0008a8 e5900034 LDR r0,[r0,#0x34]
0008ac e3c00e80 BIC r0,r0,#0x800
0008b0 e5810034 STR r0,[r1,#0x34]
;;;290 rINTSUBMSK&=~(BIT_SUB_PENDN);
0008b4 e2410646 SUB r0,r1,#0x4600000
0008b8 e590001c LDR r0,[r0,#0x1c]
0008bc e3c00a40 BIC r0,r0,#0x40000
0008c0 e2411646 SUB r1,r1,#0x4600000
0008c4 e581001c STR r0,[r1,#0x1c]
;;;291 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT0);
0008c8 e2810646 ADD r0,r1,#0x4600000
0008cc e5900034 LDR r0,[r0,#0x34]
0008d0 e3c00001 BIC r0,r0,#1
0008d4 e2811646 ADD r1,r1,#0x4600000
0008d8 e5810034 STR r0,[r1,#0x34]
;;;292 //for(i=0;i<100;i++);
;;;293 #endif
;;;294
;;;295 #if CHECK_SDRAM_SELFREFRESH
;;;296 Test_InitSDRAM(_NONCACHE_STARTADDRESS,0x400000);
0008dc e3a01840 MOV r1,#0x400000
0008e0 e3a00544 MOV r0,#0x11000000
0008e4 ebfffffe BL Test_InitSDRAM
;;;297 #endif
;;;298
;;;299 //rPWRMAN|=(1<<8);
;;;300
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -