osd-contiki/platform/stm32nucleo-spirit1/Makefile.stm32nucleo-spirit1
2015-07-24 16:30:10 +02:00

208 lines
6 KiB
Makefile

CONTIKI_TARGET_DIRS = .
ifeq ($(USE_SENSOR_BOARD),1)
COMPILE_SENSORS=TRUE
CFLAGS += -DCOMPILE_SENSORS
${info Compiling with Sensor Files}
else
COMPILE_SENSORS=FALSE
${info NOT compiling Sensor Files}
endif
ifeq ($(USE_SUBGHZ_BOARD),IDS01A4)
CFLAGS += -DX_NUCLEO_IDS01A4
${info Using 868 MHz SPIRIT1 Board}
else ifeq ($(USE_SUBGHZ_BOARD),IDS01A5)
CFLAGS += -DX_NUCLEO_IDS01A5
${info Using 915 MHz SPIRIT1 Board}
else
${info You must specify which SPIRIT1 board you use:}
${info make USE_SUBGHZ_BOARD=IDS01A4 for 868 MHz}
${info make USE_SUBGHZ_BOARD=IDS01A5 for 915 MHz}
${error }
endif
#Currently we support only GCC
GCC=1
CONTIKI_TARGET_DIRS += stm32cube-hal/Src
CONTIKI_TARGET_DIRS += dev
CONTIKI_TARGET_DIRS += drivers/stm32l1xx_nucleo
CONTIKI_TARGET_DIRS += drivers/x_nucleo_ids01ax
CONTIKI_TARGET_DIRS += drivers/Common
CONTIKI_TARGET_DIRS += drivers/spirit1/src drivers/spirit1/inc
ifeq ($(COMPILE_SENSORS),TRUE)
CONTIKI_TARGET_DIRS += drivers/x_nucleo_iks01a1
CONTIKI_TARGET_DIRS += drivers/sensors/hts221 drivers/sensors/lps25h drivers/sensors/lps25hb\
drivers/sensors/lsm6ds0 drivers/sensors/lsm6ds3 drivers/sensors/lis3mdl
endif
ARCH_DEV = button-sensor.c leds-arch.c
ARCH_DEV_SENSORS = temperature-sensor.c humidity-sensor.c pressure-sensor.c magneto-sensor.c acceleration-sensor.c gyroscope-sensor.c
ARCH_NUCLEOSPIRIT1 = contiki-spirit1-main.c uart-msg.c spirit1-arch.c spirit1.c node-id.c
ARCH_NUCLEOSPIRIT1_STM32CUBEHAL = spirit1_appli.c stm32l1xx_hal_msp.c stm32l1xx_it.c stm32cube_hal_init.c
ARCH_DRIVERS_STM32L1xx = stm32l1xx_nucleo.c
ARCH_DRIVERS_IDS01AX = radio_gpio.c radio_shield_config.c radio_spi.c
ARCH_DRIVERS_SPIRIT1 = \
SPIRIT1_Util.c \
SPIRIT_Aes.c \
SPIRIT_Calibration.c \
SPIRIT_Commands.c \
SPIRIT_Csma.c \
SPIRIT_DirectRF.c \
SPIRIT_General.c \
SPIRIT_Gpio.c \
SPIRIT_Irq.c \
SPIRIT_LinearFifo.c \
SPIRIT_Management.c \
SPIRIT_PktBasic.c \
SPIRIT_PktCommon.c \
SPIRIT_PktMbus.c \
SPIRIT_PktStack.c \
SPIRIT_Qi.c \
SPIRIT_Radio.c \
SPIRIT_Timer.c \
SPIRIT_Types.c
ARCH_DRIVERS_IKS01A1 = x_nucleo_iks01a1.c x_nucleo_iks01a1_hum_temp.c x_nucleo_iks01a1_imu_6axes.c \
x_nucleo_iks01a1_magneto.c x_nucleo_iks01a1_pressure.c
ARCH_DRIVERS_SENSORS = hts221.c \
lis3mdl.c \
lps25h.c \
lps25hb.c \
lsm6ds0.c \
lsm6ds3.c
ARCH+=$(ARCH_DEV)
ARCH+=$(ARCH_NUCLEOSPIRIT1)
ARCH+=$(ARCH_NUCLEOSPIRIT1_STM32CUBEHAL)
ARCH+=$(ARCH_DRIVERS_STM32L1xx)
ARCH+=$(ARCH_DRIVERS_IDS01AX)
ARCH+=$(ARCH_DRIVERS_SPIRIT1)
ifeq ($(COMPILE_SENSORS),TRUE)
ARCH+=$(ARCH_DEV_SENSORS)
ARCH+=$(ARCH_DRIVERS_IKS01A1)
ARCH+=$(ARCH_DRIVERS_SENSORS)
endif
CFLAGS += -DUSE_STM32L152_EVAL \
-DSTM32L152xE \
-DUSE_STM32L1XX_NUCLEO \
-DUSE_HAL_DRIVER \
-DUSE_STDPERIPH_DRIVER \
-DNO_EEPROM \
-DSPIRIT1_ST_SHIELD \
-DSPIRIT_MODULE \
-DUSE_SPIRIT1_DEFAULT
CFLAGS += -I. \
-I$(CONTIKI)/platform/$(TARGET)/ \
-I$(CONTIKI)/platform/$(TARGET)/stm32cube-hal/Inc \
-I$(CONTIKI)/platform/$(TARGET)/drivers/Common \
-I$(CONTIKI)/platform/$(TARGET)/divers/x_nucleo_ids01ax\
-I$(CONTIKI)/platform/$(TARGET)/drivers/spirit1/inc \
-I$(CONTIKI)/cpu/arm/stm32l152/CMSIS \
-I$(CONTIKI)/platform/$(TARGET)/drvers/stm32l1xx_nucleo \
-I$(CONTIKI)/cpu/arm/stm32l152/STM32L1xx_HAL_Driver/Inc \
-I$(CONTIKI)/cpu/arm/stm32l152 \
-I$(CONTIKI)/core \
-I$(CONTIKI)/platform/$(TARGET)/dev
ifdef UIP_CONF_IPV6
CFLAGS += -DWITH_UIP6=1
endif
ifndef CONTIKI_TARGET_MAIN
CONTIKI_TARGET_MAIN = contiki-spirit1-main.c
endif
CONTIKI_TARGET_SOURCEFILES += $(ARCH) $(CONTIKI_TARGET_MAIN)
MCU=stm32l152
CONTIKI_CPU=$(CONTIKI)/cpu/arm/stm32l152
include $(CONTIKI)/cpu/arm/stm32l152/Makefile.stm32l152
MODULES+=core/net \
core/net/mac core/net/mac/contikimac \
core/net/llsec
# build rules ------------------------------------
CLEAN += *.stm32nucleo-spirit1 symbols.c symbols.h contiki-stm32nucleo-spirit1.log
contiki-$(TARGET).a: ${addprefix $(OBJECTDIR)/,symbols.o}
help:
@echo A few useful make commands:
@echo make help - shows this help
@echo make TARGET=stm32nucleo-spirit1 savetarget - stores selection of target to avoid using TARGET= on every make invokation
@echo make program.upload - compiles and uploads program to connected board
@echo make program.upload IAR=1 - uses the IAR compiler instead of gcc (not implemented yet)
@echo make program.upload NODEID=x - uploads with node_id set to x
# Serialdump rules
ifeq ($(HOST_OS),Windows)
SERIALDUMP = serialdump-windows
# this ID is a string with which the node identifies itself as, and is used to
# find the proper /dev/comX-port in Cygwin to connect to.
CYGWIN_DEV_ID="stm32nucleo-spirit1 Spirit1 Platform"
# include $(CONTIKI)/tools/cygwin/Makefile.cygwin
endif
ifeq ($(HOST_OS),Darwin)
SERIALDUMP = serialdump-macos
endif
ifndef SERIALDUMP
# Assume Linux
SERIALDUMP = serialdump-linux
endif
# IAR/windows/cygwin only for now; after GCC port, see if stm32flash works with Linux
STLINKCLI=ST-LINK_CLI.exe
%.upload: %.hex
#Note: this command only uploads to a single connected device
#$(STLINKCLI) -ME || $(STLINKCLI) -ME || $(STLINKCLI) -ME || $(STLINKCLI) -ME
$(STLINKCLI) -Q -P $*.hex -V -Run
# devcon requires WinDriverKit, downloadable from microsoft.com
DEVCON=devcon.exe
DEVCON_ALLDEVS=$(shell $(DEVCON) find =USB | grep "STMicroelectronics STLink dongle" | cut -d " " -f 1)
devcon_enableonly:
devcon disable =USB @"USB\VID_0483&PID_3748\*"
devcon enable =USB @"$(ID)"
%.uploadall: %.hex
$(foreach D,$(DEVCON_ALLDEVS), echo D IS "$(D)" && make devcon_enableonly ID="$(D)" && make $*.upload && ) echo "Done"
devcon enable =USB @"USB\VID_0483&PID_3748\*"
login:
@echo "Connecting to $(COMPORT)"
$(CONTIKI)/tools/sky/$(SERIALDUMP) -b115200 $(COMPORT)
%.ramusage: %.$(TARGET)
$(NM) -S $< --size-sort --line-numbers | grep -v " T " | grep -v " t "
%.romusage: %.$(TARGET)
$(NM) -S $< --size-sort --line-numbers | grep -v " b " | grep -v " B " | grep -v " d " | grep -v " D "