📄 stop.txt
字号:
;;;301 #if USE_RTC_ALARM
;;;302 SetAlarmWakeUp(10);
0008e8 e3a0000a MOV r0,#0xa
0008ec ebfffffe BL SetAlarmWakeUp
;;;303 #endif
;;;304 SetTouchWakeUp();
0008f0 ebfffffe BL SetTouchWakeUp
;;;305 SetModemWakeUp();
0008f4 ebfffffe BL SetModemWakeUp
;;;306
;;;307 Uart_Printf("AC97Codec is going to LP mode, now.\n");
0008f8 e28f0f41 ADR r0,|L1.2564|
0008fc ebfffffe BL _printf
;;;308 AC97_Init();
000900 ebfffffe BL AC97_Init
;;;309 AC97_Codec_Init(22050);
000904 e59f0120 LDR r0,|L1.2604|
000908 ebfffffe BL AC97_Codec_Init
;;;310 AC97_Codec_Cmd(0, 0x26, 0x1000); // AC97CODEC is going to LP mode.
00090c e3a02d40 MOV r2,#0x1000
000910 e3a01026 MOV r1,#0x26
000914 e3a00000 MOV r0,#0
000918 ebfffffe BL AC97_Codec_Cmd
;;;311 rAC_GLBCTRL&=~(1<<2);
00091c e3a00445 MOV r0,#0x45000000
000920 e5900000 LDR r0,[r0,#0]
000924 e3c00004 BIC r0,r0,#4
000928 e3a01445 MOV r1,#0x45000000
00092c e5810000 STR r0,[r1,#0]
;;;312
;;;313 rADCCON|=(1<<2);
000930 e2810880 ADD r0,r1,#0x800000
000934 e5900000 LDR r0,[r0,#0]
000938 e3800004 ORR r0,r0,#4
00093c e2811880 ADD r1,r1,#0x800000
000940 e5810000 STR r0,[r1,#0]
;;;314 //There is no USB port control bit in S3C24A0x. Well.....
;;;315
;;;316 LcdEnvidOnOff(0); //Before entering STOP mode, LCD must be off
000944 e3a00000 MOV r0,#0
000948 ebfffffe BL LcdEnvidOnOff
;;;317 Uart_Printf("\nNow, SMDK24A0 is entering STOP mode.\n");
00094c e28f00dc ADR r0,|L1.2608|
000950 ebfffffe BL _printf
;;;318 Uart_TxEmpty(0); //Wait until UART0 Tx buffer empty.
000954 e3a00000 MOV r0,#0
000958 ebfffffe BL Uart_TxEmpty
;;;319
;;;320 MMU_DisableICache();
00095c ebfffffe BL MMU_DisableICache
;;;321 MMU_InvalidateICache();
000960 ebfffffe BL MMU_InvalidateICache
;;;322
;;;323 //***Enter STOP mode
;;;324 //rPWRMAN |= (1<<12);
;;;325 rPWRMAN = 0x0;
000964 e3a00000 MOV r0,#0
000968 e3a01440 MOV r1,#0x40000000
00096c e5810030 STR r0,[r1,#0x30]
;;;326 rCLKCON= ( rCLKCON&~(1<<0) ) | (1<<0); //Transition to STOP mode
000970 e3a00440 MOV r0,#0x40000000
000974 e5900020 LDR r0,[r0,#0x20]
000978 e3800001 ORR r0,r0,#1
00097c e3a01440 MOV r1,#0x40000000
000980 e5810020 STR r0,[r1,#0x20]
;;;327 // MMU_WaitForInterrupt();
;;;328 //EnterStopMode();
;;;329 /*
;;;330 __asm
;;;331 {
;;;332 nop
;;;333 nop
;;;334 nop
;;;335 nop
;;;336 nop
;;;337 nop
;;;338 nop
;;;339 }
;;;340 */
;;;341 //***Exit STOP mode
;;;342 for(i=0;i<100;i++);
000984 e3a04000 MOV r4,#0
|L1.2440|
000988 e3540064 CMP r4,#0x64
00098c aa000031 BGE |L1.2648|
000990 e2844001 ADD r4,r4,#1
000994 eafffffb B |L1.2440|
|L1.2456|
000998 0008000a DCD 0x0008000a
|L1.2460|
00099c 9ffc5af3 DCD 0x9ffc5af3
|L1.2464|
0009a0 00000222 DCD 0x00000222
|L1.2468|
0009a4 02222222 DCD 0x02222222
|L1.2472|
0009a8 4f54535b DCB "[STO"
0009ac 6f4d2050 DCB "P Mo"
0009b0 54206564 DCB "de T"
0009b4 5d747365 DCB "est]"
0009b8 0000000a DCB "\n\0\0\0"
|L1.2492|
0009bc 5441426e DCB "nBAT"
0009c0 4c465f54 DCB "T_FL"
0009c4 69702054 DCB "T pi"
0009c8 6873206e DCB "n sh"
0009cc 646c756f DCB "ould"
0009d0 20656220 DCB " be "
0009d4 74736574 DCB "test"
0009d8 0a2e6465 DCB "ed.\n"
0009dc 00000000 DCB "\0\0\0\0"
|L1.2528|
0009e0 00000000 DCD ||.constdata$1||
|L1.2532|
0009e4 f000f000 DCD 0xf000f000
|L1.2536|
0009e8 00000000 DCD EintInt
|L1.2540|
0009ec 13fff000 DCD 0x13fff000
|L1.2544|
0009f0 00000000 DCD Eint9Int
|L1.2548|
0009f4 00000000 DCD Eint11Int
|L1.2552|
0009f8 00000000 DCD AlarmInt
|L1.2556|
0009fc 00000000 DCD PenDownInt
|L1.2560|
000a00 00000000 DCD ModemInt
|L1.2564|
000a04 37394341 DCB "AC97"
000a08 65646f43 DCB "Code"
000a0c 73692063 DCB "c is"
000a10 696f6720 DCB " goi"
000a14 7420676e DCB "ng t"
000a18 504c206f DCB "o LP"
000a1c 646f6d20 DCB " mod"
000a20 6e202c65 DCB "e, n"
000a24 0a2e776f DCB "ow.\n"
000a28 00000000 DCB "\0\0\0\0"
|L1.2604|
000a2c 00005622 DCD 0x00005622
|L1.2608|
000a30 776f4e0a DCB "\nNow"
000a34 4d53202c DCB ", SM"
000a38 34324b44 DCB "DK24"
000a3c 69203041 DCB "A0 i"
000a40 6e652073 DCB "s en"
000a44 69726574 DCB "teri"
000a48 5320676e DCB "ng S"
000a4c 20504f54 DCB "TOP "
000a50 65646f6d DCB "mode"
000a54 00000a2e DCB ".\n\0\0"
;;;343
;;;344 rCLKCON&=~(1<<0); //Clear STOP_BIT just after exiting STOP mode.
|L1.2648|
000a58 e3a00440 MOV r0,#0x40000000
000a5c e5900020 LDR r0,[r0,#0x20]
000a60 e3c00001 BIC r0,r0,#1
000a64 e3a01440 MOV r1,#0x40000000
000a68 e5810020 STR r0,[r1,#0x20]
;;;345
;;;346 MMU_EnableICache();
000a6c ebfffffe BL MMU_EnableICache
;;;347
;;;348 Uart_Printf("AC97Codec is going to Normal mode, now.\n");
000a70 e28f0060 ADR r0,|L1.2776|
000a74 ebfffffe BL _printf
;;;349 AC97_Init();
000a78 ebfffffe BL AC97_Init
;;;350 AC97_Codec_Init(22050);
000a7c e51f0058 LDR r0,|L1.2604|
000a80 ebfffffe BL AC97_Codec_Init
;;;351
;;;352 #if GPIO_RESTORE
;;;353 //Restore the port configurations
;;;354 for(i=0;i<26;i++)
000a84 e3a04000 MOV r4,#0
|L1.2696|
000a88 e354001a CMP r4,#0x1a
000a8c aa000006 BGE |L1.2732|
000a90 ea000001 B |L1.2716|
|L1.2708|
000a94 e2844001 ADD r4,r4,#1
000a98 eafffffa B |L1.2696|
;;;355 *((U32 *)(0x44800000 +i*4))=portStatus[i];
|L1.2716|
000a9c e79d0104 LDR r0,[sp,r4,LSL #2]
000aa0 e51f19fc LDR r1,|L1.172|
000aa4 e7810104 STR r0,[r1,r4,LSL #2]
000aa8 eafffff9 B |L1.2708|
;;;356 #endif
;;;357
;;;358 Led_Display(0xa);
|L1.2732|
000aac e3a0000a MOV r0,#0xa
000ab0 ebfffffe BL Led_Display
;;;359 LcdEnvidOnOff(1);
000ab4 e3a00001 MOV r0,#1
000ab8 ebfffffe BL LcdEnvidOnOff
;;;360
;;;361 #if 0
;;;362 //Unmask interrupt
;;;363 rINTMSK=rINTMSK&~(BIT_EINT11_14);
;;;364 rINTMSK=rINTMSK&~(BIT_EINT7_10);
;;;365 rINTMSK=rINTMSK&~(BIT_EINT0_2);
;;;366 rINTMSK=rINTMSK&~(BIT_RTC);
;;;367 rINTMSK=rINTMSK&~(BIT_MODEM);
;;;368 rINTMSK=rINTMSK&~(BIT_ADC_PENUP_DOWN);
;;;369
;;;370 //Unmask sub interrupt
;;;371 //rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT0);
;;;372 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT1);
;;;373 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT10);
;;;374 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT11);
;;;375 rINTSUBMSK&=~(BIT_SUB_PENDN);
;;;376 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT0);
;;;377 for(i=0;i<100;i++);
;;;378 #endif
;;;379
;;;380 //The Wake-up source is indicated by rSRCPND.
;;;381
;;;382 Uart_Printf("Return to Normal Mode.\n");
000abc e28f0040 ADR r0,|L1.2820|
000ac0 ebfffffe BL _printf
;;;383
;;;384 #if CHECK_SDRAM_SELFREFRESH
;;;385 Test_CheckSDRAM(_NONCACHE_STARTADDRESS,0x400000);
000ac4 e3a01840 MOV r1,#0x400000
000ac8 e3a00544 MOV r0,#0x11000000
000acc ebfffffe BL Test_CheckSDRAM
;;;386 #endif
;;;387 }
000ad0 e28dd068 ADD sp,sp,#0x68
000ad4 e8bd8010 LDMFD sp!,{r4,pc}
|L1.2776|
000ad8 37394341 DCB "AC97"
000adc 65646f43 DCB "Code"
000ae0 73692063 DCB "c is"
000ae4 696f6720 DCB " goi"
000ae8 7420676e DCB "ng t"
000aec 6f4e206f DCB "o No"
000af0 6c616d72 DCB "rmal"
000af4 646f6d20 DCB " mod"
000af8 6e202c65 DCB "e, n"
000afc 0a2e776f DCB "ow.\n"
000b00 00000000 DCB "\0\0\0\0"
|L1.2820|
000b04 75746552 DCB "Retu"
000b08 74206e72 DCB "rn t"
000b0c 6f4e206f DCB "o No"
000b10 6c616d72 DCB "rmal"
000b14 646f4d20 DCB " Mod"
000b18 000a2e65 DCB "e.\n\0"
ENDP
Test_StopModeHard PROC
;;;389 void Test_StopModeHard(void)
;;;390 {
000b1c e92d4030 STMFD sp!,{r4,r5,lr}
000b20 e24dd06c SUB sp,sp,#0x6c
;;;391 int i, j;
;;;392 U32 portStatus[26];
;;;393 Uart_Printf("[STOP Mode Test]\n");
000b24 e24f0f61 ADR r0,|L1.2472|
000b28 ebfffffe BL _printf
;;;394 Uart_Printf("nBATT_FLT pin should be tested.\n");
000b2c e24f0f5e ADR r0,|L1.2492|
000b30 ebfffffe BL _printf
;;;395 Uart_Printf("S3C24A0 will wake up by EINT9 at its falling edge.\n");
000b34 e28f0f7d ADR r0,|L1.3376|
000b38 ebfffffe BL _printf
;;;396
;;;397 rLOCKTIME=(3602<<16)|(3602<<0); // 3602 is about 300us at 12Mhz
000b3c e59f0220 LDR r0,|L1.3428|
000b40 e3a01440 MOV r1,#0x40000000
000b44 e5810000 STR r0,[r1,#0]
;;;398
;;;399 // Save the port configurations
;;;400 #if GPIO_RESTORE
;;;401 for(i=0;i<26;i++)
000b48 e3a04000 MOV r4,#0
|L1.2892|
000b4c e354001a CMP r4,#0x1a
000b50 aa000007 BGE |L1.2932|
000b54 ea000001 B |L1.2912|
|L1.2904|
000b58 e2844001 ADD r4,r4,#1
000b5c eafffffa B |L1.2892|
;;;402 portStatus[i]=*( (volatile U32 *)(0x44800000 + i*4));
|L1.2912|
000b60 e51f0abc LDR r0,|L1.172|
000b64 e7900104 LDR r0,[r0,r4,LSL #2]
000b68 e28d1004 ADD r1,sp,#4
000b6c e7810104 STR r0,[r1,r4,LSL #2]
000b70 eafffff8 B |L1.2904|
;;;403 #endif
;;;404
;;;405 ConfigStopGPIO();
|L1.2932|
000b74 ebfffffe BL ConfigStopGPIO
;;;406
;;;407 #if XTAL_ENABLE_STOPMODE
;;;408 rALIVECON&=~(1<<0);
;;;409 rCLKSRC=rCLKSRC&~(1<<8)|(1<<8); //X-Tal oscillator is always enabled even S3C24A0 is in the STOP mode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -