📄 lh79524_startup.i
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; $Workfile: lh79524_startup.i $
; $Revision: 1.0 $
; $Author: ZhangJ $
; $Date: Oct 20 2004 09:41:34 $
;
; Project: LH79524
;
; Description:
; This file contains chip-specific definitions used by the basic
; startup code for the LH79524.
;
; $Log:: //smaicnt2/pvcs/VM/sharpmcu/archives/sharpmcu/software/csps/$
;
; Rev 1.0 Oct 20 2004 09:41:34 ZhangJ
; Initial revision.
;
; Rev 1.1 Jul 20 2004 16:50:42 PattamattaD
; Updated comments.
;
; Rev 1.0 Jun 15 2004 14:03:02 PattamattaD
; Initial revision.
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Copyright (c) 2004 Sharp Microelectronics of the Americas
;
; All rights reserved
;
; SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
; OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
; AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES,
; SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
;
; SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE SOLELY
; FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE USE OF A
; SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT. USE OF THIS SOURCE
; FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LH79524 xPSR bits
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MODE_USR EQU 0x010
MODE_FIQ EQU 0x011
MODE_IRQ EQU 0x012
MODE_SVC EQU 0x013
MODE_ABT EQU 0x017
MODE_UNDEF EQU 0x01b
MODE_SYS EQU 0x01F
I_Bit EQU (1 << 7) ; 0x080
F_Bit EQU (1 << 6) ; 0x040
T_Bit EQU (1 << 5) ; 0x020
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; MMU, Coprocessor Definitions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SYS_CONTROL_CP CP 15
MMU_CP CP 15
CACHE_CP CP 15
; Valid CP15 registers
MMU_REG_ID CN 0
MMU_REG_CONTROL CN 1
MMU_REG_TTB CN 2 ; Translation Table Base Address
MMU_REG_DAC CN 3 ; Domain Access Control
MMU_REG_FS CN 5 ; Fault Status
MMU_REG_FA CN 6 ; Fault Address
MMU_REG_CACHE_OP CN 7 ; Cache Operations
MMU_REG_TLB_OP CN 8 ; Translation Lookaside Buffer Operation
MMU_REG_FCSE_PID CN 13 ; Fast Context Switch Extension
; Control register bits
MMU_CONTROL_M EQU (1 << 0) ; MMU Enable
MMU_CONTROL_A EQU (1 << 1) ; Alignment Fault
MMU_CONTROL_C EQU (1 << 2) ; Data Cache
MMU_CONTROL_W EQU (1 << 3) ; Write buffer
MMU_CONTROL_B EQU (1 << 7) ; Endianess
MMU_CONTROL_S EQU (1 << 8) ; System Protection
MMU_CONTROL_R EQU (1 << 9) ; ROM Protection
MMU_CONTROL_V EQU (1 << 13) ; Exception Vector location
; Convenient EQU's
MMU_ENABLE EQU (MMU_CONTROL_M)
MMU_ENABLE_CACHE EQU (MMU_CONTROL_M :OR: MMU_CONTROL_C)
MMU_CONTROL_RESET EQU 0x70 ; bits 4,5 and 6 should be 1
MMU_CONTROL_ALL_BITS EQU (MMU_CONTROL_M :OR: MMU_CONTROL_A :OR: \
MMU_CONTROL_C :OR: MMU_CONTROL_B :OR: \
MMU_CONTROL_S :OR: MMU_CONTROL_R :OR: \
MMU_CONTROL_W :OR: MMU_CONTROL_V)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Memory Mapped Register Bases
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AHB_REG_PHYS_BASE EQU 0xFFFF0000
APB_REG_PHYS_BASE EQU 0xFFFC0000
IRAM_PHYS_BASE EQU 0x60000000
IRAM_PHYS_SIZE EQU 0x00008000 ; 32KB
IRAM_PHYS_END EQU (IRAM_PHYS_BASE + IRAM_PHYS_SIZE)
; Interrupt Controller
VIC_REG_BASE EQU (AHB_REG_PHYS_BASE + 0xF000)
VIC_IRQSR_OFFSET EQU 0x00
VIC_FIQSR_OFFSET EQU 0x04
VIC_RAWSR_OFFSET EQU 0x08
VIC_INTSEL_OFFSET EQU 0x0C
VIC_INTEN_OFFSET EQU 0x10
VIC_INTENC_OFFSET EQU 0x14
VIC_SOFT_INT_OFFSET EQU 0x18
VIC_SOFT_INTC_OFFSET EQU 0x1C
VIC_VECADDR_OFFSET EQU 0x30
; RCPC
RCPC_REG_BASE EQU (APB_REG_PHYS_BASE + 0x22000)
RCPC_CTRL_OFFSET EQU 0x00
RCPC_ID_OFFSET EQU 0x04
RCPC_REMAP_OFFSET EQU 0x08
RCPC_SOFTRESET_OFFSET EQU 0x0C
RCPC_RST_STAT_OFFSET EQU 0x10
RCPC_RST_STATCLR_OFFSET EQU 0x14
RCPC_HCLK_OFFSET EQU 0x18
RCPC_CPUCLK_OFFSET EQU 0x1C
RCPC_PERIC_CTRL0_OFFSET EQU 0x24
RCPC_PERIC_CTRL1_OFFSET EQU 0x28
RCPC_AHBCLKCTRL_OFFSET EQU 0x2C
RCPC_PERIC_SEL_OFFSET EQU 0x34
RCPC_LCD_CLK_OFFSET EQU 0x40
RCPC_SSP_CLK_OFFSET EQU 0x44
RCPC_ADC_CLK_OFFSET EQU 0x48
RCPC_USB_CLK_OFFSET EQU 0x4C
RCPC_INTCONFIG_OFFSET EQU 0x80
RCPC_INTCLEAR_OFFSET EQU 0x84
RCPC_COREC_CFG_OFFSET EQU 0x88
RCPC_SYSPLLCTRL_OFFSET EQU 0xC0
RCPC_USBPLLCTRL_OFFSET EQU 0xC4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Data Store (top of IRAM)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Leave some Data Store at top of IRAM,
; used for miscellaneous data, save status
DATA_STORE_SIZE EQU 0x40 ; 16 words
DATA_STORE_BASE EQU (IRAM_PHYS_END - DATA_STORE_SIZE)
; Miscellaneous Data
; Boot Status Store address
BOOT_STATUS_STORE_ADDR EQU (DATA_STORE_BASE + 0x0)
; Software Reset Status Store address
SRVAL_STATUS_STORE_ADDR EQU (DATA_STORE_BASE + 0x4)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Save Status stack in IRAM (grows down Data Store IRAM)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Leaves four empty words at top of IRAM for contingencies.
; See comments in startup code for Save Status memory map.
SAVE_STATUS_STORE_ADDR EQU (DATA_STORE_BASE + DATA_STORE_SIZE - 0x10)
SAVE_STATUS_SIZE EQU 0x80 ; 32 words
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Primary stack setup
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; IRAM stack grows down below Data Store area.
IRAM_SVC_STACK_BASE EQU DATA_STORE_BASE
SVC_STACK_SIZE EQU 1024 ; primary running stack for Supervisor
IRQ_STACK_SIZE EQU 512 ; primary running stack for IRQ
UNDEF_STACK_SIZE EQU 512 ; may be used by debugger or SWI
FIQ_STACK_SIZE EQU 256 ; primary running stack for FIQ
ABORT_STACK_SIZE EQU 256 ; Memory error handler stack
SYSTEM_STACK_SIZE EQU 1024 ; not used if User Mode not entered.
;Initial startup may not have SDRAM available, use IRAM for stacks
SVC_STACK_BASE EQU IRAM_SVC_STACK_BASE
IRQ_STACK_BASE EQU (SVC_STACK_BASE - SVC_STACK_SIZE)
UNDEF_STACK_BASE EQU (IRQ_STACK_BASE - IRQ_STACK_SIZE)
FIQ_STACK_BASE EQU (UNDEF_STACK_BASE - UNDEF_STACK_SIZE)
ABORT_STACK_BASE EQU (FIQ_STACK_BASE - FIQ_STACK_SIZE)
SYSTEM_STACK_BASE EQU (ABORT_STACK_BASE - ABORT_STACK_SIZE)
SYSTEM_STACK_LIMIT EQU (SYSTEM_STACK_BASE - SYSTEM_STACK_SIZE)
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -