📄 ramstart.s
字号:
ldr r0,=0x7ff
str r0,[r1]
#==== PORT C GROUP ====
# nCTS0 nRTS0 OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT
# 11 11 01 01 01 01 01 01
# VD4 VD5 VD6 VD7 IISCLK IISDI IISDO IISLRCK
# 11 11 11 11 11 11 11 11
ldr r1,=rPCONC
ldr r0,=0xf555ffff
str r0,[r1]
ldr r1,=rPUPC
ldr r0,=0x00ff /*pc[8~15] PULL-UP */
str r0,[r1]
ldr r1,=rPDATC /*lcd on;led on */
ldr r0,=0xeeff
str r0,[r1]
#==== PORT D GROUP ====
#VFRAME VM VLINE VCLK VD3 VD2 VD1 VD0 (LCD/MODE)
#10 10 10 10 10 10 10 10
ldr r1,=rPCOND
ldr r0,=0xaaaa
str r0,[r1]
ldr r1,=rPUPD
ldr r0,=0xff /*disable PULL-UP */
str r0,[r1]
#==== PORT E GROUP ====
# CODECLK OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT TOUT0 RXD0 TXD0 FOUT OUT
# 10 01 01 01 01 01 10 10 11
ldr r1,=rPCONE
ldr r0,=0x255ab
str r0,[r1]
ldr r1,=rPDATE
ldr r0,=0x0f /*output = 0 */
str r0,[r1]
ldr r1,=rPUPE
ldr r0,=0x0
str r0,[r1]
#==== PORT F GROUP ====
#nCTS1 RXD1 TXD1 nRTS1 nXDREQ0 nXDACK0 nWAIT IICSDA OUTPUT
#010 010 010 010 11 11 10 10 01
ldr r1,=rPCONF
ldr r0,=0x124be9
str r0,[r1]
ldr r1,=rPUPF
ldr r0,=0xff /*disable PULL-UP */
str r0,[r1]
#==== PORT G GROUP ====
#OUTPUT OUTPUT OUTPUT EINT4 EINT3 EINT2 EINT1 EINT0
#01 01 01 11 11 11 11 11
ldr r1,=rPCONG
ldr r0,=0x57ff
str r0,[r1]
ldr r1,=rPUPG
ldrb r0,=0x00 /*all pullup and only input pin work*/
strb r0,[r1]
#***************
#* SET ETC *
#***************
ldr r1,=rSPUCR /*DATA BUS pull-up disable */
ldrb r0,=0x7
strb r0,[r1]
#EINT7 EINT6 EINT5 EINT4 EINT3 EINT2 EINT1 EINT0
# ------ falling edge ------
#000 000 000 100 010 100 010 010
ldr r1,=rEXTINT /*EINT2,3,4 falling edge */
ldr r0,=0x42422
str r0,[r1]
ldr r0,=INTMSK
ldr r1,=0x07ffffff /*all interrupt disable */
str r1,[r0]
#*************************************************************************
#* Set clock control registers *
#*************************************************************************
ldr r0,=LOCKTIME
ldr r1,=800 /*count = t_lock*Fin = 2000 */
str r1,[r0]
ldr r0,=PLLCON /*temporary setting of PLL */
ldr r1,=0x34031 /*Fin=10MHz,Fout=60MHz, */
str r1,[r0]
ldr r0,=CLKCON
ldr r1,=0x7fd8
str r1,[r0]
ldr r0,=rBWSCON /*#BWSCON Address */
ldr r1,=0x11000100
str r1,[r0]
ldr r0,=rBANKCON0
ldr r1,=0x700
str r1,[r0]
ldr r0,=rBANKCON1
ldr r1,=0x700 /* 0x7ffc */
str r1,[r0]
ldr r0,=rBANKCON2
ldr r1,=0x700 /* 0x7ffc */
str r1,[r0]
ldr r0,=rBANKCON3
ldr r1,=0x7568
str r1,[r0]
ldr r0,=rBANKCON4
ldr r1,=0x700 /* 0x7ffc */
str r1,[r0]
ldr r0,=rBANKCON5
ldr r1,=0x700 /* 0x7ffc */
str r1,[r0]
ldr r0,=rBANKCON6
ldr r1,=0x18008
str r1,[r0]
ldr r0,=rBANKCON7
ldr r1,=0x18000
str r1,[r0]
ldr r0,=rREFRESH
ldr r1,=0xac03e1
str r1,[r0]
ldr r0,=rBANKSIZE
ldr r1,=0x16
str r1,[r0]
ldr r0,=rMRSRB6
ldr r1,=0x020
str r1,[r0]
ldr r0,=rMRSRB7
ldr r1,=0x020
str r1,[r0]
#/***************************************************************************/
#/* Initialize stacks */
#/***************************************************************************/
ldr sp, =SVCStack
bl InitStacks
#/***************************************************************************/
#/* Call startram -- Run at sdram from this inst */
#/***************************************************************************/
LDR pc, = startram
#/***************************************************************************/
#/* Clear the un-initialized global and static C data areas */
#/***************************************************************************/
#{
startram :
LDR a1,=Image_ZI_Base /* Pickup the start of the BSS area */
MOV a3,#0 /* Clear value in a3 */
LDR a2,=Image_ZI_Limit /* Pickup the end of the BSS area */
CMP a1,a2
BEQ move_data
clear_loop :
STR a3,[a1],#4 /* Clear a word, a1 += 4 */
CMP a1,a2 /* end of ZI ? */
BNE clear_loop /* If not, continue */
#
# Move the initialized global and initialized C data areas
#
move_data :
LDR a1,=Image_RW_Base /* Pickup the start of the DATA area */
LDR a2,=Image_RO_Limit /* Pickup the start of the DATA storage */
LDR a3,=Image_ZI_Base /* Pickup the end of the BSS area */
CMP a1,a3
BEQ goto_main
move_loop :
LDR a4,[a2],#4
STR a4,[a1],#4 /* move a word, a1 += 4, a2 += 4 */
CMP a1,a3 /* end of DATA ? */
BNE move_loop /* If not, continue */
goto_main :
BL Main
#/***************************************************************************/
#/* The function for initializing stack */
#/***************************************************************************/
InitStacks:
mrs r0,cpsr
bic r0,r0,#MODEMASK /*r0 AND NOT MODEMASK->r0 */
/*r0 OR UNDEFMODE|NOINT -> r1 */
orr r1,r0,#UNDEFMODE|NOINT /*UndefMode */
msr cpsr_cxsf,r1
ldr sp,=UndefStack
orr r1,r0,#ABORTMODE|NOINT /*AbortMode */
msr cpsr_cxsf,r1
ldr sp,=AbortStack
orr r1,r0,#IRQMODE|NOINT
msr cpsr_cxsf,r1 /*IRQMode */
ldr sp,=IRQStack
orr r1,r0,#FIQMODE|NOINT
msr cpsr_cxsf,r1 /*FIQMode */
ldr sp,=FIQStack
bic r0,r0,#MODEMASK|0x80
orr r1,r0,#SVCMODE
msr cpsr_cxsf,r1 /*SVCMode */
ldr sp,=SVCStack
mov pc,lr /*return */
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -