include $(TOP)/$(BOARD_PATH)/board.mk

CFLAGS += \
  -flto \
  -DCFG_TUSB_MCU=OPT_MCU_NUC505

CPU_CORE ?= cortex-m4

# mcu driver cause following warnings
CFLAGS += -Wno-error=redundant-decls

LDFLAGS += -specs=nosys.specs -specs=nano.specs

# LD_FILE is defined in board.mk

SRC_C += \
  src/portable/nuvoton/nuc505/dcd_nuc505.c \
  hw/mcu/nuvoton/nuc505/Device/Nuvoton/NUC505Series/Source/system_NUC505Series.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/adc.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/clk.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/gpio.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/i2c.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/i2s.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/pwm.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/rtc.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/spi.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/spim.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/sys.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/timer.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/uart.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/wdt.c \
  hw/mcu/nuvoton/nuc505/StdDriver/src/wwdt.c

SRC_S += \
  hw/mcu/nuvoton/nuc505/Device/Nuvoton/NUC505Series/Source/GCC/startup_NUC505Series.S

INC += \
  $(TOP)/hw/mcu/nuvoton/nuc505/Device/Nuvoton/NUC505Series/Include \
  $(TOP)/hw/mcu/nuvoton/nuc505/StdDriver/inc \
  $(TOP)/hw/mcu/nuvoton/nuc505/CMSIS/Include \
  $(TOP)/$(BOARD_PATH)

FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM4F

# Note
# To be able to program the SPI flash, it need to boot with ICP mode "1011".
# However, in ICP mode, opencod cannot establish connection to the mcu.
# Therefore, there is no easy command line flash for NUC505
# It is probably better to just use Nuvoton NuMicro ICP programming on windows to program the board

# Flash using Nuvoton's openocd fork at https://github.com/OpenNuvoton/OpenOCD-Nuvoton
# Please compile and install it from github source
OPENOCD_NUVOTON_PATH ?= $(HOME)/app/OpenOCD-Nuvoton
flash: $(BUILD)/$(PROJECT).elf
	$(OPENOCD_NUVOTON_PATH)/src/openocd -s $(OPENOCD_NUVOTON_PATH)/tcl -f interface/nulink.cfg -f target/numicroM4.cfg -c "program $< reset exit"
