Files @ 988bab1cb593
Branch filter:

Location: therm/Makefile

Ethan Zonca
Got things mostly compiling, disabled SPI and USB for now because of RAM overflow
TARGET:=therm
TOOLCHAIN_PATH:=/usr/bin
TOOLCHAIN_PREFIX:=arm-none-eabi
OPTLVL:=3 # Optimization level, can be [0, 1, 2, 3, s].

#PROJECT_NAME:=$(notdir $(lastword $(CURDIR)))
TOP:=$(shell readlink -f "../..")
LIBDIR:=libraries

HAL_LIB:=$(LIBDIR)/STM32F0xx_HAL_Driver
USB_LIB:=$(LIBDIR)/STM32_USB_Device_Library

STARTUP:=$(LIBDIR)/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc

SYSTEMDIR:=$(LIBDIR)/CMSIS/Device/ST/STM32F0xx/Source/Templates # Houses system_STM32f0xx.c

LINKER_SCRIPT:=$(CURDIR)/stm32-flash.ld

# Local libs
INCLUDE=-I$(CURDIR)

# CMSIS
INCLUDE+=-I$(LIBDIR)/CMSIS/Include
INCLUDE+=-I$(LIBDIR)/CMSIS/Device/ST/STM32F0xx/Include

# USB
INCLUDE+=-I$(USB_LIB)/Class/CDC
INCLUDE+=-I$(USB_LIB)/Core

# HAL
INCLUDE+=-I$(HAL_LIB)/Inc


# vpath is used so object files are written to the current directory instead
# of the same directory as their source files
vpath %.c $(HAL_LIB)/Src \
          $(USB_LIB) \
          $(USB_LIB)/Class/CDC \
          $(USB_LIB)/Core \
	  $(SYSTEMDIR)

vpath %.s $(STARTUP)

ASRC=$(STARTUP)/startup_stm32f042x6.s

# Project Source Files
SRC=main.c
SRC+=ssd1306.c
SRC+=eeprom_min.c
SRC+=gpio.c
SRC+=spi.c
SRC+=clock.c
SRC+=stringhelpers.c

SRC+=stm32f0xx_it.c
SRC+=stm32f0xx_hal_msp.c

SRC+=usb_device.c
SRC+=usbd_cdc_if.c
SRC+=usbd_conf.c
SRC+=usbd_desc.c

# Standard Peripheral Source Files
SRC+=system_stm32f0xx.c

SRC+=stm32f0xx_hal.c
SRC+=stm32f0xx_hal_spi.c
SRC+=stm32f0xx_hal_pcd.c
SRC+=stm32f0xx_hal_pcd_ex.c
SRC+=stm32f0xx_hal_cortex.c
SRC+=stm32f0xx_hal_dma.c
SRC+=stm32f0xx_hal_flash.c
SRC+=stm32f0xx_hal_flash_ex.c
SRC+=stm32f0xx_hal_gpio.c
SRC+=stm32f0xx_hal_pwr.c
SRC+=stm32f0xx_hal_pwr_ex.c
SRC+=stm32f0xx_hal_rcc.c
SRC+=stm32f0xx_hal_rcc_ex.c

# USB Source Files
SRC+=usbd_cdc.c
SRC+=usbd_core.c
SRC+=usbd_ctlreq.c
SRC+=usbd_ioreq.c

CDEFS=-DUSE_STDPERIPH_DRIVER
CDEFS+=-DSTM32F0XX
CDEFS+=-DMANGUSTA_DISCOVERY
#CDEFS+=-DUSE_USB_OTG_FS

# EMZ FIXME
CDEFS+=-DHSE_VALUE=8000000


#EMZ Optimized: 
MCUFLAGS=-mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -mfloat-abi=soft

# Default:  MCUFLAGS=-mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections

#MCUFLAGS=-mcpu=cortex-m4 -mthumb -mlittle-endian -mfpu=fpa -mfloat-abi=hard -mthumb-interwork
#MCUFLAGS=-mcpu=cortex-m4 -mfpu=vfpv4-sp-d16 -mfloat-abi=hard
COMMONFLAGS=-O$(OPTLVL) -g -Wall
CFLAGS=$(COMMONFLAGS) $(MCUFLAGS) $(INCLUDE) $(CDEFS)

LDLIBS=
LDFLAGS=$(COMMONFLAGS) -fno-exceptions -ffunction-sections -fdata-sections \
        -nostartfiles -Wl,--gc-sections,-T$(LINKER_SCRIPT)

#####
#####

OBJ = $(SRC:%.c=%.o) $(ASRC:%.s=%.o)

CC=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-gcc
LD=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-gcc
OBJCOPY=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-objcopy
AS=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-as
AR=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-ar
GDB=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-gdb
SIZE=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-size


all: $(OBJ)
	$(CC) -o $(TARGET).elf $(LDFLAGS) $(OBJ)	$(LDLIBS)
	$(OBJCOPY) -O ihex   $(TARGET).elf $(TARGET).hex
	$(OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin

.PHONY: clean

clean:
	rm -f $(OBJ)
	rm -f $(TARGET).elf
	rm -f $(TARGET).hex
	rm -f $(TARGET).bin

# Display size
size: $(TARGET).elf
	@echo Invoking: ARM GNU Print Size
	$(SIZE) --format=berkeley $<
	@echo