?? boot_gfd.s
字號:
;/*************************************************************************************
; * Copyright (c) 2007 by PROCHIP Limited.
; * PROPRIETARY RIGHTS of PROCHIP Limited are involved in the subject matter of this
; * material. All manufacturing, reproduction, use, and sales rights
; * pertaining to this subject matter are governed by the license agreement.
; * The recipient of this software implicitly accepts the terms of the license.
; *
; * File Name: boot_gfd.s
; *
; * File Description: sep4020的bootloader.
; *
; * Version Date Author
; *------------------------------------------------------------------------------------
; * 0.0.1 2006.10.17 wuer
; * 0.0.2 2008.01.10 Zhang Yang
; *
; *************************************************************************************
; */
;*****************************************************************
;* 本文件中用到的常量定義
;*****************************************************************
SP_USR EQU 0x30700000;0x0400fff0; ; USR模式下的堆棧首指針
SP_SYS EQU 0x30701000;0x0400fef0; ; SYS模式下的堆棧首指針
SP_SVC EQU 0x30702000;0x0400fdf0; ; SVC模式下的堆棧首指針
SP_IRQ EQU 0x30703000;0x0400fcf0; ; IRQ模式下的堆棧首指針
SP_FIQ EQU 0x30704000;0x0400fbf0; ; FIQ模式下的堆棧首指針
SP_UND EQU 0x30705000;0x0400faf0; ; UND模式下的堆棧首指針
SP_ABT EQU 0x30706000;0x0400f9f0; ; ABT模式下的堆棧首指針
PMU_PLTR EQU 0x10001000 ; PLL的穩定過渡時間
PMU_PMCR EQU 0x10001004 ; 系統主時鐘PLL的控制寄存器
PMU_PUCR EQU 0x10001008 ; USB時鐘PLL的控制寄存器
PMU_PCSR EQU 0x1000100C ; 內部模塊時鐘源供給的控制寄存器
PMU_PDSLOW EQU 0x10001010 ; SLOW狀態下時鐘的分頻因子
PMU_PMDR EQU 0x10001014 ; 芯片工作模式寄存器
PMU_RCTR EQU 0x10001018 ; Reset控制寄存器
PMU_CLRWAKUP EQU 0x1000101C ; WakeUp清除寄存器
EMI_CSACONF EQU 0x11000000 ; CSA參數配置寄存器
EMI_CSECONF EQU 0x11000010 ; CSE參數配置寄存器
EMI_CSFCONF EQU 0x11000014 ; CSF參數配置寄存器
EMI_SDCONF1 EQU 0x11000018 ; SDRAM時序配置寄存器1
EMI_SDCONF2 EQU 0x1100001C ; SDRAM時序配置寄存器2, SDRAM初始化用到的配置信息
EMI_REMAPCONF EQU 0x11000020 ; 片選空間及地址映射REMAP配置寄存器
AREA BOOT, CODE, READONLY
ENTRY ; Mark first instruction to execute
EXPORT RST_DO
RST_DO
;*****************************************************************
;* 初始化各種模式下的堆棧首指針
;*****************************************************************
ldr sp, =SP_SVC ;init sp_svc
mov R4, #0xD2 ;chmod to irq and init sp_irq
msr cpsr_cf, R4
ldr sp, =SP_IRQ
mov R4, #0XD1 ;chomod to fiq and init sp_fiq
msr cpsr_cf, R4
ldr sp, =SP_FIQ
mov R4, #0XD7 ;chomod to abt and init sp_ABT
msr cpsr_cf, R4
ldr sp, =SP_ABT
mov R4, #0XDB ;chomod to undf and init sp_UNDF
msr cpsr_cf, R4
ldr sp, =SP_UND
;chomod to abt and init sp_sys
mov R4, #0xDF ;all interrupts disabled
msr cpsr_cxsf, R4 ;SYSTEM mode, @32-bit code mode
ldr sp, =SP_SYS
mov R4, #0XD3 ;chmod to svc modle, CPSR IRQ bit is disable
msr cpsr_c, R4
;****************************************************************
;* 初始化PMU模塊, 配置系統時鐘
;****************************************************************
ldr r4, =PMU_PCSR ; 打所有模塊時鐘
ldr r5, =0x0001ffff
str r5, [ r4 ]
ldr r4, =PMU_PLTR ; 配置PLL穩定過度時間為保守值50us*100M.
ldr r5, =0x13881388
str r5, [ r4 ]
ldr r4, =PMU_PMDR ; 由SLOW模式進入NORMAL模式
ldr r5, =0x00000001
str r5, [ r4 ]
ldr r4, =PMU_PMCR ; 配置系統時鐘為40MHz,pv=20,pd=1,tscal=000
ldr r5, =0x0000c00c
str r5, [ r4 ]
;****************************************************************
;* 初始化EMI
;****************************************************************
ldr r4, =EMI_CSACONF ; CSA片選時序參數配置
ldr r5, =0x08a6a6a1
str r5, [ r4 ]
ldr r4, =EMI_CSECONF ; CSE片選時序參數配置,最保守配置
ldr r5, =0x8cfffff1
str r5, [ r4 ]
ldr r4, =EMI_SDCONF1 ; SDRAM參數配置1
ldr r5, =0x1e104177
str r5, [ r4 ]
ldr r4, =EMI_SDCONF2 ; SDRAM參數配置2
ldr r5, =0x80001860
str r5, [ r4 ]
ldr r4, =EMI_REMAPCONF ; 重映射cse到0地址
ldr r5, =0x0000000b
str r5, [ r4 ]
;***************************************************************
;* 打開IRQ中斷
;***************************************************************
mrs R4, cpsr
bic R4, R4, #0x80 ; set bit7 to zero
msr cpsr_c, R4
;***************************************************************
;* 跳轉到主函數 main()
;***************************************************************
IMPORT __main
b __main
;*************************************************************
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -