-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
113 lines (85 loc) · 2.88 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
BINARYNAME = main
STARTUP = startup_stm32f427_437xx.s
SYSTEM = system_stm32f4xx.c
LOADFILE = stm32f427.ld
DEVICE = stm32/device
CORE = stm32/core
PERIPH = stm32/periph
BUILDDIR = build
SOURCES += $(wildcard $(PERIPH)/src/*.c)
SOURCES += $(DEVICE)/src/$(STARTUP)
SOURCES += $(DEVICE)/src/$(SYSTEM)
SOURCES += $(wildcard *.c)
OBJECTS = $(addprefix $(BUILDDIR)/, $(addsuffix .o, $(basename $(SOURCES))))
INCLUDES += -I$(DEVICE)/include \
-I$(CORE)/include \
-I$(PERIPH)/include \
-I\
ELF = $(BUILDDIR)/$(BINARYNAME).elf
HEX = $(BUILDDIR)/$(BINARYNAME).hex
BIN = $(BUILDDIR)/$(BINARYNAME).bin
ARCH = arm-none-eabi
CC = $(ARCH)-gcc
LD = $(ARCH)-ld -v
AS = $(ARCH)-as
OBJCPY = $(ARCH)-objcopy
OBJDMP = $(ARCH)-objdump
GDB = $(ARCH)-gdb
CFLAGS = -g2 -O1 \
-fthread-jumps \
-falign-functions -falign-jumps \
-falign-loops -falign-labels \
-fcaller-saves \
-fcrossjumping \
-fcse-follow-jumps -fcse-skip-blocks \
-fdelete-null-pointer-checks \
-fexpensive-optimizations \
-fgcse -fgcse-lm \
-findirect-inlining \
-foptimize-sibling-calls \
-fpeephole2 \
-fregmove \
-freorder-blocks -freorder-functions \
-frerun-cse-after-loop \
-fsched-interblock -fsched-spec \
-fstrict-aliasing -fstrict-overflow \
-ftree-switch-conversion \
-ftree-pre \
-ftree-vrp \
-finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize
# Causes Freeze on run: -fschedule-insns -fschedule-insns2
CFLAGS += -mlittle-endian -mthumb
CFLAGS += -I. -DARM_MATH_CM4 -D'__FPU_PRESENT=1' $(INCLUDES) -DUSE_STDPERIPH_DRIVER
CFLAGS += -mcpu=cortex-m4 -mfloat-abi=hard
CFLAGS += -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wdouble-promotion
AFLAGS = -mlittle-endian -mthumb -mcpu=cortex-m4
LDSCRIPT = $(DEVICE)/$(LOADFILE)
LFLAGS = -Map main.map -nostartfiles -T $(LDSCRIPT)
all: Makefile $(BIN) $(HEX)
$(BIN): $(ELF)
$(OBJCPY) -O binary $< $@
$(OBJDMP) -x --syms $< > $(addsuffix .dmp, $(basename $<))
ls -l $@ $<
$(HEX): $(ELF)
$(OBJCPY) --output-target=ihex $< $@
$(ELF): $(OBJECTS) $(wildcard *.h)
$(LD) $(LFLAGS) -o $@ $(OBJECTS)
$(BUILDDIR)/%.o: %.c
mkdir -p $(dir $@)
$(CC) -c $(CFLAGS) $< -o $@
$(BUILDDIR)/%.o: %.s
mkdir -p $(dir $@)
$(AS) $(AFLAGS) $< -o $@ > $(addprefix $(BUILDDIR)/, $(addsuffix .lst, $(basename $<)))
flash: $(BIN)
st-flash write $(BIN) 0x8008000
clean:
rm -rf build
wav: fsk-wav
qpsk-wav: $(BIN)
python stm_audio_bootloader/qpsk/encoder.py \
-t stm32f4 -s 48000 -b 12000 -c 6000 -p 256 \
$(BIN)
fsk-wav: $(BIN)
python stm_audio_bootloader/fsk/encoder.py \
-s 48000 -b 16 -n 8 -z 4 -p 256 -g 16384 -k 1800 \
$(BIN)