Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 74 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,25 +1,58 @@
ifdef USE_GCC
CC = arm-none-eabi-gcc
CXX = arm-none-eabi-g++
ASM = arm-none-eabi-as
LD = arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy
SIZE = arm-none-eabi-size
else
CC = armcc --c99
CXX = armcc --cpp
ASM = armasm
LD = armlink
OBJCOPY = fromelf
endif

SDIR = .
VPATH = $(SDIR)/Silverware/src:$(SDIR)/Utilities:$(SDIR)/Libraries/STM32F0xx_StdPeriph_Driver/src:$(SDIR)/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm
SRC_C = $(wildcard $(SDIR)/Silverware/src/*.c) \
$(wildcard $(SDIR)/Utilities/*.c) \
$(wildcard $(SDIR)/Libraries/STM32F0xx_StdPeriph_Driver/src/*.c)
$(wildcard $(SDIR)/Utilities/*.c) \
$(wildcard $(SDIR)/Libraries/STM32F0xx_StdPeriph_Driver/src/*.c)
SRC_CXX = $(wildcard $(SDIR)/Silverware/src/*.cpp)
SRC_S = $(SDIR)/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031.s

CFLAGS := -I$(DIR)/Silverware/src -I$(SDIR)/Libraries/CMSIS/Device/ST/STM32F0xx/Include -I $(SDIR)/Libraries/CMSIS/Include -I $(SDIR)/Utilities -I $(SDIR)/Libraries/STM32F0xx_StdPeriph_Driver/inc

CPU = --cpu Cortex-M0

CFLAGS += $(CPU) -D__EVAL -D__MICROLIB -g -O2 --apcs=interwork --split_sections -D__UVISION_VERSION="524" -DUSE_STDPERIPH_DRIVER -DSTM32F031 --fpmode=fast
ASMFLAGS := $(CPU) --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" --pd "__UVISION_VERSION SETA 524" --xref
LDFLAGS := $(CPU) --library_type=microlib --ro-base 0x08000000 --entry 0x08000000 --rw-base 0x20000000 --entry Reset_Handler --first __Vectors --strict --info summarysizes

SRCS := $(SRC_C) $(SRC_CXX) $(SRC_S)
ifdef USE_GCC
SRC_C += $(wildcard $(SDIR)/gcc/*.c)
SRC_S += $(SDIR)/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f030.s
SRC_S += $(SDIR)/gcc/qfplib/qfplib.s
LDFLAGS := -Wl,-wrap,__aeabi_dmul \
-Wl,-wrap,__aeabi_fadd \
-Wl,-wrap,__aeabi_fdiv \
-Wl,-wrap,__aeabi_fmul \
-Wl,-wrap,__aeabi_fsub \
-Wl,-wrap,__aeabi_i2f \
-Wl,-wrap,__aeabi_ui2f \
-Wl,-wrap,__aeabi_f2iz \
-Wl,-wrap,__aeabi_f2uiz \
-Wl,-wrap,__aeabi_fcmpeq \
-Wl,-wrap,__aeabi_fcmplt \
-Wl,-wrap,__aeabi_fcmple \
-Wl,-wrap,__aeabi_fcmpge \
-Wl,-wrap,__aeabi_fcmpgt \
-Wl,-wrap,__aeabi_fcmpun
else
SRC_S += $(SDIR)/Libraries/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031.s
endif

INCLUDES = -I$(SDIR)/Silverware/src -I$(SDIR)/Libraries/CMSIS/Device/ST/STM32F0xx/Include -I $(SDIR)/Libraries/CMSIS/Include -I $(SDIR)/Utilities -I $(SDIR)/Libraries/STM32F0xx_StdPeriph_Driver/inc

CPU = cortex-m0

SRCS = $(SRC_C) $(SRC_CXX) $(SRC_S)
ODIR = $(SDIR)/obj

OBJS = $(addprefix $(ODIR)/, $(notdir $(SRC_C:.c=.o) $(SRC_S:.s=.o) $(SRC_CXX:.cpp=.o)))
VPATH = $(dir $(SRCS))

ifndef USE_GCC
export ARM_TOOL_VARIANT = mdk_lite
export ARMCC5_ASMOPT = --diag_suppress=9931
export ARMCC5_CCOPT = --diag_suppress=9931
Expand All @@ -28,6 +61,23 @@ export CPU_TYPE = STM32F030F4
export CPU_VENDOR = STMicroelectronics
export CPU_CLOCK = 0x00B71B00
export UV2_TARGET = BWhoop
endif


ifndef USE_GCC
CFLAGS := --cpu $(CPU) $(INCLUDES) -D__EVAL -D__MICROLIB -g -O2 --apcs=interwork --split_sections -D__UVISION_VERSION="524" -DUSE_STDPERIPH_DRIVER -DSTM32F031 --fpmode=fast
ASMFLAGS := --cpu $(CPU) --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" --pd "__UVISION_VERSION SETA 524" --xref
LDFLAGS := --cpu $(CPU) --library_type=microlib --ro-base 0x08000000 --entry 0x08000000 --rw-base 0x20000000 --entry Reset_Handler --first __Vectors --strict --info summarysizes
DEPENDS := --depend=
else
CFLAGS := -mcpu=$(CPU) $(INCLUDES) -DDISABLE_GESTURES2 -Os -g -mthumb -fdata-sections -ffunction-sections \
-fsingle-precision-constant -ffast-math \
-nostartfiles --specs=nano.specs --specs=nosys.specs
CFLAGS += -DUSE_STDPERIPH_DRIVER -DSTM32F031
LDFLAGS += $(CFLAGS) -Wl,-T,flash.ld,-Map,output.map,--gc-sections -L$(SDIR)/gcc
ASMFLAGS := -mcpu=$(CPU)
DEPENDS := -MD -MP -MF
endif

.PHONY: default all
default: silverware.hex
Expand All @@ -41,21 +91,28 @@ $(ODIR):

$(ODIR)/%.o: %.cpp
@echo " + Compiling '$(notdir $<)'"
armcc --cpp $(CFLAGS) --depend=$(@:.o=.dep) -c -o $@ $<
$(CXX) $(CFLAGS) $(DEPENDS)$(@:.o=.dep) -c -o $@ $<

$(ODIR)/%.o: %.c
@echo " + Compiling '$(notdir $<)'"
armcc --c99 $(CFLAGS) --depend=$(@:.o=.dep) -c -o $@ $<
$(CC) $(CFLAGS) $(DEPENDS)$(@:.o=.dep) -c -o $@ $<

$(ODIR)/%.o: %.s
@echo " + Compiling '$(notdir $<')"
armasm $(ASMFLAGS) -o $@ $<
$(ASM) $(ASMFLAGS) -o $@ $<

silverware.hex: silverware.axf
ifdef USE_GCC
$(OBJCOPY) -O ihex $< $@
else
fromelf $< --i32combined --output $@
endif

silverware.axf: $(OBJS)
armlink $(LDFLAGS) $(OBJS) -o $@
$(LD) $(LDFLAGS) $(OBJS) -o $@
ifdef USE_GCC
$(SIZE) $@
endif

clean:
rm -Rf $(ODIR) silverware.axf silverware.hex
Expand Down
1 change: 1 addition & 0 deletions Silverware/src/drv_softserial.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ void softserial_write_byte_ex(const SoftSerialData_t* data, uint8_t byte);
void softserial_set_input(const SoftSerialData_t* data);
void softserial_set_output(const SoftSerialData_t* data);

__attribute__((always_inline))
inline void delay_until(uint32_t uS )
{
while (gettime() < uS) ;
Expand Down
8 changes: 4 additions & 4 deletions Silverware/src/pid.c
Original file line number Diff line number Diff line change
Expand Up @@ -402,9 +402,9 @@ float pid(int x )
stickTransition[x] = stickTransitionProfileA[x];
}
if (stickAccelerator[x] < 1){
transitionSetpointWeight[x] = (fabs(rxcopy[x]) * stickTransition[x]) + (1- stickTransition[x]);
transitionSetpointWeight[x] = (fabsf(rxcopy[x]) * stickTransition[x]) + (1- stickTransition[x]);
}else{
transitionSetpointWeight[x] = (fabs(rxcopy[x]) * (stickTransition[x] / stickAccelerator[x])) + (1- stickTransition[x]);
transitionSetpointWeight[x] = (fabsf(rxcopy[x]) * (stickTransition[x] / stickAccelerator[x])) + (1- stickTransition[x]);
}
static float lastrate[3];
static float lastsetpoint[3];
Expand Down Expand Up @@ -442,9 +442,9 @@ float pid(int x )
stickTransition[x] = stickTransitionProfileA[x];
}
if (stickAccelerator[x] < 1){
transitionSetpointWeight[x] = (fabs(rxcopy[x]) * stickTransition[x]) + (1- stickTransition[x]);
transitionSetpointWeight[x] = (fabsf(rxcopy[x]) * stickTransition[x]) + (1- stickTransition[x]);
}else{
transitionSetpointWeight[x] = (fabs(rxcopy[x]) * (stickTransition[x] / stickAccelerator[x])) + (1- stickTransition[x]);
transitionSetpointWeight[x] = (fabsf(rxcopy[x]) * (stickTransition[x] / stickAccelerator[x])) + (1- stickTransition[x]);
}
static float lastrate[3];
static float lastsetpoint[3];
Expand Down
59 changes: 0 additions & 59 deletions gcc/Makefile

This file was deleted.

Loading