⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sleep.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000a50  e3a0044a          MOV      r0,#0x4a000000
000a54  e5900000          LDR      r0,[r0,#0]
000a58  e3a0144a          MOV      r1,#0x4a000000
000a5c  e5810000          STR      r0,[r1,#0]
;;;546    	rINTPND=rINTPND;
000a60  e3a0044a          MOV      r0,#0x4a000000
000a64  e5900010          LDR      r0,[r0,#0x10]
000a68  e3a0144a          MOV      r1,#0x4a000000
000a6c  e5810010          STR      r0,[r1,#0x10]
;;;547    
;;;548    	#endif	 
;;;549    
;;;550    	rEINTMASK = rEINTMASK&~(1<<11); 
000a70  e3a00456          MOV      r0,#0x56000000
000a74  e59000a4          LDR      r0,[r0,#0xa4]
000a78  e3c00e80          BIC      r0,r0,#0x800
000a7c  e3a01456          MOV      r1,#0x56000000
000a80  e58100a4          STR      r0,[r1,#0xa4]
;;;551    	//SRCPND: EINT8_23 will be set by EINT11 after wake-up.
;;;552    	rINTMSK = BIT_ALLMSK;
000a84  e3e00000          MVN      r0,#0
000a88  e3a0144a          MOV      r1,#0x4a000000
000a8c  e5810008          STR      r0,[r1,#8]
;;;553    
;;;554    	// NOTE: 
;;;555    	// Any interrupt can't be available in Sleep mode. 
;;;556    	// because SDRAM enters into self-refresh mode during Sleep mode.
;;;557    	// ISR code is on the SDRAM. 
;;;558    
;;;559    	Uart_Printf("\nAlarm Wake-Up (y/n)? ");
000a90  e28f0f4c          ADR      r0,|L1.3016|
000a94  ebfffffe          BL       Uart_Printf
;;;560    	if(Uart_Getch()=='y')
000a98  ebfffffe          BL       Uart_Getch
000a9c  e3500079          CMP      r0,#0x79
000aa0  1a000003          BNE      |L1.2740|
;;;561    	{
;;;562    		Uart_Printf("\nS3C2442 will wake up by RTC alarm(10 sec) or EINT0 .\n");
000aa4  e28f0f4d          ADR      r0,|L1.3040|
000aa8  ebfffffe          BL       Uart_Printf
;;;563    		SetAlarmWakeUp();
000aac  ebfffffe          BL       SetAlarmWakeUp
000ab0  ea000001          B        |L1.2748|
;;;564    	}
;;;565    	else
;;;566    	{
;;;567    		Uart_Printf("\nPush EINT0 button for wake-up from sleep mode.\n");
                  |L1.2740|
000ab4  e28f0f57          ADR      r0,|L1.3096|
000ab8  ebfffffe          BL       Uart_Printf
;;;568    	}
;;;569    		
;;;570    	rRTCCON=0x0;   // R/W disable, 1/32768, Normal(merge), No reset
                  |L1.2748|
000abc  e3a00000          MOV      r0,#0
000ac0  e3a01457          MOV      r1,#0x57000000
000ac4  e5c10040          STRB     r0,[r1,#0x40]
;;;571    	rADCCON|=(1<<2);
000ac8  e3a00458          MOV      r0,#0x58000000
000acc  e5900000          LDR      r0,[r0,#0]
000ad0  e3800004          ORR      r0,r0,#4
000ad4  e3a01458          MOV      r1,#0x58000000
000ad8  e5810000          STR      r0,[r1,#0]
;;;572    
;;;573    	/* Pin Configuration in Sleep Mode */
;;;574    	rMISCCR|=(1<<12); //USB port0 = suspend
000adc  e3a00456          MOV      r0,#0x56000000
000ae0  e5900080          LDR      r0,[r0,#0x80]
000ae4  e3800d40          ORR      r0,r0,#0x1000
000ae8  e3a01456          MOV      r1,#0x56000000
000aec  e5810080          STR      r0,[r1,#0x80]
;;;575    	rMISCCR|=(1<<13); //USB port1 = suspend
000af0  e3a00456          MOV      r0,#0x56000000
000af4  e5900080          LDR      r0,[r0,#0x80]
000af8  e3800d80          ORR      r0,r0,#0x2000
000afc  e3a01456          MOV      r1,#0x56000000
000b00  e5810080          STR      r0,[r1,#0x80]
;;;576    	//rMISCCR|=(1<<2); //Previous state at STOP(?) mode (???)
;;;577    	//rMISCCR &= ~(1<<2); //Previous state at STOP(?) mode (???)
;;;578    	
;;;579    	Uart_Printf("\nrMISCCR0 = %x\n", rMISCCR);
000b04  e3a00456          MOV      r0,#0x56000000
000b08  e5900080          LDR      r0,[r0,#0x80]
000b0c  e1a01000          MOV      r1,r0
000b10  e28f0f4d          ADR      r0,|L1.3148|
000b14  ebfffffe          BL       Uart_Printf
;;;580    
;;;581    	//rMISCCR |=(0x67<<3);
;;;582    	
;;;583    	//Uart_Printf("rMISCCR1 = %x\n", rMISCCR);
;;;584    
;;;585    	rGSTATUS3=(U32)StartPointAfterSleepWakeUp;	// mmory control part in startup code.
000b18  e59f013c          LDR      r0,|L1.3164|
000b1c  e3a01456          MOV      r1,#0x56000000
000b20  e58100b8          STR      r0,[r1,#0xb8]
;;;586    	Uart_Printf("\nrGSTATUS(Restart target address after wake-up):%x\n", rGSTATUS3);
000b24  e3a00456          MOV      r0,#0x56000000
000b28  e59000b8          LDR      r0,[r0,#0xb8]
000b2c  e1a01000          MOV      r1,r0
000b30  e28f0f4a          ADR      r0,|L1.3168|
000b34  ebfffffe          BL       Uart_Printf
;;;587    	rGSTATUS4=0xaaaaaaaa;
000b38  e59f0154          LDR      r0,|L1.3220|
000b3c  e3a01456          MOV      r1,#0x56000000
000b40  e58100bc          STR      r0,[r1,#0xbc]
;;;588    
;;;589    	Uart_TxEmpty(1);	//Wait until UART0 Tx buffer empty.
000b44  e3a00001          MOV      r0,#1
000b48  ebfffffe          BL       Uart_TxEmpty
;;;590    
;;;591    	ConfigSleepGPIO();
000b4c  ebfffffe          BL       ConfigSleepGPIO
;;;592    	ConfigMiscIO();
000b50  ebfffffe          BL       ConfigMiscIO
;;;593    	//Max1718_Set(110);
;;;594    
;;;595    	rMISCCR=rMISCCR|(3<<0);	//Data[31:0] Pull-Up Disable
000b54  e3a00456          MOV      r0,#0x56000000
000b58  e5900080          LDR      r0,[r0,#0x80]
000b5c  e3800003          ORR      r0,r0,#3
000b60  e3a01456          MOV      r1,#0x56000000
000b64  e5810080          STR      r0,[r1,#0x80]
;;;596    	Lcd_EnvidOnOff(0); 			//LCD must be off before entering Sleep mode.	
000b68  e3a00000          MOV      r0,#0
000b6c  ebfffffe          BL       Lcd_EnvidOnOff
;;;597    
;;;598    	//rMISCCR = (rMISCCR & ~(0x1f<<20)) | (6<<20);	// set 6.
;;;599    
;;;600    	//===================================================
;;;601    	//  VERY IMPORTANT NOTE 
;;;602    	//  To enter SLEEP/SLIDLE mode, MMU TLB-fill operation should be prohibited
;;;603    	//  because MTT table is in SDRAM and SDRAM is in the self-refresh mode.
;;;604    	//  So, we will fill TLB before entering SDRAM self-refresh 
;;;605    	//  instead of disabling MMU.
;;;606    	      rREFRESH;//To fill TLB for the special register used in EnterPWDN
000b70  e3a00448          MOV      r0,#0x48000000
000b74  e5900024          LDR      r0,[r0,#0x24]
;;;607    	      rCLKCON;
000b78  e3a0044c          MOV      r0,#0x4c000000
000b7c  e590000c          LDR      r0,[r0,#0xc]
;;;608    	//===================================================
;;;609    
;;;610    	EnterPWDN(0xffff8); //Sleep Mode
000b80  e59f0110          LDR      r0,|L1.3224|
000b84  e3a01020          MOV      r1,#0x20
000b88  e1a0e00f          MOV      lr,pc
000b8c  e1a0f001          MOV      pc,r1
;;;611    	//Never return here. 
;;;612    
;;;613    }
000b90  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.2964|
000b94  0000000c          DCD      ||.bss$2|| + 12
                  |L1.2968|
000b98  000009ff          DCD      0x000009ff
                  |L1.2972|
000b9c  00000004          DCD      ||.bss$2|| + 4
                  |L1.2976|
000ba0  00000008          DCD      ||.bss$2|| + 8
                  |L1.2980|
000ba4  656c535b          DCB      "[Sle"
000ba8  4d207065          DCB      "ep M"
000bac  2065646f          DCB      "ode "
000bb0  74736554          DCB      "Test"
000bb4  00000a5d          DCB      "]\n\0\0"
                  |L1.3000|
000bb8  00000000          DCD      Eint0Int
                  |L1.3004|
000bbc  31fff000          DCD      0x31fff000
                  |L1.3008|
000bc0  00000000          DCD      Eint8_23Int
                  |L1.3012|
000bc4  00000000          DCD      AlarmInt
                  |L1.3016|
000bc8  616c410a          DCB      "\nAla"
000bcc  57206d72          DCB      "rm W"
000bd0  2d656b61          DCB      "ake-"
000bd4  28207055          DCB      "Up ("
000bd8  296e2f79          DCB      "y/n)"
000bdc  0000203f          DCB      "? \0\0"
                  |L1.3040|
000be0  4333530a          DCB      "\nS3C"
000be4  32343432          DCB      "2442"
000be8  6c697720          DCB      " wil"
000bec  6177206c          DCB      "l wa"
000bf0  7520656b          DCB      "ke u"
000bf4  79622070          DCB      "p by"
000bf8  43545220          DCB      " RTC"
000bfc  616c6120          DCB      " ala"
000c00  31286d72          DCB      "rm(1"
000c04  65732030          DCB      "0 se"
000c08  6f202963          DCB      "c) o"
000c0c  49452072          DCB      "r EI"
000c10  2030544e          DCB      "NT0 "
000c14  00000a2e          DCB      ".\n\0\0"
                  |L1.3096|
000c18  7375500a          DCB      "\nPus"
000c1c  49452068          DCB      "h EI"
000c20  2030544e          DCB      "NT0 "
000c24  74747562          DCB      "butt"
000c28  66206e6f          DCB      "on f"
000c2c  7720726f          DCB      "or w"
000c30  2d656b61          DCB      "ake-"
000c34  66207075          DCB      "up f"
000c38  206d6f72          DCB      "rom "
000c3c  65656c73          DCB      "slee"
000c40  6f6d2070          DCB      "p mo"
000c44  0a2e6564          DCB      "de.\n"
000c48  00000000          DCB      "\0\0\0\0"
                  |L1.3148|
000c4c  494d720a          DCB      "\nrMI"
000c50  52434353          DCB      "SCCR"
000c54  203d2030          DCB      "0 = "
000c58  000a7825          DCB      "%x\n\0"
                  |L1.3164|
000c5c  00000000          DCD      StartPointAfterSleepWakeUp
                  |L1.3168|
000c60  5347720a          DCB      "\nrGS"
000c64  55544154          DCB      "TATU"
000c68  65522853          DCB      "S(Re"
000c6c  72617473          DCB      "star"
000c70  61742074          DCB      "t ta"
000c74  74656772          DCB      "rget"
000c78  64646120          DCB      " add"
000c7c  73736572          DCB      "ress"
000c80  74666120          DCB      " aft"
000c84  77207265          DCB      "er w"
000c88  2d656b61          DCB      "ake-"
000c8c  3a297075          DCB      "up):"
000c90  000a7825          DCB      "%x\n\0"
                  |L1.3220|
000c94  aaaaaaaa          DCD      0xaaaaaaaa
                  |L1.3224|
000c98  000ffff8          DCD      0x000ffff8
                          ENDP

                  Check_SleepWakeUp PROC
;;;413    void Check_SleepWakeUp(void)
;;;414    {
000c9c  e92d4008          STMFD    sp!,{r3,lr}
;;;415    	Uart_Printf("[Sleep related registers]\n");
000ca0  e28f0f58          ADR      r0,|L1.3592|
000ca4  ebfffffe          BL       Uart_Printf
;;;416    
;;;417    	Uart_Printf("GSTATUS2: PWRST=%d OFFRST=%d WDTRST=%d\n", 
000ca8  e3a00456          MOV      r0,#0x56000000
000cac  e59000b4          LDR      r0,[r0,#0xb4]
000cb0  e3a0c001          MOV      r12,#1
000cb4  e00c3120          AND      r3,r12,r0,LSR #2
000cb8  e3a00456          MOV      r0,#0x56000000
000cbc  e59000b4          LDR      r0,[r0,#0xb4]
000cc0  e3a0c001          MOV      r12,#1
000cc4  e00c20a0          AND      r2,r12,r0,LSR #1
000cc8  e3a00456          MOV      r0,#0x56000000
000ccc  e59000b4          LDR      r0,[r0,#0xb4]
000cd0  e2001001          AND      r1,r0,#1
000cd4  e28f0f52          ADR      r0,|L1.3620|
000cd8  ebfffffe          BL       Uart_Printf
;;;418    	(rGSTATUS2&(1<<0))!=0,
;;;419    	(rGSTATUS2&(1<<1))!=0,
;;;420    	(rGSTATUS2&(1<<2))!=0);
;;;421    	Uart_Printf("GSTATUS2:%x, GSTATUS2\n");
000cdc  e28f0f5a          ADR      r0,|L1.3660|
000ce0  ebfffffe          BL       Uart_Printf
;;;422    	Uart_Printf("GSTATUS3:%x(0x0,0x%x), GSTATUS4=%x(0x0,0xaaaaaaaa)\n",
000ce4  e3a00456          MOV      r0,#0x56000000
000ce8  e59000bc          LDR      r0,[r0,#0xbc]
000cec  e1a03000          MOV      r3,r0
000cf0  e3a00456          MOV      r0,#0x56000000
000cf4  e59000b8          LDR      r0,[r0,#0xb8]
000cf8  e1a01000          MOV      r1,r0
000cfc  e51f20a8          LDR      r2,|L1.3164|
000d00  e28f0f57          ADR      r0,|L1.3684|
000d04  ebfffffe          BL       Uart_Printf
;;;423    	rGSTATUS3,(U32)StartPointAfterSleepWakeUp, rGSTATUS4);
;;;424    
;;;425    	if(rGSTATUS2&(1<<0))
000d08  e3a00456          MOV      r0,#0x56000000
000d0c  e59000b4          LDR      r0,[r0,#0xb4]
000d10  e3100001          TST      r0,#1
000d14  0a000008          BEQ      |L1.3388|
;;;426    	{
;;;427    		Uart_Printf("Power On Reset\n\n");
000d18  e28f0f5e          ADR      r0,|L1.3736|
000d1c  ebfffffe          BL       Uart_Printf
;;;428    		rGSTATUS2=(1<<0);
000d20  e3a00001          MOV      r0,#1
000d24  e3a01456          MOV      r1,#0x56000000
000d28  e58100b4          STR      r0,[r1,#0x

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -