📄 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
*/
.include "LH7A400_mmu.i"
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LH7A400 xPSR bits
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
.equ MODE_USR , 0x010
.equ MODE_FIQ , 0x011
.equ MODE_IRQ , 0x012
.equ MODE_SVC , 0x013
.equ MODE_ABORT , 0x017
.equ MODE_UNDEF , 0x01b
.equ MODE_SYSTEM , 0x01F
.equ I_MASK , 0x080
.equ F_MASK , 0x040
.equ T_MASK , 0x020
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; EVB MEMORY (Physical)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Memory Mapped Register Bases
*/
.equ AHB_REG_PHYS_BASE , 0x80002000
.equ APB_REG_PHYS_BASE , 0x80000000
.equ LH7A400_IRAM_PHYS_BASE , 0xB0000000
.equ LH7A400_IRAM_PHYS_SIZE , 0x14000 /*; 80KB*/
.equ LH7A400_IRAM_PHYS_END , LH7A400_IRAM_PHYS_BASE + LH7A400_IRAM_PHYS_SIZE
.equ IRAM_PHYS_BASE , LH7A400_IRAM_PHYS_BASE
.equ IRAM_PHYS_SIZE , LH7A400_IRAM_PHYS_SIZE
.equ IRAM_PHYS_END , LH7A400_IRAM_PHYS_END
.equ LH7A400_CPLD_PHYS_BASE , 0x20000000
.equ LH7A400_CPLD_PHYS_SIZE , 0x00010000
.equ LH7A400_CPLD_PHYS_END , LH7A400_CPLD_PHYS_BASE + LH7A400_CPLD_PHYS_SIZE
.equ SDRAM0_PHYS_BASE , 0xC0000000
.equ SDRAM0_PHYS_SIZE , 0x02000000 /*; 32MB*/
.equ SDRAM0_PHYS_END , SDRAM0_PHYS_BASE + SDRAM0_PHYS_SIZE
.equ SDRAM1_PHYS_BASE , 0xD0000000
.equ SDRAM1_PHYS_SIZE , 0x02000000 /*; 32MB*/
.equ SDRAM1_PHYS_END , SDRAM1_PHYS_BASE + SDRAM1_PHYS_SIZE
.equ SDRAM_PHYS_SIZE , (SDRAM0_PHYS_SIZE + SDRAM1_PHYS_SIZE)
.ifdef BOOTMODE
.if BOOTMODE=0x1
.equ ASYNCFLASH_PHYS_BASE , 0x0
.equ SYNCFLASH_PHYS_BASE , 0xF0000000
.else
.equ ASYNCFLASH_PHYS_BASE , 0xF0000000
.equ SYNCFLASH_PHYS_BASE , 0x0
.endif
.else
.equ ASYNCFLASH_PHYS_BASE , 0xF0000000
.equ SYNCFLASH_PHYS_BASE , 0x0
.endif
.equ ASYNCFLASH_PHYS_SIZE , 0x400000 /*; 4 MB*/
.equ ASYNCFLASH_PHYS_END , (ASYNCFLASH_PHYS_BASE+ASYNCFLASH_PHYS_SIZE)
.equ SYNCFLASH_PHYS_SIZE , 0x800000 /*; 8 MB*/
.equ SYNCFLASH_PHYS_END , (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
*/
.equ ASYNCHFLASH_MMU_BASE , 0x90000000
.equ SRAM_PHYS_BASE , 0x00000000
.equ SRAM_PHYS_SIZE , 0x00200000 /*; 2 MB*/
.equ SRAM_PHYS_END , SRAM_PHYS_BASE + SRAM_PHYS_SIZE
.equ UART1_BASE , 0x80000600
.equ UART2_BASE , 0x80000700
.equ UART3_BASE , 0x80000800
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; BootROM Load Addresses
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Translation Tables and Page Tables will be built from executable
; code at startup.
; Translation Table Base Address
*/
.ifdef IRAMATZERO
.if IRAMATZERO = 1
.equ TT_BASE_LADDR , ((IRAM_PHYS_END - 0x4000) - TRANS_TABLE_SIZE)
.equ TT_BASE_XADDR , ((IRAM_PHYS_END - 0x4000) - TRANS_TABLE_SIZE)
.else
.equ TT_BASE_LADDR , (SRAM_PHYS_END - TRANS_TABLE_SIZE)
.equ TT_BASE_XADDR , (SRAM_PHYS_END - TRANS_TABLE_SIZE)
.endif
.else
.equ TT_BASE_LADDR , (SRAM_PHYS_END - TRANS_TABLE_SIZE)
.equ TT_BASE_XADDR , (SRAM_PHYS_END - TRANS_TABLE_SIZE)
.endif
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Mode stack setup
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 64 MB stack top for MMU enabled
*/
.equ MMU_MODE_STACK_BASE , SDRAM_PHYS_SIZE
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Data Store (top of IRAM)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Leave some Data Store at top of IRAM,
; used for miscellaneous data, save status
*/
.equ DATA_STORE_SIZE , 0x100
.equ DATA_STORE_BASE , (IRAM_PHYS_BASE + IRAM_PHYS_SIZE - DATA_STORE_SIZE)
/*
; Miscellaneous Data
; Boot Status Store address
*/
.equ BOOT_STATUS_STORE_ADDR , (DATA_STORE_BASE + 0x0)
/*; Software Reset Status Store address*/
.equ SRVAL_STATUS_STORE_ADDR , (DATA_STORE_BASE + 0x4)
/*; CPU Board DIP Switch (S1) Status Store address*/
.equ CPU_DIPSW_STORE_ADDR , (DATA_STORE_BASE + 0x8)
/*; Display Board DIP Switch (S1) Status Store address*/
.equ DISP_DIPSW_STORE_ADDR , (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.
*/
.equ SAVE_STATUS_STORE_ADDR , (DATA_STORE_BASE + DATA_STORE_SIZE - 0x10)
.equ SAVE_STATUS_SIZE , 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.
*/
.equ IRAM_SVC_STACK_BASE , DATA_STORE_BASE
/*; SDRAM stack at top of SDRAM after MMU is enabled.*/
.equ SDRAM_SVC_STACK_BASE , (0x0 + SDRAM_PHYS_SIZE)
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Primary stack setup
; In SDRAM after MMU is enabled
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
.equ SVC_STACK_SIZE , 1024 /*; primary running stack for Supervisor*/
.equ IRQ_STACK_SIZE , 1024 /*; primary running stack for IRQ*/
.equ UNDEF_STACK_SIZE , 1024 /*; may be used by debugger or SWI*/
.equ FIQ_STACK_SIZE , 256 /*; primary running stack for FIQ*/
.equ ABORT_STACK_SIZE , 256 /*; Memory error handler stack*/
.equ SYSTEM_STACK_SIZE , 4096 /*; not used if User Mode not entered.*/
/*.equ SVC_STACK_BASE , SDRAM_SVC_STACK_BASE*/
.equ SVC_STACK_BASE, 0x1fc000
.equ IRQ_STACK_BASE , (SVC_STACK_BASE - SVC_STACK_SIZE)
.equ UNDEF_STACK_BASE , (IRQ_STACK_BASE - IRQ_STACK_SIZE)
.equ FIQ_STACK_BASE , (UNDEF_STACK_BASE - UNDEF_STACK_SIZE)
.equ ABORT_STACK_BASE , (FIQ_STACK_BASE - FIQ_STACK_SIZE)
.equ SYSTEM_STACK_BASE , (ABORT_STACK_BASE - ABORT_STACK_SIZE)
.equ SYSTEM_STACK_LIMIT , (SYSTEM_STACK_BASE - SYSTEM_STACK_SIZE)
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; DIP Switch Codes for LH7A400_evb_get_dipsw ()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
.equ CPU_DIP_SWITCH , 0
.equ DISP_DIP_SWITCH , 1
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LED Utility Codes for LH7A400_evb_toggle/set_led ()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
.equ LED_D16 , 0x02
.equ LED_D17 , 0x04
.equ LED_ON , 0
.equ LED_OFF , 1
.equ LED_TOGGLE , 2
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LH7A400 memory mapped registers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Interrupt Controller
*/
.equ INTC_REG_BASE , (APB_REG_PHYS_BASE + 0x500)
.equ INTC_INTSR_OFFSET , 0x00
.equ INTC_INTRSR_OFFSET , 0x04
.equ INTC_INTENS_OFFSET , 0x08
.equ INTC_INTENC_OFFSET , 0x0C
/* SMC*/
.equ SMC_REG_BASE , (AHB_REG_PHYS_BASE + 0x000)
.equ SMC_BCR2_OFFSET , 0x08 /*; CPLD*/
.equ SMC_BCR2_INIT , 0x1000FBE0 /*; CPLD*/
/*; CPLD*/
.equ CPLD_REG_BASE , LH7A400_CPLD_PHYS_BASE
.equ CPLD_CPUDIPSW_OFFSET , 0x00
.equ CPLD_SEVEN_SEG_OFFSET , 0x0E
.equ CPLD_DISPDIPSW_OFFSET , 0x0A
/*; Major Minor*/
.equ CPLD_CPUDIPSW_DEMO_A_RUN , 0x80 /*; b100*/
.equ CPLD_CPUDIPSW_DEMO_B_RUN , 0xC0 /*; b110*/
.equ CPLD_CPUDIPSW_EIT_RUN , 0x00 /*; b000*/
.equ CPLD_CPUDIPSW_DEBUG_RUN , 0x20 /*; b001*/
.equ CPLD_CPUDIPSW_USER_RUN , 0x40 /*; b010*/
.equ CPLD_CPUDIPSW_NO_INIT_RUN , 0x3C /*; b001 b111 xx*/
.equ CPLD_CPUDIPSW_DCACHE_BIT , 0x01
.equ CPLD_CPUDIPSW_ICACHE_BIT, 0x02
.equ CPLD_CPUDIPSW_MAJOR_MODE , 0xE0
/*; CLKSC*/
.equ CLKSC_REG_BASE , (APB_REG_PHYS_BASE + 0x400)
.equ CLKSC_PWRSR_OFST , 0x00
.equ CLKSC_PWRSR , 0x80000400
.equ CLKSC_SCR0 , 0x80000440 /*; scratch register 0*/
.equ CLKSC_SCR1 , 0x80000444 /*; scratch register 1*/
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -