📄 lh7a400_evb.i
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; $Workfile: LH7A400_evb.i $
; $Revision: 1.16 $
; $Author: BarnettH $
; $Date: Jun 25 2002 18:41:56 $
;
; Project: LH7A400 Evaluation Board
;
; Description:
; LH7A400 EVB (Platform) definitions
; Maps location of 16KB MMU Translation Table (TT_BASE)
;
; Predefines:
; BOOTMODE = 1
; Maps Asynchronous Flash to 0x0, Synchronous Flash to 0xF0000000
; Any other value swaps mapping.
;
; $Log: //smaicnt2/pvcs/VM/CHIPS/archives/SOC/LH7A400/Platform/LH7A400_evb.i-arc $
;
; Rev 1.16 Jun 25 2002 18:41:56 BarnettH
;Added memory-mapped bases for UART's
;
; Rev 1.15 Jun 14 2002 13:25:06 BarnettH
;Removed PROTO_LH7A400 predefine.
;Cleaned up file banner.
;Eliminated CLKIDX values.
;
; Rev 1.14 Jun 13 2002 14:46:40 BarnettH
;EIT Alpha1. Many changes; may not be compatible with previous usage.
;
; Rev 1.13 Jun 06 2002 10:49:14 BarnettH
;Added LED utility codes section
;
; Rev 1.12 Jun 05 2002 11:34:20 MaysR
;Added additional clock indexes:
;175/87/22, 184/92/23, 190/96/24.
;
; Rev 1.11 Jun 05 2002 11:17:54 BarnettH
;Format housecleaning
;Added SDRAM_PHYS_SIZE
;Added MODE_STACK_INIT_MMU
;Added DATA_STORE_SIZE and DATA_STORE_BASE
;Made SVC_STACK_IRAM dependent on DATA_STORE_xx
;Added Dip Switch equates
;Changed SVC_STACK_INIT to SVC_STACK_SDRAM
;Added several CPLD equates, Dip Switches, 7-seg,
;Added equates re SMC bcr2
;
; Rev 1.10 May 21 2002 18:28:20 MaysR
;Changed Include back to LH7A400_mmu.i. (changed in error)
;
; Rev 1.8 Apr 02 2002 11:42:30 SuryanG
;Added legal disclaimer.
;
; Rev 1.7 Nov 19 2001 15:52:56 MaysR
;Expanded IRAMATZERO ifdef, corrected logic error.
;
; Rev 1.6 Nov 16 2001 16:48:00 MaysR
;Added predefine for IRAM mapped to zero.
;
; Rev 1.5 Nov 14 2001 16:21:42 MaysR
;Added clock speed settings up to 200-100-50
;
; Rev 1.4 Oct 09 2001 18:49:02 BarnettH
;Added comment on MMU_NO_CACHE
;
; Rev 1.3 Oct 04 2001 18:02:40 BarnettH
;Added Clock Index equate to PROTO_LH7A400 conditional
;
; Rev 1.2 Oct 04 2001 17:52:20 BarnettH
;Added PROTO_LH7A400 pre-define and associated #define's
;
; Rev 1.1 Sep 28 2001 15:12:52 BarnettH
;Added MODE_STACK_INIT_MMU
;Corrected SYSTEM_STACK_INIT
;Added Clock indices up to 200 MHz core
;
; Rev 1.0 Sep 18 2001 18:04:06 BarnettH
;Initial revision.
;
; 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.
;
; COPYRIGHT (C) 2001 SHARP MICROELECTRONICS OF THE AMERICAS INC.
; CAMAS, WA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SPECIALIZED INCLUDES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INCLUDE LH7A400_mmu.i
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LH7A400 xPSR bits
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MODE_USR EQU 0x010
MODE_FIQ EQU 0x011
MODE_IRQ EQU 0x012
MODE_SVC EQU 0x013
MODE_ABORT EQU 0x017
MODE_UNDEF EQU 0x01b
MODE_SYSTEM EQU 0x01F
I_MASK EQU (1 << 7) ; 0x080
F_MASK EQU (1 << 6) ; 0x040
T_MASK EQU (1 << 5) ; 0x020
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; EVB MEMORY (Physical)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Memory Mapped Register Bases
AHB_REG_PHYS_BASE EQU 0x80002000
APB_REG_PHYS_BASE EQU 0x80000000
LH7A400_IRAM_PHYS_BASE EQU 0xB0000000
LH7A400_IRAM_PHYS_SIZE EQU 0x14000 ; 80KB
LH7A400_IRAM_PHYS_END EQU LH7A400_IRAM_PHYS_BASE + \
LH7A400_IRAM_PHYS_SIZE
IRAM_PHYS_BASE EQU LH7A400_IRAM_PHYS_BASE
IRAM_PHYS_SIZE EQU LH7A400_IRAM_PHYS_SIZE
IRAM_PHYS_END EQU LH7A400_IRAM_PHYS_END
LH7A400_CPLD_PHYS_BASE EQU 0x20000000
LH7A400_CPLD_PHYS_SIZE EQU 0x00010000
LH7A400_CPLD_PHYS_END EQU LH7A400_CPLD_PHYS_BASE + \
LH7A400_CPLD_PHYS_SIZE
SDRAM0_PHYS_BASE EQU 0xC0000000
SDRAM0_PHYS_SIZE EQU 0x02000000 ; 32MB
SDRAM0_PHYS_END EQU SDRAM0_PHYS_BASE + SDRAM0_PHYS_SIZE
SDRAM1_PHYS_BASE EQU 0xD0000000
SDRAM1_PHYS_SIZE EQU 0x02000000 ; 32MB
SDRAM1_PHYS_END EQU SDRAM1_PHYS_BASE + SDRAM1_PHYS_SIZE
SDRAM_PHYS_SIZE EQU (SDRAM0_PHYS_SIZE + SDRAM1_PHYS_SIZE)
IF :DEF: BOOTMODE
IF BOOTMODE=0x1
ASYNCFLASH_PHYS_BASE EQU 0x0
SYNCFLASH_PHYS_BASE EQU 0xF0000000
ELSE
ASYNCFLASH_PHYS_BASE EQU 0xF0000000
SYNCFLASH_PHYS_BASE EQU 0x0
ENDIF
ELSE
ASYNCFLASH_PHYS_BASE EQU 0xF0000000
SYNCFLASH_PHYS_BASE EQU 0x0
ENDIF
ASYNCFLASH_PHYS_SIZE EQU 0x400000 ; 4 MB
ASYNCFLASH_PHYS_END EQU (ASYNCFLASH_PHYS_BASE+ASYNCFLASH_PHYS_SIZE)
SYNCFLASH_PHYS_SIZE EQU 0x800000 ; 8 MB
SYNCFLASH_PHYS_END EQU (SYNCFLASH_PHYS_BASE+SYNCFLASH_PHYS_SIZE)
; ASYNCHFLASH_MMU_BASE must be coherent with virtual memory map chosen.
; ASYNCHFLASH_MMU_BASE is 0x90000000 for tt_init_basic mapping
ASYNCHFLASH_MMU_BASE EQU 0x90000000
SRAM_PHYS_BASE EQU 0x10000000
SRAM_PHYS_SIZE EQU 0x00200000 ; 2 MB
SRAM_PHYS_END EQU SRAM_PHYS_BASE + SRAM_PHYS_SIZE
UART1_BASE EQU 0x80000600
UART2_BASE EQU 0x80000700
UART3_BASE EQU 0x80000800
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; BootROM Load Addresses
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Translation Tables and Page Tables will be built from executable
; code at startup.
; Translation Table Base Address
IF :DEF: IRAMATZERO
IF IRAMATZERO = {TRUE}
TT_BASE_LADDR EQU ((IRAM_PHYS_END - 0x4000) - TRANS_TABLE_SIZE)
TT_BASE_XADDR EQU ((IRAM_PHYS_END - 0x4000) - TRANS_TABLE_SIZE)
ELSE
TT_BASE_LADDR EQU (SRAM_PHYS_END - TRANS_TABLE_SIZE)
TT_BASE_XADDR EQU (SRAM_PHYS_END - TRANS_TABLE_SIZE)
ENDIF
ELSE
TT_BASE_LADDR EQU (SRAM_PHYS_END - TRANS_TABLE_SIZE)
TT_BASE_XADDR EQU (SRAM_PHYS_END - TRANS_TABLE_SIZE)
ENDIF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Mode stack setup
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 64 MB stack top for MMU enabled
MMU_MODE_STACK_BASE EQU SDRAM_PHYS_SIZE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Data Store (top of IRAM)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Leave some Data Store at top of IRAM,
; used for miscellaneous data, save status
DATA_STORE_SIZE EQU 0x100 ;
DATA_STORE_BASE EQU (IRAM_PHYS_BASE + IRAM_PHYS_SIZE - \
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)
; CPU Board DIP Switch (S1) Status Store address
CPU_DIPSW_STORE_ADDR EQU (DATA_STORE_BASE + 0x8)
; Display Board DIP Switch (S1) Status Store address
DISP_DIPSW_STORE_ADDR EQU (DATA_STORE_BASE + 0xC)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Supervisor stack setup
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Size will be as needed, calling depth is expected to be minimal
; before Primary stack setup
; Stack usage is assumed to be Full Descending
;
; IRAM stack grows down below Data Store area.
IRAM_SVC_STACK_BASE EQU DATA_STORE_BASE
; SDRAM stack at top of SDRAM after MMU is enabled.
SDRAM_SVC_STACK_BASE EQU (0x0 + SDRAM_PHYS_SIZE)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Primary stack setup
; In SDRAM after MMU is enabled
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SVC_STACK_SIZE EQU 1024 ; primary running stack for Supervisor
IRQ_STACK_SIZE EQU 1024 ; primary running stack for IRQ
UNDEF_STACK_SIZE EQU 1024 ; 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.
SVC_STACK_BASE EQU SDRAM_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)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; DIP Switch Codes for LH7A400_evb_get_dipsw ()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CPU_DIP_SWITCH EQU 0
DISP_DIP_SWITCH EQU 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LED Utility Codes for LH7A400_evb_toggle/set_led ()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_D16 EQU 0x02
LED_D17 EQU 0x04
LED_ON EQU 0
LED_OFF EQU 1
LED_TOGGLE EQU 2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LH7A400 memory mapped registers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Interrupt Controller
INTC_REG_BASE EQU (APB_REG_PHYS_BASE + 0x500)
INTC_INTSR_OFFSET EQU 0x00
INTC_INTRSR_OFFSET EQU 0x04
INTC_INTENS_OFFSET EQU 0x08
INTC_INTENC_OFFSET EQU 0x0C
; SMC
SMC_REG_BASE EQU (AHB_REG_PHYS_BASE + 0x000)
SMC_BCR2_OFFSET EQU 0x08 ; CPLD
SMC_BCR2_INIT EQU 0x1000FBE0 ; CPLD
; CPLD
CPLD_REG_BASE EQU LH7A400_CPLD_PHYS_BASE
CPLD_CPUDIPSW_OFFSET EQU 0x00
CPLD_SEVEN_SEG_OFFSET EQU 0x0E
CPLD_DISPDIPSW_OFFSET EQU 0x0A
; Major Minor
CPLD_CPUDIPSW_DEMO_A_RUN EQU 0x80 ; b100
CPLD_CPUDIPSW_DEMO_B_RUN EQU 0xC0 ; b110
CPLD_CPUDIPSW_EIT_RUN EQU 0x00 ; b000
CPLD_CPUDIPSW_DEBUG_RUN EQU 0x20 ; b001
CPLD_CPUDIPSW_USER_RUN EQU 0x40 ; b010
CPLD_CPUDIPSW_NO_INIT_RUN EQU 0x3C ; b001 b111 xx
CPLD_CPUDIPSW_DCACHE_BIT EQU 0x01
CPLD_CPUDIPSW_ICACHE_BIT EQU 0x02
CPLD_CPUDIPSW_MAJOR_MODE EQU 0xE0
; CLKSC
CLKSC_REG_BASE EQU (APB_REG_PHYS_BASE + 0x400)
CLKSC_PWRSR_OFST EQU 0x00
CLKSC_PWRSR EQU 0x80000400
CLKSC_SCR0 EQU 0x80000440 ; scratch register 0
CLKSC_SCR1 EQU 0x80000444 ; scratch register 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -