📄 stop.txt
字号:
;;;410 #else
;;;411 rALIVECON|=(1<<0);
000b78 e51f0ad4 LDR r0,|L1.172|
000b7c e5900044 LDR r0,[r0,#0x44]
000b80 e3800001 ORR r0,r0,#1
000b84 e51f1ae0 LDR r1,|L1.172|
000b88 e5810044 STR r0,[r1,#0x44]
;;;412 rXTALWSET=(XTAL_SETTLEDOWN_TIME<<16)|(XTAL_SETTLEDOWN_TIME<<0);
000b8c e51f01b0 LDR r0,|L1.2532|
000b90 e3a01440 MOV r1,#0x40000000
000b94 e5810004 STR r0,[r1,#4]
;;;413 #endif
;;;414
;;;415
;;;416 #if CHECK_SDRAM_SELFREFRESH
;;;417 Test_InitSDRAM(_NONCACHE_STARTADDRESS,0x400000);
000b98 e3a01840 MOV r1,#0x400000
000b9c e3a00544 MOV r0,#0x11000000
000ba0 ebfffffe BL Test_InitSDRAM
;;;418 #endif
;;;419
;;;420 //Wake-up(EINT9)
;;;421 rGPCON_L= ( rGPCON_L&~(3<<18) ) | (2<<18); //GP9=EINT9
000ba4 e51f0b00 LDR r0,|L1.172|
000ba8 e5900008 LDR r0,[r0,#8]
000bac e3c00ac0 BIC r0,r0,#0xc0000
000bb0 e3800a80 ORR r0,r0,#0x80000
000bb4 e51f1b10 LDR r1,|L1.172|
000bb8 e5810008 STR r0,[r1,#8]
;;;422 rEXTINTC1= ( rEXTINTC1 & ~(7<<24) ) | (2<<24); //EINT9=falling edge
000bbc e1a00001 MOV r0,r1
000bc0 e590001c LDR r0,[r0,#0x1c]
000bc4 e3c00670 BIC r0,r0,#0x7000000
000bc8 e3800780 ORR r0,r0,#0x2000000
000bcc e581001c STR r0,[r1,#0x1c]
;;;423
;;;424 //Interrupt service routine
;;;425 pISR_EINT7_10=(U32)EintInt_Hard;
000bd0 e59f0190 LDR r0,|L1.3432|
000bd4 e51f11f0 LDR r1,|L1.2540|
000bd8 e5810f28 STR r0,[r1,#0xf28]
;;;426
;;;427 //Clear sub interrupt pending
;;;428 rEINTPEND=BIT_EINTPEND_EINT9;
000bdc e3a00f80 MOV r0,#0x200
000be0 e51f1b3c LDR r1,|L1.172|
000be4 e5810038 STR r0,[r1,#0x38]
;;;429 //Clear interrupt pending
;;;430 ClearPending(BIT_EINT7_10);
000be8 e3a00004 MOV r0,#4
000bec e2411646 SUB r1,r1,#0x4600000
000bf0 e5810000 STR r0,[r1,#0]
000bf4 e1c10000 BIC r0,r1,r0
000bf8 e5900010 LDR r0,[r0,#0x10]
000bfc e5810010 STR r0,[r1,#0x10]
000c00 e1a00001 MOV r0,r1
000c04 e5900010 LDR r0,[r0,#0x10]
;;;431
;;;432 rADCCON|=(1<<2);
000c08 e2810656 ADD r0,r1,#0x5600000
000c0c e5900000 LDR r0,[r0,#0]
000c10 e3800004 ORR r0,r0,#4
000c14 e2811656 ADD r1,r1,#0x5600000
000c18 e5810000 STR r0,[r1,#0]
;;;433 LcdEnvidOnOff(0); //Before entering STOP mode, LCD must be off
000c1c e3a00000 MOV r0,#0
000c20 ebfffffe BL LcdEnvidOnOff
;;;434 Uart_Printf("\nNow, SMDK24A0 is entering STOP mode.\n");
000c24 e24f0f7f ADR r0,|L1.2608|
000c28 ebfffffe BL _printf
;;;435 Uart_TxEmpty(0); //Wait until UART0 Tx buffer empty.
000c2c e3a00000 MOV r0,#0
000c30 ebfffffe BL Uart_TxEmpty
;;;436
;;;437 //Unmask interrupt
;;;438 rINTMSK=rINTMSK&~(BIT_EINT7_10);
000c34 e51f0b44 LDR r0,|L1.248|
000c38 e5900008 LDR r0,[r0,#8]
000c3c e3c00004 BIC r0,r0,#4
000c40 e51f1b50 LDR r1,|L1.248|
000c44 e5810008 STR r0,[r1,#8]
;;;439 //Unmask sub interrupt
;;;440 rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT9);
000c48 e2810646 ADD r0,r1,#0x4600000
000c4c e5900034 LDR r0,[r0,#0x34]
000c50 e3c00f80 BIC r0,r0,#0x200
000c54 e2811646 ADD r1,r1,#0x4600000
000c58 e5810034 STR r0,[r1,#0x34]
;;;441
;;;442 /*
;;;443 __asm
;;;444 {
;;;445 nop
;;;446 nop
;;;447 nop
;;;448 nop
;;;449 nop
;;;450 nop
;;;451 nop
;;;452 nop// 0x10005d70
;;;453 }
;;;454 */
;;;455
;;;456 for(i=0;i<10;i++)
000c5c e3a04000 MOV r4,#0
|L1.3168|
000c60 e354000a CMP r4,#0xa
000c64 aa00001a BGE |L1.3284|
000c68 ea000001 B |L1.3188|
|L1.3180|
000c6c e2844001 ADD r4,r4,#1
000c70 eafffffa B |L1.3168|
;;;457 {
;;;458 MMU_DisableICache();
|L1.3188|
000c74 ebfffffe BL MMU_DisableICache
;;;459 MMU_InvalidateICache();
000c78 ebfffffe BL MMU_InvalidateICache
;;;460
;;;461 //***Enter STOP mode
;;;462 Uart_Printf("%d\n",i);
000c7c e1a01004 MOV r1,r4
000c80 e28f00e4 ADR r0,|L1.3436|
000c84 ebfffffe BL _printf
;;;463 Uart_TxEmpty(0);
000c88 e3a00000 MOV r0,#0
000c8c ebfffffe BL Uart_TxEmpty
;;;464 rCLKCON=rCLKCON&~(1<<0)|(1<<0); //Transition to STOP mode
000c90 e3a00440 MOV r0,#0x40000000
000c94 e5900020 LDR r0,[r0,#0x20]
000c98 e3800001 ORR r0,r0,#1
000c9c e3a01440 MOV r1,#0x40000000
000ca0 e5810020 STR r0,[r1,#0x20]
;;;465 for(j=0;j<100;j++);
000ca4 e3a05000 MOV r5,#0
|L1.3240|
000ca8 e3550064 CMP r5,#0x64
000cac aa000001 BGE |L1.3256|
000cb0 e2855001 ADD r5,r5,#1
000cb4 eafffffb B |L1.3240|
;;;466
;;;467 //***Exit STOP mode
;;;468 rCLKCON&=~(1<<0); //Clear STOP_BIT just after exiting STOP mode.
|L1.3256|
000cb8 e3a00440 MOV r0,#0x40000000
000cbc e5900020 LDR r0,[r0,#0x20]
000cc0 e3c00001 BIC r0,r0,#1
000cc4 e3a01440 MOV r1,#0x40000000
000cc8 e5810020 STR r0,[r1,#0x20]
;;;469 MMU_EnableICache();
000ccc ebfffffe BL MMU_EnableICache
;;;470 }
000cd0 eaffffe5 B |L1.3180|
;;;471
;;;472 rINTMSK =BIT_ALLMSK;
|L1.3284|
000cd4 e3e00000 MVN r0,#0
000cd8 e51f1be8 LDR r1,|L1.248|
000cdc e5810008 STR r0,[r1,#8]
;;;473 #if GPIO_RESTORE
;;;474 //Restore the port configurations
;;;475 for(i=0;i<26;i++)
000ce0 e3a04000 MOV r4,#0
|L1.3300|
000ce4 e354001a CMP r4,#0x1a
000ce8 aa000007 BGE |L1.3340|
000cec ea000001 B |L1.3320|
|L1.3312|
000cf0 e2844001 ADD r4,r4,#1
000cf4 eafffffa B |L1.3300|
;;;476 *((U32 *)(0x44800000 +i*4))=portStatus[i];
|L1.3320|
000cf8 e28d0004 ADD r0,sp,#4
000cfc e7900104 LDR r0,[r0,r4,LSL #2]
000d00 e51f1c5c LDR r1,|L1.172|
000d04 e7810104 STR r0,[r1,r4,LSL #2]
000d08 eafffff8 B |L1.3312|
;;;477 #endif
;;;478
;;;479 #if CHECK_SDRAM_SELFREFRESH
;;;480 Test_CheckSDRAM(_NONCACHE_STARTADDRESS,0x400000);
|L1.3340|
000d0c e3a01840 MOV r1,#0x400000
000d10 e3a00544 MOV r0,#0x11000000
000d14 ebfffffe BL Test_CheckSDRAM
;;;481 #endif
;;;482
;;;483 LcdEnvidOnOff(1);
000d18 e3a00001 MOV r0,#1
000d1c ebfffffe BL LcdEnvidOnOff
;;;484 Uart_Printf("STOP Hard Test is over.\n");
000d20 e28f0048 ADR r0,|L1.3440|
000d24 ebfffffe BL _printf
;;;485 }
000d28 e28dd06c ADD sp,sp,#0x6c
000d2c e8bd8030 LDMFD sp!,{r4,r5,pc}
|L1.3376|
000d30 32433353 DCB "S3C2"
000d34 20304134 DCB "4A0 "
000d38 6c6c6977 DCB "will"
000d3c 6b617720 DCB " wak"
000d40 70752065 DCB "e up"
000d44 20796220 DCB " by "
000d48 544e4945 DCB "EINT"
000d4c 74612039 DCB "9 at"
000d50 73746920 DCB " its"
000d54 6c616620 DCB " fal"
000d58 676e696c DCB "ling"
000d5c 67646520 DCB " edg"
000d60 000a2e65 DCB "e.\n\0"
|L1.3428|
000d64 0e120e12 DCD 0x0e120e12
|L1.3432|
000d68 00000000 DCD EintInt_Hard
|L1.3436|
000d6c 000a6425 DCB "%d\n\0"
|L1.3440|
000d70 504f5453 DCB "STOP"
000d74 72614820 DCB " Har"
000d78 65542064 DCB "d Te"
000d7c 69207473 DCB "st i"
000d80 766f2073 DCB "s ov"
000d84 0a2e7265 DCB "er.\n"
000d88 00000000 DCB "\0\0\0\0"
ENDP
BattFaultInt PROC
;;;487 static void __irq BattFaultInt(void)
;;;488 {
|L1.3468|
000d8c e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;489 rSUBSRCPND=BIT_SUB_BATFLT;
000d90 e3a00c40 MOV r0,#0x4000
000d94 e51f1ca4 LDR r1,|L1.248|
000d98 e5810018 STR r0,[r1,#0x18]
;;;490 ClearPending(BIT_WDT_BATFLT);
000d9c e3a00b40 MOV r0,#0x10000
000da0 e1c11000 BIC r1,r1,r0
000da4 e5810000 STR r0,[r1,#0]
000da8 e1c10000 BIC r0,r1,r0
000dac e5900010 LDR r0,[r0,#0x10]
000db0 e5810010 STR r0,[r1,#0x10]
000db4 e1a00001 MOV r0,r1
000db8 e5900010 LDR r0,[r0,#0x10]
;;;491
;;;492 Uart_Printf("nBATT_FAULT interrupt is requested.\n");
000dbc e28f0008 ADR r0,|L1.3532|
000dc0 ebfffffe BL _printf
;;;493 }
000dc4 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000dc8 e25ef004 SUBS pc,lr,#4
|L1.3532|
000dcc 5441426e DCB "nBAT"
000dd0 41465f54 DCB "T_FA"
000dd4 20544c55 DCB "ULT "
000dd8 65746e69 DCB "inte"
000ddc 70757272 DCB "rrup"
000de0 73692074 DCB "t is"
000de4 71657220 DCB " req"
000de8 74736575 DCB "uest"
000dec 0a2e6465 DCB "ed.\n"
000df0 00000000 DCB "\0\0\0\0"
ENDP
Test_BattFaultInterrupt PROC
;;;495 void Test_BattFaultInterrupt(void)
;;;496 {
000df4 e92d4008 STMFD sp!,{r3,lr}
;;;497 int i;
;;;498
;;;499 Uart_Printf("[nBATT_FAULT interrupt Test]\n");
000df8 e28f0074 ADR r0,|L1.3700|
000dfc ebfffffe BL _printf
;;;500 Uart_Printf("Push any key to exit!\n");
000e00 e28f008c ADR r0,|L1.3732|
000e04 ebfffffe BL _printf
;;;501
;;;502 pISR_WDT_BATFLT=(unsigned)BattFaultInt;
000e08 e59f009c LDR r0,|L1.3756|
000e0c e51f1428 LDR r1,|L1.2540|
000e10 e5810f60 STR r0,[r1,#0xf60]
;;;503
;;;504 //Clear interrupt pending
;;;505 ClearPending(BIT_WDT_BATFLT);
000e14 e3a00b40 MOV r0,#0x10000
000e18 e51f1d28 LDR r1,|L1.248|
000e1c e5810000 STR r0,[r1,#0]
000e20 e1c10000 BIC r0,r1,r0
000e24 e5900010 LDR r0,[r0,#0x10]
000e28 e5810010 STR r0,[r1,#0x10]
000e2c e1a00001 MOV r0,r1
000e30 e5900010 LDR r0,[r0,#0x10]
;;;506 rSUBSRCPND=BIT_SUB_BATFLT;
000e34 e3a00c40 MOV r0,#0x4000
000e38 e1c11000 BIC r1,r1,r0
000e3c e5810018 STR r0,[r1,#0x18]
;;;507
;;;508 //Unmask
;;;509 rINTMSK=rINTMSK&~(BIT_WDT_BATFLT);
000e40 e1c10000 BIC r0,r1,r0
000e44 e5900008 LDR r0,[r0,#8]
000e48 e3c00b40 BIC r0,r0,#0x10000
000e4c e5810008 STR r0,[r1,#8]
;;;510 rINTSUBMSK=rINTSUBMSK&~(BIT_SUB_BATFLT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -