2015-07-31 17:11:27 +02:00
|
|
|
# Makefile for the STM32L152 Cortex M3 medium-density microcontroller
|
2015-07-24 16:30:10 +02:00
|
|
|
|
|
|
|
.SUFFIXES:
|
|
|
|
|
|
|
|
# CPU folder
|
|
|
|
CONTIKI_CPU=$(CONTIKI)/cpu/arm/stm32l152
|
|
|
|
|
2015-07-31 17:11:27 +02:00
|
|
|
# Source folders for contiki cpu files
|
|
|
|
CONTIKI_CPU_DIRS = .
|
2015-07-24 16:30:10 +02:00
|
|
|
|
|
|
|
# source files: proprietary sources for startup. Refer to CMSIS docs.
|
|
|
|
PROP_SYS_ARCH_C = system_stm32l1xx.c
|
|
|
|
|
|
|
|
|
|
|
|
ifdef IAR
|
|
|
|
include $(CONTIKI_CPU)/Makefile.stm32l152.iar
|
|
|
|
else
|
|
|
|
include $(CONTIKI_CPU)/Makefile.stm32l152.gnu
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
# source files: Contiki arch source files
|
|
|
|
CONTIKI_CPU_ARCH= watchdog.c \
|
|
|
|
rtimer-arch.c \
|
|
|
|
clock.c
|
|
|
|
|
|
|
|
ifdef GCC
|
2015-10-09 19:40:39 +02:00
|
|
|
CONTIKI_CPU_PORT= syscalls.c \
|
2015-07-31 17:11:27 +02:00
|
|
|
console.c \
|
2015-07-24 16:30:10 +02:00
|
|
|
crt.c \
|
|
|
|
uart.c
|
|
|
|
else
|
|
|
|
CONTIKI_CPU_PORT=
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UIPDRIVERS=
|
|
|
|
|
|
|
|
# to be implemented
|
|
|
|
ELFLOADER=
|
|
|
|
|
|
|
|
|
|
|
|
# add CPU folder to search path for .s (assembler) files
|
2015-07-31 17:11:27 +02:00
|
|
|
ifdef GCC
|
|
|
|
vpath %.s $(CONTIKI)/platform/$(TARGET)/stm32cube-lib/stm32cube-prj/startup_files/gcc
|
|
|
|
else
|
|
|
|
vpath %.s $(CONTIKI)/platform/$(TARGET)/stm32cube-lib/stm32cube-prj/startup_files/iar
|
|
|
|
endif
|
2015-07-24 16:30:10 +02:00
|
|
|
|
|
|
|
# include all files above
|
|
|
|
ssubst = ${patsubst %.s,%.o,${patsubst %.s79,%.o,$(1)}}
|
2015-07-31 17:11:27 +02:00
|
|
|
CONTIKI_TARGET_SOURCEFILES += $(PROP_SYS_ARCH_C) $(PROP_USB_ARCH) $(CONTIKI_CPU_ARCH) $(CONTIKI_CPU_PORT) $(ELFLOADER) $(UIPDRIVERS)
|
2015-07-24 16:30:10 +02:00
|
|
|
CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES)
|
|
|
|
PROJECT_OBJECTFILES += ${addprefix $(OBJECTDIR)/,$(CONTIKI_TARGET_MAIN:.c=.o)}
|
|
|
|
PROJECT_OBJECTFILES += ${addprefix $(OBJECTDIR)/,${call ssubst, $(PROP_SYS_ARCH_S)}}
|
|
|
|
#CONTIKI_OBJECTFILES += ${addprefix $(OBJECTDIR)/,${call ssubst, $(PROP_SYS_ARCH_S)}}
|
|
|
|
|
|
|
|
#------------------------------------------------ defines common for IAR and GCC
|
|
|
|
# set CPU speed in Hz, NB this might have unexpected side-effects if not at 32
|
|
|
|
# Mhz as it is not immediately clear how specialized the startup code etc is.
|
|
|
|
# That being said, setting to 24MHz seems to work fine, looking at Contiki clocks
|
|
|
|
# at least.
|
|
|
|
F_CPU = 32000000
|
|
|
|
|
|
|
|
CFLAGS+=\
|
|
|
|
-DHSE_VALUE=$(F_CPU)ul \
|
|
|
|
-DUSE_STDPERIPH_DRIVER \
|
|
|
|
-DSTM32L1XX_MD \
|
|
|
|
-DIAR_ARM_CM3 \
|
|
|
|
-DVECT_TAB_FLASH \
|
|
|
|
-DWITH_UIP6
|
|
|
|
|
|
|
|
# ------------------------------------------------------------------ Build rules
|
|
|
|
CUSTOM_RULE_C_TO_CE=yes
|
|
|
|
CUSTOM_RULE_C_TO_CO=yes
|
|
|
|
CUSTOM_RULE_C_TO_O=yes
|
|
|
|
CUSTOM_RULE_S_TO_OBJECTDIR_O=yes
|
|
|
|
CUSTOM_RULE_LINK=yes
|
|
|
|
|
|
|
|
%.o: %.c
|
|
|
|
$(CC) $(CFLAGS) $< -o $@
|
|
|
|
|
|
|
|
%.o: %.s
|
|
|
|
$(AS) $(ASFLAGS) $< -o $@
|
|
|
|
|
|
|
|
define FINALIZE_CYGWIN_DEPENDENCY
|
|
|
|
sed -e 's/ \([A-Z]\):\\/ \/cygdrive\/\L\1\//' -e 's/\\\([^ ]\)/\/\1/g' \
|
|
|
|
<$(@:.o=.P) >$(@:.o=.d); \
|
|
|
|
rm -f $(@:.o=.P)
|
|
|
|
endef
|
|
|
|
|
|
|
|
$(OBJECTDIR)/%.o: %.s
|
|
|
|
$(AS) $(ASFLAGS) $< -o $@
|
|
|
|
|
|
|
|
%.ce: %.o
|
|
|
|
$(LD) $(LDFLAGS) --relocatable -T $(CONTIKI_CPU)/merge-rodata.ld $< -o $@ $(LDLIBS)
|
|
|
|
$(STRIP) -K _init -K _fini --strip-unneeded -g -x $@
|
|
|
|
|
|
|
|
%-stripped.o: %.c
|
|
|
|
$(CC) $(CFLAGS) $< -o $@
|
|
|
|
$(STRIP) --strip $@
|
|
|
|
|
|
|
|
%-stripped.o: %.o
|
|
|
|
$(STRIP) --strip $@ $<
|
|
|
|
|
|
|
|
%.o: ${CONTIKI_TARGET}/loader/%.S
|
|
|
|
$(AS) -o $(notdir $(<:.S=.o)) $<
|
|
|
|
|
|
|
|
ifdef IAR
|
|
|
|
%.$(TARGET): %.co $(PROJECT_OBJECTFILES) contiki-$(TARGET).a $(STARTUPFOLDER) # $(OBJECTDIR)/empty-symbols.o
|
|
|
|
$(LD) $(LDFLAGS) -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(LDLIBS)
|
|
|
|
else
|
|
|
|
#CONTIKI_CPU_OBJS=$(CONTIKI_CPU_PORT:%.c=obj_stm32nucleo-spirit1/%.o)
|
|
|
|
CONTIKI_CPU_OBJS=$(CONTIKI_CPU_PORT:%.c=$(OBJECTDIR)/%.o)
|
|
|
|
%.$(TARGET): %.co $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) contiki-$(TARGET).a $(OBJECTDIR)/symbols.o
|
|
|
|
$(TRACE_LD)
|
|
|
|
$(Q)$(LD) $(LDFLAGS) $(TARGET_STARTFILES) ${filter-out %.a,$^} -Wl,-\( ${filter %.a,$^} $(TARGET_LIBFILES) -Wl,-\) $(CONTIKI_CPU_OBJS) -o $@
|
|
|
|
@echo >> contiki-$(TARGET).map
|
|
|
|
@$(SIZE) $(SIZEFLAGS) $@ >> contiki-$(TARGET).map
|
|
|
|
endif
|
|
|
|
|
|
|
|
%.hex: %.ihex
|
|
|
|
# @rm $*.hex
|
|
|
|
@mv -f $*.ihex $*.hex
|
|
|
|
|
|
|
|
.PHONY: symbols.c
|
|
|
|
|
|
|
|
symbols.c:
|
|
|
|
cp ${CONTIKI}/tools/empty-symbols.c symbols.c
|
|
|
|
cp ${CONTIKI}/tools/empty-symbols.h symbols.h
|
|
|
|
|
|
|
|
# Don't use core/loader/elfloader.c, use elfloader-otf.c instead
|
|
|
|
$(OBJECTDIR)/elfloader.o:
|
|
|
|
echo -n >$@
|
|
|
|
|