📄 startup.s
字号:
; ldr pc,=HandlerEINT1
; ldr pc,=HandlerEINT2
; ldr pc,=HandlerEINT3
; ldr pc,=HandlerEINT4
; ldr pc,=HandlerEINT5
; b .
; b .
; ldr pc,=HandlerZDMA0
; ldr pc,=HandlerZDMA1
; ldr pc,=HandlerBDMA0
; ldr pc,=HandlerBDMA1
; ldr pc,=HandlerUERR0
; ldr pc,=HandlerUERR1
; b .
; b .
; ldr pc,=HandlerTIMER0
; ldr pc,=HandlerTIMER1
; ldr pc,=HandlerTIMER2
; ldr pc,=HandlerTIMER3
; ldr pc,=HandlerWDT
; ldr pc,=HandlerEINT67
; b .
; b .
; ldr pc,=HandlerURXD0
; ldr pc,=HandlerURXD1
; ldr pc,=HandlerIIC
; ldr pc,=HandlerSIO
; ldr pc,=HandlerUTXD0
; ldr pc,=HandlerUTXD1
; b .
; b .
; ldr pc,=HandlerRTC
; b .
; b .
; b .
; b .
; b .
; b .
; b .
; ldr pc,=HandlerADC
; b .
; b .
; b .
; b .
; b .
; b .
; b .
;0xe0=EnterPWDN
; ldr pc,=EnterPWDN
LTORG
HandlerFIQ HANDLER HandleFIQ
HandlerIRQ HANDLER HandleIRQ
HandlerUndef HANDLER HandleUndef
HandlerSWI HANDLER HandleSWI
HandlerDabort HANDLER HandleDabort
HandlerPabort HANDLER HandlePabort
; exception processing 阑 力寇茄 唱赣瘤绰 林籍贸府茄促.
;HandlerADC HANDLER HandleADC
;HandlerRTC HANDLER HandleRTC
;HandlerUTXD1 HANDLER HandleUTXD1
;HandlerUTXD0 HANDLER HandleUTXD0
;HandlerSIO HANDLER HandleSIO
;HandlerIIC HANDLER HandleIIC
;HandlerURXD1 HANDLER HandleURXD1
;HandlerURXD0 HANDLER HandleURXD0
;HandlerEINT67 HANDLER HandleEINT67
;HandlerWDT HANDLER HandleWDT
;HandlerTIMER3 HANDLER HandleTIMER3
;HandlerTIMER2 HANDLER HandleTIMER2
;HandlerTIMER1 HANDLER HandleTIMER1
;HandlerTIMER0 HANDLER HandleTIMER0
;HandlerUERR1 HANDLER HandleUERR1
;HandlerUERR0 HANDLER HandleUERR0
;HandlerBDMA1 HANDLER HandleBDMA1
;HandlerBDMA0 HANDLER HandleBDMA0
;HandlerZDMA1 HANDLER HandleZDMA1
;HandlerZDMA0 HANDLER HandleZDMA0
;HandlerEINT5 HANDLER HandleEINT5
;HandlerEINT4 HANDLER HandleEINT4
;HandlerEINT3 HANDLER HandleEINT3
;HandlerEINT2 HANDLER HandleEINT2
;HandlerEINT1 HANDLER HandleEINT1
;HandlerEINT0 HANDLER HandleEINT0
;*********************************************************************
;* ISR 风凭 *
;*********************************************************************
IsrIRQ
sub sp,sp,#4 ;reserved for PC
stmfd sp!,{r8-r10}
ldr r8,=INTMOD
ldmia r8,{r8-r10} ;r8=IntMode,r9=IntPend,r10=IntMask
mvn r8,r8
and r8,r8,r9
and r8,r8,r10 ;r8 has IRQ,Unmasked,Pending bit
mov r9,#0
0 movs r8,r8,lsr #1
bcs %F1
add r9,r9,#4
b %B0
1 ldr r10,=HandleEINT0 ;IntVectorTable must not be used.
add r10,r10,r9
ldr r10,[r10]
str r10,[sp,#12];
ldmfd sp!,{r8-r10,pc}
ldr pc, =EnterPWDN
;-----------------------------------------------------------------------
; 盔贰 乐带 内靛 牢单, 林籍贸府沁促.
;-----------------------------------------------------------------------
;One of the following two routines can be used for non-vectored interrupt.
;IsrIRQ ;using I_ISPR register.
; sub sp,sp,#4 ;reserved for PC
; stmfd sp!,{r8-r9}
;IMPORTANT CAUTION
;if I_ISPC isn't used properly, I_ISPR can be 0 in this routine.
; ldr r9,=I_ISPR
; ldr r9,[r9]
; mov r8,#0x0
;0 movs r9,r9,lsr #1
; bcs %F1
; add r8,r8,#4
; b %B0
;1 ldr r9,=HandleADC
; add r9,r9,r8
; ldr r9,[r9]
; str r9,[sp,#8]
; ldmfd sp!,{r8-r9,pc}
;IsrIRQ ;using I_CMST register
; sub sp,sp,#4 ;reserved for PC
; stmfd sp!,{r8-r9}
;IMPORTANT CAUTION
;if I_ISPC isn't used properly, I_CMST can have unexpected value in this routine.
; ldr r8,=I_CMST
; ldr r8,[r8]
;For IsrFIQ, there has to be 'add r8,r8,#0x100' before 'bic r8,r8,#0xffffc0ff'.
;The r8[13:8] will be converted as follows;
;0x3f -> 0x0, 0x0 -> 0x1, 0x1 -> 0x2, ......
; bic r8,r8,#0xffffc0ff
; adrl r9,VECTOR_BRANCH
; add r9,r9,r8,lsr #6
; str r9,[sp,#8]
; ldmfd sp!,{r8-r9,pc}
; **********************************************************************
; **********************************************************************
; * The Reset Entry Point *
; **********************************************************************
; **********************************************************************
ResetHandler
; **********************************************************************
; * Setup the SYSCFG register (4-6 其捞瘤) *
; **********************************************************************
;; - Special register base address(Reset value): 0x7ff0000
;; - Memory type=SDRAM(Bank6), ROM/SRAM(Bank7)
;; SFR Start Address=0x3ff0000,
;; Cache Off, SRAM size=4KB, Write Buffer Off, Stall Disable
[ DRAMTYPE="SDRAM"
ldr r0, =0x7ff1000
ldr r1, SyscfgDataSdram
str r1, [r0]
| ;; "DRAM"
ldr r0, =0x7ff100
ldr r1 SyscfgDataEdoDram
str r1, [r0]
]
; **********************************************************************
; * watch-dog timer 甫 disable 矫挪促. *
; **********************************************************************
ldr r0, =BTCON
ldr r1, =WDT_DISABLE
strh r1, [r0]
; 盔贰 家胶俊 乐带 内靛.. 林籍贸府 沁澜...
; ldr r0,=WTCON ;watch dog disable
; ldr r1,=0x0
; str r1,[r0]
; **********************************************************************
; * System Control configuration *
; **********************************************************************
;; System Control configuration
;; - Grobal interrupt mask, System Clock=MCLK, Normal operation
ldr r0, =SYSCON
mov r1, #0x18
strb r1, [r0]
; **********************************************************************
; * 葛电 牢磐反飘甫 disable 矫挪促. *
; **********************************************************************
ldr r0, =INTMOD
mov r1, #0x0 ; All IRQ
str r1, [r0]
ldr r0, =INTMSK
mov r1, #0x0
str r1, [r0] ; All disable
; 盔贰 家胶俊 乐带 内靛.. 林籍贸府 沁澜...
;
; ldr r0,=INTMSK
; ldr r1,=0x07ffffff ;all interrupt disable
; str r1,[r0]
;---------------------------------------------------------------------
; PLL 捞 绝栏骨肺, 捞 何盒阑 林籍 贸府沁促.
; [ PLLONSTART
; ldr r0,=PLLCON ;temporary setting of PLL
; ldr r1,=((0x48<<12)+(0x0<<4)+0x2) ;Fin=4MHz,Fvco=160Mhz,Fout=40MHz,m/p/s=0x48/0/0x2
; str r1,[r0]
; ]
;---------------------------------------------------------------------
; **********************************************************************
; * I/O Port 甫 汲沥茄促. *
; **********************************************************************
;; Port 0 Configuration
;; P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
;; EINT0 OUT OUT OUT OUT OUT OUT OUT
;; 00 01 01 1 1 1 1 1 (xxxx x000 1011 1111)
;; UP (1000 0000)
ldr r1, =PCON0
ldr r0, =0x00bf
strh r0, [r1]
ldr r1, =PUR0
ldr r0, =0x80
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 1 Configuration
;; P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
;; IN IN IN IN IN A18 A17 A16
;; 0 0 0 0 0 1 1 1
;; 0 0 0 0 0 x x x (0000 0111 0000 0000)
;; DOWN DOWN DOWN DOWN DOWN (1111 1000)
ldr r1, =PCON1
ldr r0, =0x0700
strh r0, [r1]
ldr r1, =PDR1
ldr r0, =0xf8
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 2 Configuration
;; P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
;; EINT1 IN nRAS0 OUT OUT OUT OUT nCS1
;; 00 00 10 01 01 01 01 10 (0000 1001 0101 0110)
;; UP UP (1100 0000)
ldr r1, =PCON2
ldr r0, =0x0956
strh r0, [r1]
ldr r1, =PUR2
ldr r0, =0xc0
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 3 Configuration
;; P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
;; EINT2 SCLK SCKE nWE nCAS1 nCAS0 nWBE1 nWBE0
;; 00 10 10 10 10 10 10 10 (0010 1010 1010 1010)
;; DOWN (1000 0000)
ldr r1, =PCON3
ldr r0, =0x2aaa
strh r0, [r1]
ldr r1, =PUR3
ldr r0, =0x80
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 4 Configuration
;; P4.7 P4.6 P4.5 P4.4 P4.3 P4.2 P4.1 P4.0
;; D15 D14 D13 D12 D11 D10 D9 D8
;; 11 11 11 11 11 11 11 11 (1111 1111 1111 1111)
;; (0000 0000)
ldr r1, =PCON4
ldr r0, =0xffff
strh r0, [r1]
ldr r1, =PDR4
ldr r0, =0x0
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 5 Configuration
;; P5.7 P5.6 P5.5 P5.4 P5.3 P5.2 P5.1 P5.0
;; UTXD URXD IN IN IN IN IN IN
;; 101 00 00 00 00 00 00 00 (xxxx xxxx xxxx xxx1 0100 0000 0000 0000)
;; UP UP UP UP UP UP (0011 1111)
ldr r1, =PCON5
ldr r0, =0x14000
str r0, [r1]
ldr r1, =PUR5
ldr r0, =0x3f
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 6 Configuration
;; P6.7 P6.6 P6.5 P6.4 P6.3 P6.2 P6.1 P6.0
;; EINT3 STXD1 IN SRXD1 IN STXD0 IN SRXD0
;; 0 101 000 00 00 101 000 00 (xxxx xxxx xxxx x010 1000 0000 1010 0000)
;; UP UP UP UP UP UP (1011 1011)
ldr r1, =PCON6
ldr r0, =0x280a0
str r0, [r1]
ldr r1, =PUR6
ldr r0, =0xbb
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 7 Configuration
;; HNS LNS RTO P7.7 P7.6 P7.5 P7.4 P7.3 P7.2 P7.1 P7.0
;; T0 T0 GIOP IN IN IN IN IN IN IN IN
;; 0 0 00 0 0 0 0 0 0 0 0 (xxxx 0000 0000 0000)
;; UP UP UP UP UP UP UP UP (1111 1111)
;; Port 7 Configuration(LED 钎矫甫 困秦辑 函版窃...柳痹)
;; HNS LNS RTO P7.7 P7.6 P7.5 P7.4 P7.3 P7.2 P7.1 P7.0
;; T0 T0 GIOP OUT OUT OUT OUT OUT OUT OUT OUT
;; 0 0 00 1 1 1 1 1 1 1 1 (xxxx 0000 1111 1111)
;; DN DN DN DN DN DN DN DN (0000 0000)
ldr r1, =PCON7
ldr r0, =0xff
strh r0, [r1]
ldr r1, =PUR7
ldr r0, =0x00
strb r0, [r1]
;; ---------------------------------------------------------------------
;; Port 8 Configuration
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -