arch: arc: update the ARC port

* add basic synopsys arc em processor support
* add basic arc nsim em virtual board support
* add basic arc mwdt toolchain support

Signed-off-by: Watson Zeng <zhiwei@synopsys.com>
This commit is contained in:
Watson Zeng
2020-03-25 17:11:52 +08:00
committed by Jingru
parent 13eaef3d46
commit 0d4593ee5e
169 changed files with 871 additions and 46371 deletions

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>blinky</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>Makefile</name>
<type>1</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/board/ARC_NSIM_EM/GCC/hello_world/Makefile</location>
</link>
<link>
<name>tencentos</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>tencentos/arch</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/arch</location>
</link>
<link>
<name>tencentos/board</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/board</location>
</link>
<link>
<name>tencentos/components</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/components</location>
</link>
<link>
<name>tencentos/devices</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/devices</location>
</link>
<link>
<name>tencentos/kernel</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/kernel</location>
</link>
<link>
<name>tencentos/net</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/net</location>
</link>
<link>
<name>tencentos/osal</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/osal</location>
</link>
<link>
<name>tencentos/platform</name>
<type>2</type>
<location>C:/Users/jingru/Documents/git/embarc/TencentOS-tiny/platform</location>
</link>
</linkedResources>
<variableList>
<variable>
<name>TencentOS_ROOT</name>
<value>file:/C:/Users/jingru/Documents/git/tencentos/TencentOS-tiny</value>
</variable>
</variableList>
</projectDescription>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<windowLayout version="3" model="sash">
<mdiFrame model="sash" x="297" y="114" width="1200" height="800">
<splitPane orientation="horizontal" divider="510">
<splitPane orientation="vertical" divider="409">
<pane>
<tabbedPanel name="locals" selected="1">
<toolBar id="0" visible="0"/>
<toolBar id="1" visible="1"/>
<toolBar id="2" visible="0"/>
</tabbedPanel>
</pane>
<pane>
<tabbedPanel name="stack">
<toolBar id="0" visible="0"/>
<toolBar id="1" visible="1"/>
<toolBar id="2" visible="0"/>
</tabbedPanel>
<tabbedPanel name="globals" selected="1">
<toolBar id="0" visible="0"/>
<toolBar id="1" visible="1"/>
<toolBar id="2" visible="0"/>
<valueUpdate name="regex_name" value="k_next_task"/>
</tabbedPanel>
</pane>
</splitPane>
<splitPane orientation="vertical" divider="478">
<pane>
<tabbedPanel name="source" selected="1">
<toolBar id="0" visible="0"/>
<toolBar id="1" visible="1"/>
<toolBar id="2" visible="0"/>
<toolBar id="3" visible="0"/>
</tabbedPanel>
</pane>
<pane>
<tabbedPanel name="break">
<toolBar id="0" visible="0"/>
<toolBar id="1" visible="1"/>
<toolBar id="2" visible="0"/>
</tabbedPanel>
<tabbedPanel name="watchdisp">
<toolBar id="0" visible="0"/>
<toolBar id="1" visible="1"/>
<toolBar id="2" visible="0"/>
</tabbedPanel>
<tabbedPanel name="command" selected="1"/>
</pane>
</splitPane>
</splitPane>
</mdiFrame>
</windowLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Config>
<CurrentWindowLayoutFile>C:\Users\zhiwei\Desktop\embARC_Workspace\TencentOS\TencentOS-tiny\board\ARC_NSIM_EM\hello_world\.sc.project\.sc.project.windows</CurrentWindowLayoutFile>
</Config>

View File

@@ -0,0 +1,90 @@
A6_mpu=1
AC600_dcache=1
AC600_icache=1
AC_dcache=1
AC_dcache_line_size=32
AC_dcache_repalg=Random
AC_dcache_size=16384
AC_dcache_ways=2
AC_icache=1
AC_icache_line_size=32
AC_icache_repalg=Random
AC_icache_size=16384
AC_icache_ways=2
ACa7_dcache=1
ACa7_icache=1
ARC5_Core_Version=3
ARC6_Core_Version=3
ARC7_Core_Version=3
ARC_DSP_memory=ARC_xy
ARC_agu=large
ARC_agu_accord=1
ARC_agu_write=4
ARC_barrel_shifter=1
ARC_bitscan=1
ARC_code_density=1
ARC_dcache_feature=2
ARC_dccm_interleave=1
ARC_default_ext_interrupts=0
ARC_default_interrupts=0
ARC_div_rem=radix2
ARC_dma=1
ARC_dmac_channels=2
ARC_dmac_fifo_depth=2
ARC_dmac_int_config=single_internal
ARC_dmac_registers=0
ARC_dsp2=1
ARC_dsp_accshift=full
ARC_dsp_complex=1
ARC_dsp_divsqrt=radix2
ARC_dsp_itu=1
ARC_ext_interrupt_num=16
ARC_fast_interrupt=1
ARC_fsfpus_div=Slow
ARC_fsfpus_mpy=Slow
ARC_icache_feature=2
ARC_interrupt_baseaddr=0x0
ARC_interrupt_num=20
ARC_interrupt_priorities=4
ARC_interrupt_vector_count=20
ARC_mpu_region=16
ARC_mpu_version=-mpu
ARC_mpy_emoption=mpyd
ARC_mpy_hsoption=mpyd
ARC_parallel_port_address=0x378
ARC_pct_counters=8
ARC_reset_on_restart=1
ARC_rgf_num_wr_ports=2
ARC_shift_assist=1
ARC_smart_stack_entries=8
ARC_swap=1
ARC_target=ARCSIM
ARC_timer0=1
ARC_timer0_level=1
ARC_timer1=1
ARC_timer1_level=0
ARC_turbo_boost=1
ARC_xy_config=dccm_y
ARC_xy_interleave=1
ARC_xy_size=8K
ARC_xy_ybase=0xe0000000
Execute_to_main=0
Local_symbols=1
Program_toggles_off=binary_stdin,binary_stdout,flush_pipe,cr_for_more
Program_toggles_on=load_at_paddr
cmd_line_option=-OKN -action_points\=2 -dmp_peripheral -OKN -action_points\=2 -dmp_peripheral -OKN -action_points\=2 -dmp_peripheral
dccm_base=0x80000000
dccm_size=0x80000
fpu_mac=1
fpuda=1
fpus_div=1
hw_stack_checking=1
iccm0_base=0x00000000
iccm0_size=0x80000
iss_av2_override=0
program=build/TencentOS_tiny.elf
v2em_core_register_per_bank=32
v2em_core_version=3
v2em_regis_bank=2
v2hs_core_version=3
which_arc=ARCV2EM

View File

@@ -0,0 +1,269 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.3.0] date: [Mon Aug 05 10:29:11 CST 2019]
##########################################################################################################################
# ------------------------------------------------
# Generic Makefile (based on gcc)
#
# ChangeLog :
# 2017-02-10 - Several enhancements + project update mode
# 2015-07-22 - first version
# ------------------------------------------------
######################################
# target
######################################
TARGET = TencentOS_tiny
APPLICATION = hello_world
######################################
# building variables
######################################
# debug build?
DEBUG = 1
# optimization
OPT = -O0
TOP_DIR = ../../..
#######################################
# paths
#######################################
# Build path
BUILD_DIR = build
#######################################
# embarc_bsp relative conifg
#######################################
BOARD ?= nsim
BD_VER ?= 10
CUR_CORE ?= arcem
TOOLCHAIN ?= mw
OLEVEL ?= O0
OUT_DIR_ROOT ?= $(BUILD_DIR)
export BOARD
export BD_VER
export CUR_CORE
export TOOLCHAIN
export OUT_DIR_ROOT
export OLEVEL
EMBARC_BSP_ROOT = $(TOP_DIR)/platform/vendor_bsp/Synopsys/ARC/embarc_bsp
EMBARC_BSP_TEST_FILE = $(EMBARC_BSP_ROOT)/arc/startup/arc_startup.s
ifeq ($(wildcard $(EMBARC_BSP_TEST_FILE)),)
$(info )
$(info )
$(info )
$(info ######################################################################################################)
$(info # #)
$(info # embarc_bsp not exist!!! #)
$(info # please git embarc_bsp from github #)
$(info # run cmd blew in folder <TOP_DIR>/platform/vendor_bsp/Synopsys/ARC>: #)
$(info # git clone https://github.com/foss-for-synopsys-dwc-arc-processors/embarc_bsp.git -b upstream #)
$(info # #)
$(info ######################################################################################################)
$(info )
$(info )
$(info )
$(error [Makefile.error]: embarc_bsp not exist!!!)
endif
EMBARC_ROOT = $(EMBARC_BSP_ROOT)
export EMBARC_ROOT
EMBARC_OUT_DIR = $(OUT_DIR_ROOT)/obj_$(BOARD)_$(BD_VER)/$(TOOLCHAIN)_$(CUR_CORE)
ifeq ($(TOOLCHAIN),mw)
COMPILER_ARG_FILE := $(EMBARC_OUT_DIR)/embARC_generated/ccac.arg
LDF_FILE := $(EMBARC_OUT_DIR)/linker_mw.ldf
MDB_ARG_FILE := $(EMBARC_OUT_DIR)/embARC_generated/mdb.arg
else
COMPILER_ARG_FILE := $(EMBARC_OUT_DIR)/embARC_generated/gcc.arg
LDF_FILE := $(EMBARC_OUT_DIR)/linker_gnu.ldf
endif
######################################
# source
######################################
# C sources
KERNEL_SRC = \
${wildcard $(TOP_DIR)/kernel/core/*.c}
C_SOURCES += $(KERNEL_SRC)
ARCH_SRC = \
${wildcard $(TOP_DIR)/arch/arc/arcem/*.c} \
${wildcard $(TOP_DIR)/arch/arc/common/*.c}
C_SOURCES += $(ARCH_SRC)
CMSIS_SRC = \
${wildcard $(TOP_DIR)/osal/cmsis_os/*.c}
C_SOURCES += $(CMSIS_SRC)
APPLICATION_SRC = \
${wildcard $(TOP_DIR)/board/ARC_NSIM_EM/BSP/Src/*.c} \
${wildcard $(TOP_DIR)/examples/$(APPLICATION)/*.c}
C_SOURCES += $(APPLICATION_SRC)
# ASM sources
ASM_SOURCES = \
$(TOP_DIR)/arch/arc/arcem/port_s.s
ifeq ($(TOOLCHAIN),mw)
PREFIX =
CC = $(PREFIX)ccac
AS = $(PREFIX)ccac
SZ = $(PREFIX)size
OBJCOPY = $(PREFIX)elf2bin
ELF2HEX = $(PREFIX)elf2hex
ELF2HEX_INOPT = -Q -I
ELF2HEX_OUTOPT = -o
ELF2BIN_OPT =
else
endif
#######################################
# CFLAGS
#######################################
# C defines
NSIM_STACK_CHECK := -DARC_FEATURE_STACK_CHECK=0
# 1: enable hardware stack check, 0 disable hardware stack check
ifeq ($(TOOLCHAIN),mw)
TOOLCHAIN_DEF := -D__MW__
else
TOOLCHAIN_DEF := -D__GNU__ -D_HAVE_LIBGLOSS_
endif
C_DEFS = \
$(TOOLCHAIN_DEF) \
$(NSIM_STACK_CHECK) \
-DBOARD_NSIM \
-DCURRENT_CORE=$(CUR_CORE) \
-DEMBARC_TCF_GENERATED \
-DHW_VERSION=$(BD_VER) \
-DLIB_CONSOLE \
-DLIB_CLIB \
-D_HEAPSIZE=8192 \
-D_HOSTLINK_ \
-D_NSIM_ \
-D_STACKSIZE=2048 \
-DARC_FEATURE_STACK_CHECK=0
# include dirs
ARCH_INC = \
-I $(TOP_DIR)/arch/arc/arcem \
-I $(TOP_DIR)/arch/arc/common/include
C_INCLUDES += $(ARCH_INC)
BOARD_INC = \
-I $(TOP_DIR)/board/ARC_NSIM_EM/BSP/Inc
C_INCLUDES += $(BOARD_INC)
KERNEL_INC = \
-I $(TOP_DIR)/kernel/core/include \
-I $(TOP_DIR)/kernel/pm/include \
-I $(TOP_DIR)/kernel/hal/include
C_INCLUDES += $(KERNEL_INC)
CMSIS_INC = \
-I $(TOP_DIR)/osal/cmsis_os
C_INCLUDES += $(CMSIS_INC)
EMBARC_BSP_INC = \
-I $(EMBARC_BSP_ROOT)/board \
-I $(EMBARC_BSP_ROOT)/board/nsim/configs/10 \
-I $(EMBARC_BSP_ROOT)/include \
-I $(EMBARC_BSP_ROOT)/include/arc \
-I $(EMBARC_BSP_ROOT)/include/device/designware \
-I $(EMBARC_BSP_ROOT)/include/device/subsystem \
-I $(EMBARC_BSP_ROOT)/library \
-I $(EMBARC_OUT_DIR)/embARC_generated
C_INCLUDES += $(EMBARC_BSP_INC)
ifeq ($(TOOLCHAIN),mw)
ASFLAGS = @$(COMPILER_ARG_FILE) -Hnoccm -Hnosdata -Wincompatible-pointer-types -Hnocopyr -Hasmcpp -$(OLEVEL) -g $(C_DEFS) $(C_INCLUDES) -MMD -MT $@ -MF $@.d
CFLAGS = @$(COMPILER_ARG_FILE) -Hnoccm -Hnosdata -Wincompatible-pointer-types -Hnocopyr -Hnocplus -$(OLEVEL) -g $(C_DEFS) $(C_INCLUDES) -MMD -MT $@ -MF $@.d
LDFLAGS = -Hhostlink @$(COMPILER_ARG_FILE) -Hnocopyr -Hnosdata -Hnocrt -Hldopt=-Coutput=$(BUILD_DIR)/mw_arcem.map -Hldopt=-Csections -Hldopt=-Ccrossfunc -Hldopt=-Csize -zstdout $(LDF_FILE)
else
endif
# default action: build all
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
#######################################
# build the application
#######################################
# list of objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES_S:.S=.o)))
vpath %.S $(sort $(dir $(ASM_SOURCES_S)))
# EMBARC_PREBUILT_LIBRARY = -Hldopt=-Bgrouplib
EMBARC_PREBUILT_LIBRARY = $(EMBARC_OUT_DIR)/libembarc.a
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/board/board.o
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/arc/startup/arc_startup.o
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/arc/startup/arc_cxx_support.o
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/libboard_nsim.a
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/libcpuarc.a
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/libembarc_libc.a
# EMBARC_PREBUILT_LIBRARY += $(EMBARC_OUT_DIR)/libembarc_console.a
build_embarc_lib: | $(BUILD_DIR)
make -f $(EMBARC_BSP_ROOT)/options/options.mk V=1 embarc_lib
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
$(CC) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
$(AS) -c $(ASFLAGS) $< -o $@
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
$(AS) -c $(ASFLAGS) $< -o $@
$(BUILD_DIR)/$(TARGET).elf: build_embarc_lib $(OBJECTS) Makefile
$(CC) $(LDFLAGS) $(OBJECTS) $(EMBARC_PREBUILT_LIBRARY) -o $@
$(SZ) $@
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(ELF2HEX) $(ELF2HEX_INOPT) $< $(ELF2HEX_OUTOPT) $@
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(OBJCOPY) $(ELF2BIN_OPT) $< $@
$(BUILD_DIR):
mkdir $@
#######################################
# clean up
#######################################
clean:
-rm -fR $(BUILD_DIR)
nsim_debug : $(BUILD_DIR)/$(TARGET).elf
mdb -nooptions -nogoifmain -toggle=include_local_symbols=1 -nsim -off=binary_stdin -off=binary_stdout -on=load_at_paddr -on=reset_upon_restart -off=flush_pipe -off=cr_for_more -OKN @$(MDB_ARG_FILE) $<
#######################################
# dependencies
#######################################
-include $(wildcard $(BUILD_DIR)/*.d)
# *** EOF ***

Binary file not shown.