Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# Target triple for the build. Use arm-none-eabi if you are unsure.
|
||||
export TARGET_ARCH ?= arm-none-eabi
|
||||
|
||||
# define build specific options
|
||||
export CFLAGS_CPU = -mcpu=$(MCPU) -mlittle-endian -mthumb $(CFLAGS_FPU)
|
||||
ifneq (llvm,$(TOOLCHAIN))
|
||||
# Clang (observed with v3.7) does not understand -mno-thumb-interwork, only add if
|
||||
# not building with LLVM
|
||||
export CFLAGS += -mno-thumb-interwork
|
||||
endif
|
||||
export CFLAGS_LINK = -ffunction-sections -fdata-sections -fno-builtin -fshort-enums
|
||||
export CFLAGS_DBG ?= -ggdb -g
|
||||
export CFLAGS_OPT ?= -Os
|
||||
|
||||
export CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
|
||||
|
||||
export ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG)
|
||||
export LINKER_SCRIPT ?= $(LDSCRIPT)
|
||||
export LINKFLAGS += -T$(LINKER_SCRIPT) -Wl,--fatal-warnings
|
||||
|
||||
export LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -nostartfiles
|
||||
export LINKFLAGS += -Wl,--gc-sections
|
||||
|
||||
# all cortex MCU's use newlib as libc
|
||||
export USEMODULE += newlib
|
||||
|
||||
# set default for CPU_MODEL
|
||||
export CPU_MODEL ?= $(CPU)
|
||||
|
||||
# Temporary LLVM/Clang Workaround:
|
||||
# report cortex-m0 instead of cortex-m0plus if llvm/clang (<= 3.6.2) is used
|
||||
# llvm/clang version 3.6.2 still does not support the cortex-m0plus mcpu type
|
||||
ifeq (llvm,$(TOOLCHAIN))
|
||||
ifeq (cortex-m0plus,$(CPU_ARCH))
|
||||
LLVM_UNSUP = $(shell clang -target arm-none-eabi -mcpu=$(CPU_ARCH) -c -x c /dev/null -o /dev/null \
|
||||
> /dev/null 2>&1 || echo 1 )
|
||||
ifeq (1,$(LLVM_UNSUP))
|
||||
CPU_ARCH = cortex-m0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# export the CPU model and architecture
|
||||
MODEL = $(shell echo $(CPU_MODEL) | tr 'a-z' 'A-Z')
|
||||
export CFLAGS += -DCPU_MODEL_$(MODEL)
|
||||
ARCH = $(shell echo $(CPU_ARCH) | tr 'a-z-+' 'A-Z__')
|
||||
export CFLAGS += -DCPU_ARCH_$(ARCH)
|
||||
|
||||
# set the compiler specific CPU and FPU options
|
||||
ifeq ($(CPU_ARCH),cortex-m4f)
|
||||
# TODO: enable hard floating points for the M4F once the context save/restore
|
||||
# code is adjusted to take care of FPU registers
|
||||
#export CFLAGS_FPU += -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
||||
export MCPU := cortex-m4
|
||||
endif
|
||||
CFLAGS_FPU ?= -mfloat-abi=soft
|
||||
export MCPU ?= $(CPU_ARCH)
|
||||
|
||||
# CMSIS DSP needs to know about the CPU core
|
||||
ifneq (,$(filter cmsis-dsp,$(USEPKG)))
|
||||
# definition needed to use cmsis-dsp headers
|
||||
ifeq ($(CPU_ARCH),cortex-m0)
|
||||
export CFLAGS += -DARM_MATH_CM0
|
||||
else ifeq ($(CPU_ARCH),cortex-m0plus)
|
||||
export CFLAGS += -DARM_MATH_CM0PLUS
|
||||
else ifeq ($(CPU_ARCH),cortex-m3)
|
||||
export CFLAGS += -DARM_MATH_CM3
|
||||
else ifeq ($(CPU_ARCH),cortex-m4)
|
||||
export CFLAGS += -DARM_MATH_CM4
|
||||
else ifeq ($(CPU_ARCH),cortex-m4f)
|
||||
export CFLAGS += -DARM_MATH_CM4
|
||||
else ifeq ($(CPU_ARCH),cortex-m7)
|
||||
export CFLAGS += -DARM_MATH_CM7
|
||||
endif
|
||||
endif
|
||||
|
||||
export SOURCE_LDSCRIPT = $(RIOTCPU)/$(CPU)/ldscripts/$(LINKER_SOURCE_SCRIPT)
|
||||
export LDSCRIPT = $(BINDIR)/$(CPU_MODEL).ld
|
||||
|
||||
# use the nano-specs of Newlib when available
|
||||
USEMODULE += newlib_nano
|
||||
export USE_NANO_SPECS = 1
|
||||
|
||||
# Avoid overriding the default rule:
|
||||
all:
|
||||
|
||||
# Rule to generate assembly listings from ELF files:
|
||||
%.lst: %.elf
|
||||
$(OBJDUMP) $(OBJDUMPFLAGS) $< > $@
|
||||
|
||||
### This rule is used to generate the correct linker script
|
||||
LDGENFLAGS += $(CFLAGS)
|
||||
LDGENFLAGS += -x c -P -E
|
||||
|
||||
# NB: Assumes LDSCRIPT was not overridden and is in $(OBJECTDIR)
|
||||
$(LDSCRIPT): $(SOURCE_LDSCRIPT) $(RIOTBUILD_CONFIG_HEADER_C) | $(BINDIR)
|
||||
$(Q)$(CC) $(LDGENFLAGS) $< | grep -v '^\s*#\s*pragma\>' > $@
|
||||
@@ -0,0 +1 @@
|
||||
include $(RIOTMAKE)/arch/cortex-common.inc.mk
|
||||
@@ -0,0 +1 @@
|
||||
include $(RIOTMAKE)/arch/cortex-common.inc.mk
|
||||
@@ -0,0 +1 @@
|
||||
include $(RIOTMAKE)/arch/cortex-common.inc.mk
|
||||
@@ -0,0 +1,66 @@
|
||||
# Target triple for the build.
|
||||
export TARGET_ARCH ?= mips-mti-elf
|
||||
|
||||
export ABI=32
|
||||
|
||||
# Portable 'lowercase' func.
|
||||
lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
|
||||
|
||||
# Default values for the linker script symbols listed below are
|
||||
# defined in the linker script.
|
||||
|
||||
# These are linker script symbols that are prefixed with '__"
|
||||
priv_symbols = MEMORY_BASE MEMORY_SIZE STACK
|
||||
priv_symbols += ENABLE_XPA
|
||||
priv_symbols += FLUSH_TO_ZERO
|
||||
priv_symbols += FLASH_START APP_START FLASH_APP_START
|
||||
priv_symbols += ISR_VEC_SPACE ISR_VECTOR_COUNT
|
||||
|
||||
comma := ,
|
||||
|
||||
# A bit of makefile magic:
|
||||
# foreach symbol in overridable ld-symbols :
|
||||
# If symbol has a value, produce a linker argument for that symbol.
|
||||
MIPS_HAL_LDFLAGS = $(foreach a,$(priv_symbols),$(if $($a),-Wl$(comma)--defsym$(comma)__$(call lc,$(a))=$($a)))
|
||||
|
||||
ifeq ($(ROMABLE),1)
|
||||
MIPS_HAL_LDFLAGS += -T bootcode.ld
|
||||
endif
|
||||
|
||||
# define build specific options
|
||||
# Remove -std=gnu99 once the MIPS toolchain headers are updated to include upstream
|
||||
# newlib commit 81c17949f0419d1c4fee421c60987ea1149522ae
|
||||
# https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=commitdiff;h=81c17949f0419d1c4fee421c60987ea1149522ae
|
||||
# Otherwise we get an error about a missing declaration of strnlen in some parts.
|
||||
export CFLAGS += -std=gnu99
|
||||
export CFLAGS_CPU = -EL -mabi=$(ABI)
|
||||
export CFLAGS_LINK = -ffunction-sections -fno-builtin -fshort-enums -fdata-sections
|
||||
export CFLAGS_DBG = -g3
|
||||
export CFLAGS_OPT = -Os
|
||||
|
||||
export CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_OPT) $(CFLAGS_DBG)
|
||||
|
||||
ifeq ($(USE_HARD_FLOAT),1)
|
||||
export CFLAGS += -mhard-float -DMIPS_HARD_FLOAT
|
||||
else
|
||||
#hard-float is the default so we must set soft-float
|
||||
export CFLAGS += -msoft-float
|
||||
export LINKFLAGS += -msoft-float
|
||||
endif
|
||||
|
||||
ifeq ($(USE_DSP),1)
|
||||
export CFLAGS += -mdsp -DMIPS_DSP
|
||||
endif
|
||||
|
||||
ifeq ($(TOOLCHAIN),llvm)
|
||||
# The MIPS toolchain headers in assembly mode are not compatible with Clang
|
||||
export CCAS = $(PREFIX)gcc
|
||||
export CCASUWFLAGS += -target $(TARGET_ARCH)
|
||||
endif
|
||||
|
||||
export ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_OPT) $(CFLAGS_DBG)
|
||||
|
||||
export LINKFLAGS += $(MIPS_HAL_LDFLAGS)
|
||||
export LINKFLAGS += -L$(RIOTCPU)/$(CPU)/ldscripts
|
||||
export LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT)
|
||||
export LINKFLAGS += -Wl,--gc-sections
|
||||
@@ -0,0 +1,14 @@
|
||||
# Target architecture for the build. Use msp430 if you are unsure.
|
||||
export TARGET_ARCH ?= msp430
|
||||
|
||||
# define build specific options
|
||||
CFLAGS_CPU = -mmcu=$(CPU_MODEL) -std=gnu99
|
||||
CFLAGS_LINK = -ffunction-sections -fdata-sections
|
||||
CFLAGS_DBG ?= -gdwarf-2
|
||||
CFLAGS_OPT ?= -Os
|
||||
# export compiler flags
|
||||
export CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
|
||||
# export assmebly flags
|
||||
export ASFLAGS += $(CFLAGS_CPU) --defsym $(CPU_MODEL)=1 $(CFLAGS_DBG)
|
||||
# export linker flags
|
||||
export LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -Wl,--gc-sections -static -lgcc
|
||||
@@ -0,0 +1,4 @@
|
||||
include $(RIOTMAKE)/arch/riscv.inc.mk
|
||||
|
||||
export CFLAGS_CPU = -march=rv32imc_zicsr -mabi=ilp32
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
# Target triple for the build. Use riscv-none-elf if you are unsure.
|
||||
export TARGET_ARCH ?= riscv-none-elf
|
||||
|
||||
export CFLAGS_LINK = -ffunction-sections -fdata-sections -fno-builtin -fshort-enums
|
||||
export CFLAGS_DBG ?= -ggdb -g
|
||||
export CFLAGS_OPT ?= -Os
|
||||
export CPU_ARCH = riscv
|
||||
|
||||
export CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
|
||||
|
||||
export ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG)
|
||||
export LINKER_SCRIPT ?= $(LDSCRIPT)
|
||||
export LINKFLAGS += -T$(LINKER_SCRIPT) -Wl,--fatal-warnings
|
||||
|
||||
export LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -nostartfiles
|
||||
export LINKFLAGS += -Wl,--gc-sections -Wl,--no-warn-rwx-segments -Wl,--no-warn-mismatch
|
||||
|
||||
# all cortex MCU's use newlib as libc
|
||||
export USEMODULE += newlib
|
||||
|
||||
# set default for CPU_MODEL
|
||||
export CPU_MODEL ?= $(CPU)
|
||||
|
||||
# export the CPU model and architecture
|
||||
MODEL = $(shell echo $(CPU_MODEL) | tr 'a-z' 'A-Z')
|
||||
export CFLAGS += -DCPU_MODEL_$(MODEL)
|
||||
ARCH = $(shell echo $(CPU_ARCH) | tr 'a-z-+' 'A-Z__')
|
||||
export CFLAGS += -DCPU_ARCH_$(ARCH)
|
||||
|
||||
# set the compiler specific CPU and FPU options
|
||||
export MCPU ?= $(CPU_ARCH)
|
||||
|
||||
export SOURCE_LDSCRIPT = $(RIOTCPU)/$(CPU)/ldscripts/$(LINKER_SOURCE_SCRIPT)
|
||||
$(inifo $(SOURCE_LDSCRIPT))
|
||||
export LDSCRIPT = $(BINDIR)/$(CPU_MODEL).ld
|
||||
|
||||
# use the nano-specs of Newlib when available
|
||||
USEMODULE += newlib_nano
|
||||
export USE_NANO_SPECS = 1
|
||||
|
||||
# Avoid overriding the default rule:
|
||||
all:
|
||||
|
||||
# Rule to generate assembly listings from ELF files:
|
||||
%.lst: %.elf
|
||||
$(OBJDUMP) $(OBJDUMPFLAGS) $< > $@
|
||||
|
||||
### This rule is used to generate the correct linker script
|
||||
LDGENFLAGS += $(CFLAGS)
|
||||
LDGENFLAGS += -x c -P -E
|
||||
|
||||
# NB: Assumes LDSCRIPT was not overridden and is in $(OBJECTDIR)
|
||||
$(LDSCRIPT): $(SOURCE_LDSCRIPT) $(RIOTBUILD_CONFIG_HEADER_C) | $(BINDIR)
|
||||
$(Q)$(CC) $(LDGENFLAGS) $< | grep -v '^\s*#\s*pragma\>' > $@
|
||||
Reference in New Issue
Block a user