新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TQ2440啟動(dòng)代碼分析(二)

TQ2440啟動(dòng)代碼分析(二)

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;; When EINT0 is pressed, Clear SDRAM

本文引用地址:http://m.butianyuan.cn/article/201611/321667.htm

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; check if EIN0 button is pressed

;這一段檢測(cè)EINT0是否被按下,假如EINT0被按下,則清空SDRAM

ldr r0,=GPFCON

ldr r1,=0x0

str r1,[r0]

ldr r0,=GPFUP

ldr r1,=0xff

str r1,[r0]

;配置GPF

ldr r1,=GPFDAT

ldr r0,[r1]

bic r0,r0,#(0x1e<<1) ; bit clear

tst r0,#0x1

bne %F1

; Clear SDRAM Start

ldr r0,=GPFCON

ldr r1,=0x55aa

str r1,[r0]

; ldr r0,=GPFUP

; ldr r1,=0xff

; str r1,[r0]

ldr r0,=GPFDAT

ldr r1,=0x0

str r1,[r0] ;LED=****

mov r1,#0

mov r2,#0

mov r3,#0

mov r4,#0

mov r5,#0

mov r6,#0

mov r7,#0

mov r8,#0

ldr r9,=0x4000000 ;64MB

ldr r0,=0x30000000

0

stmia r0!,{r1-r8}

subs r9,r9,#32

bne %B0

;以上這段清空SDRAM

;Clear SDRAM End

1

;Initialize stacks

bl InitStacks

;檢測(cè)引腳OM[1:0],如果OM[1:0]!=0,選擇從NOR Flash啟動(dòng),如果OM[1:0]==0,則表示從nand flash啟動(dòng)

;===========================================================

ldr r0, =BWSCON

ldr r0, [r0]

ands r0, r0, #6 ;OM[1:0] != 0, NOR FLash boot

bne copy_proc_beg ;do not read nand flash

adr r0, ResetEntry ;OM[1:0] == 0, NAND FLash boot

cmp r0, #0 ;if use Multi-ice,

bne copy_proc_beg ;do not read nand flash for boot

;nop

;===========================================================

nand_boot_beg

[ {TRUE}

bl RdNF2SDRAM

]

;nand flash啟動(dòng),拷貝程序到steppingstone區(qū)域

ldr pc, =copy_proc_beg

;===========================================================

copy_proc_beg;

adr r0, ResetEntry

ldr r2, BaseOfROM

cmp r0, r2

ldreq r0, TopOfROM

beq InitRam

ldr r3, TopOfROM

0

ldmia r0!, {r4-r7}

stmia r2!, {r4-r7}

cmp r2, r3

bcc %B0

sub r2, r2, r3

sub r0, r0, r2

InitRam

ldr r2, BaseOfBSS

ldr r3, BaseOfZero

0

cmp r2, r3

ldrcc r1, [r0], #4

strcc r1, [r2], #4

bcc %B0

mov r0, #0

ldr r3, EndOfBSS

1

cmp r2, r3

strcc r0, [r2], #4

bcc %B1

ldr pc, =%F2 ;goto compiler address

2

; [ CLKDIV_VAL>1 ; means Fclk:Hclk is not 1:1.

; bl MMU_SetAsyncBusMode

; |

; bl MMU_SetFastBusMode ; default value.

; ]

;===========================================================

; Setup IRQ handler

ldr r0,=HandleIRQ ;This routine is needed

ldr r1,=IsrIRQ ;if there is not subs pc,lr,#4 at 0x18, 0x1c

str r1,[r0]

[ :LNOT:THUMBCODE

bl Main ;Do not use main() because ......

b .

]

[ THUMBCODE ;for start-up code for Thumb mode

orr lr,pc,#1

bx lr

CODE16

bl Main ;Do not use main() because ......

b .

CODE32

]

;堆棧初始化的順序決定系統(tǒng)最后運(yùn)行在哪種處理器模式,最后初始化哪種模式的堆棧,系

;統(tǒng)就運(yùn)行在哪種模式。

;function initializing stacks

InitStacks

;Do not use DRAM,such as stmfd,ldmfd......

;SVCstack is initialized before

;Under toolkit ver 2.5, msr cpsr,r1 can be used instead of msr cpsr_cxsf,r1

mrs r0,cpsr

bic r0,r0,#MODEMASK

orr r1,r0,#UNDEFMODE|NOINT

msr cpsr_cxsf,r1 ;UndefMode

ldr sp,=UndefStack ; UndefStack=0x33FF_5C00


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: TQ2440啟動(dòng)代

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉