⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 44binit.s

📁 EX44B0开发板BootLoader
💻 S
字号:
;****************************************************
;* NAME    : 44BINIT.S                              *
;* Version : 10.April.2000                          *
;* Description:                                     *
;* C start up codes                                 *
;* Configure memory, Initialize ISR ,stacks         *
;* Initialize C-variables                           *
;* Fill zeros into zero-initialized C-variables     *
;****************************************************

; 请将RO Base设为RELOC_OFS指定的位置,不要另外设置RW Base
; 并将代码烧写至0地址位置
;
; 警告:该文件内的一切初始化代码必须可重定位!!!

RELOC_OFS	EQU 0x0c700000			; relocation offset

	GET option.inc
	GET memcfg.inc

;Cache
SYSCFG		EQU 0x01c00000
NCACHBE0	EQU 0x01c00004

;Memory Controller
REFRESH	    EQU 0x01c80024

;I/O Port
PCONC		EQU 0x01d20010
PDATC		EQU 0x01d20014

;Watchdog timer
WTCON	    EQU	0x01d30000

;Clock Controller
PLLCON	    EQU	0x01d80000
CLKCON	    EQU	0x01d80004
LOCKTIME    EQU	0x01d8000c

;Interrupt Control
INTCON		EQU 0x01e00000
INTPND		EQU	0x01e00004
INTMOD		EQU	0x01e00008
INTMSK		EQU	0x01e0000c
I_ISPR		EQU	0x01e00020
I_CMST		EQU	0x01e0001c

;BDMA destination register
BDIDES0     EQU 0x01f80008
BDIDES1     EQU 0x01f80028

	AREA	Init, CODE, READONLY

	ENTRY
	b		ResetHandler
	ldr		pc,=_ISR_STARTADDRESS + 4
	ldr		pc,=_ISR_STARTADDRESS + 8
	ldr		pc,=_ISR_STARTADDRESS + 12
	ldr		pc,=_ISR_STARTADDRESS + 16
	b		.
	ldr		pc,=_ISR_STARTADDRESS + 24
	ldr		pc,=_ISR_STARTADDRESS + 28

;****************************************************
;*      START                                       *
;****************************************************
ResetHandler
	ldr		r0,=WTCON				;watch dog disable 
	mov		r1,#0x0
	str		r1,[r0]

;	ldr		r0,=INTMSK				;disable all interrupt
;	ldr		r1,=0x07ffffff
;	str		r1,[r0]
;	ldr		r0,=INTCON				;enable IRQ interrupt, vector mode
;	mov		r1,#0
;	str		r1,[r0]
;	ldr		r0,=INTMOD				;all interrupt in IRQ mode
;	str		r1,[r0]

	ldr		r0,=PCONC				;switch off LCD
	ldr		r1,=0xa5aaaaaa
	str		r1,[r0]
	ldr		r0,=PDATC
	mov		r1,#0
	str		r1,[r0]

;****************************************************
;*	Set clock control registers                     *
;****************************************************
	ldr		r0,=LOCKTIME
	ldr		r1,=0xfff
	str		r1,[r0]

	[ PLLONSTART
	ldr		r0,=PLLCON				;temporary setting of PLL
	ldr		r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV)
	str		r1,[r0]
	]

	ldr		r0,=CLKCON
	ldr		r1,=0x7ff8				;All unit block CLK enable	
	str		r1,[r0]

	ldr		r0,=SYSCFG
	mov		r1,#0x0e				;Enable all cache (R/W)
	str		r1,[r0]
	ldr		r0,=NCACHBE0
	mov		r1,#0xc0000000			;Non-cacheable area: 0x00000000 ~ 0x0c000000
	str		r1,[r0]

;****************************************************
;*  change BDMACON reset value for BDMA             *
;****************************************************
	ldr		r0,=BDIDES0
	ldr		r1,=0x40000000			;BDIDESn reset value should be 0x40000000	 
	str		r1,[r0]

	ldr		r0,=BDIDES1
	ldr		r1,=0x40000000			;BDIDESn reset value should be 0x40000000	 
	str		r1,[r0]

;****************************************************
;*  Set memory control registers                    * 	
;****************************************************
	adr		r0,SMRDATA
	ldmia	r0,{r1-r13}
	ldr		r0,=0x01c80000			;BWSCON Address
	stmia	r0,{r1-r13}

;****************************************************
;*  Initialize stacks                               * 
;****************************************************
	ldr		sp, =0x0c800000

;****************************************************
;*  Zero initialized data                           *
;****************************************************
	IMPORT	|Image$$ZI$$Base|
	IMPORT	|Image$$ZI$$Limit|
	IMPORT	Main

	MOV		r0, #0
	LDR		r1, =RELOC_OFS
	LDR		r2, =|Image$$ZI$$Base|
0
	LDMIA	r0!, {r4-r11}
	STMIA	r1!, {r4-r11}
	CMP		r1, r2
	BLO		%B0

	LDR		r3, =|Image$$ZI$$Limit|
	MOV		r0, #0
1
	CMP		r2, r3
	STRLO	r0, [r2], #4
	BLO		%B1

	LDR		pc, =Main

SMRDATA
;*****************************************************************
;* Memory configuration has to be optimized for best performance *
;* The following parameter is not optimized.                     *
;*****************************************************************

;*** memory access cycle parameter strategy ***
; 1) Even FP-DRAM, EDO setting has more late fetch point by half-clock
; 2) The memory settings,here, are made the safe parameters even at 66Mhz.
; 3) FP-DRAM Parameters:tRCD=3 for tRAC, tcas=2 for pad delay, tcp=2 for bus load.
; 4) DRAM refresh rate is for 40Mhz. 

    [ BUSWIDTH=16
	DCD 0x11111110	;Bank0=OM[1:0], Bank1~Bank7=16bit
    | ;BUSWIDTH=32
	DCD 0x22222220	;Bank0=OM[1:0], Bank1~Bank7=32bit
    ]
	DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))	;GCS0
	DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))	;GCS1 
	DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))	;GCS2
	DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))	;GCS3
	DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))	;GCS4
	DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))	;GCS5
	[ BDRAMTYPE="DRAM" 
	    DCD ((B6_MT<<15)+(B6_Trcd<<4)+(B6_Tcas<<3)+(B6_Tcp<<2)+(B6_CAN))	;GCS6 check the MT value in parameter.a
	    DCD ((B7_MT<<15)+(B7_Trcd<<4)+(B7_Tcas<<3)+(B7_Tcp<<2)+(B7_CAN))	;GCS7
	| ;"SDRAM"
		DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))	;GCS6
		DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))	;GCS7
	]
	DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)	;REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019
	DCD 0x10			;SCLK power down mode, BANKSIZE 32M/32M
	DCD 0x20			;MRSR6 CL=2clk
	DCD 0x20			;MRSR7

    LTORG

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -