📄 startup.s
字号:
;/**
;* Project Name : S3C2443 verification project
;*
;* Copyright 2004 by Samsung Electronics, Inc.
;* All rights reserved.
;*
;* Project Description :
;* This software is only for verifying functions of the S3C2443.
;* Anybody can use this code without our permission.
;*/
;/**
;* File Name : startup.s
;* Description : S3C2443 startup code
;* Author : WOOSEOK, OH
;* Dept : Mobile solution, AP
;* Created Date : 2005.09.7
;* Version : 0.0
;* History
;* R0.0 (2005.09.7): WOOSEOK draft
;*/
GET Option.inc
GET 2443addr.inc
;;;GBLL RUN_JTAG ;;;run for jtag debug
MACRO
$HandlerLabel HANDLER $HandleLabel
$HandlerLabel
sub sp,sp,#4 ;decrement sp(to store jump address)
stmfd sp!,{r0} ;PUSH the work register to stack(lr doesnt push because it return to original address)
ldr r0,=$HandleLabel ;load the address of HandleXXX to r0
ldr r0,[r0] ;load the contents(service routine start address) of HandleXXX
str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack
ldmfd sp!,{r0,pc} ;POP the work register and pc(jump to ISR)
MEND
IMPORT MMU_SetAsyncBusMode
IMPORT InitMEM
IMPORT InitSSMC
IMPORT WdDisable
;IMPORT WDReset
IMPORT SWReset;;xyin0301
IMPORT SetClkDiv
IMPORT SetLockTime
IMPORT SetPLL
IMPORT IntDisable
IMPORT Delay
IMPORT ClearSdram
IMPORT SuspendWakeUp
IMPORT __user_initial_stackheap
IMPORT __main ; The main entry of mon program
;;;IMPORT main
AREA Init,CODE,READONLY
ENTRY
b ResetHandler ;handler for Reset
b HandlerUndef ;handler for Undefined mode
b HandlerSWI ;handler for SWI interrupt
b HandlerPabort ;handler for PAbort
b HandlerDabort ;handler for DAbort
b . ;reserved
b HandlerIRQ ;handler for IRQ interrupt
b HandlerFIQ ;handler for FIQ interrupt
HandlerUndef HANDLER HandleUndef
HandlerSWI HANDLER HandleSWI
HandlerPabort HANDLER HandlePabort
HandlerDabort HANDLER HandleDabort
HandlerIRQ HANDLER HandleIRQ
HandlerFIQ HANDLER HandleFIQ
;=======================================================
; ENTRY
;=======================================================
ResetHandler ; edited by junon 060522
PowerOff
cmp r7, #0x78
bne normalboot
ldr r7,=0x0
ldr r4, =vPWRMODE
ldr r5, [r4]
bic r5, r5, #0xff00
bic r5, r5, #0x00ff
ldr r6, =0x2BED
orr r5, r5, r6 ; Power Off Mode
str r5, [r4] ; Power Off !!
bl Halt
normalboot
; Karr test
ldr r0, =0x01000000
ldr r1, =GPHCON
str r0, [r1]
ldr r0, =0x1000
ldr r1, =GPHDAT
str r0, [r1]
; Karr Test
bl WdDisable
bl IntDisable
bl SetClkDiv
ldr r0,=0x200
bl Delay
bl SetLockTime
bl SetPLL
ldr r0,=0x200
bl Delay
bl MMU_SetAsyncBusMode
bl InitSSMC
bl InitMEM
ldr r0,=0x200
bl Delay
IF :DEF: RUN_JTAG
b PwrReset
ENDIF
ldr r1, =RSTSTAT
ldr r0, [r1]
tst r0, #0x8
bne SuspendUp
tst r0, #0x20;xyin0301 for swrest #0x4
bne WatchDog
b PwrReset
SuspendUp
bl SuspendWakeUp
WatchDog
bl SWReset;xyin0301 WDReset
PwrReset
bl ClearSdram
IF :DEF: RUN_JTAG
b .
ENDIF
bl __user_initial_stackheap
bl __main
Halt
b .
LTORG
ALIGN
AREA IntVector, DATA, READWRITE
^ _ISR_STARTADDRESS
HandleReset # 4
HandleUndef # 4
HandleSWI # 4
HandlePabort # 4
HandleDabort # 4
HandleReserved # 4
HandleIRQ # 4
HandleFIQ # 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -