|
|
|
BINARY=něco (cokoliv)
|
|
|
|
LDSCRIPT=../stm32vl-discovery.ld
|
|
|
|
?? LDSCRIPT=./lib-ex/ex/stm32/f1/stvldisco/stm32vl-discovery.ld
|
|
|
|
LIBNAME= opencm3-stm32f1
|
|
|
|
DEFS = -DSTM32F1
|
|
|
|
|
|
|
|
FP_FLAGS = -msoft-float
|
|
|
|
ARCH_FLAGS = -mthumb -mcpu=cortex-m3 $(FP_FLAGS) -mfix-cortex-m3-ldrd
|
|
|
|
=> ARCH_FLAGS = -mthumb -mcpu=cortex-m3 -msoft-float -mfix-cortex-m3-ldrd
|
|
|
|
|
|
|
|
STLINK_PORT = 4242
|
|
|
|
|
|
|
|
### Makefile.rules
|
|
|
|
PREFIX = arm-none-eabi
|
|
|
|
CC = $(PREFIX)-gcc
|
|
|
|
=> CC = arm-none-eabi-gcc
|
|
|
|
LD = $(PREFIX)-gcc
|
|
|
|
=> LD = arm-none-eabi-gcc
|
|
|
|
AS = $(PREFIX)-as
|
|
|
|
=> AS = arm-none-eabi-as
|
|
|
|
OBJCOPY = $(PREFIX)-objcopy
|
|
|
|
=> OBJCOPY = arm-none-eabi-objcopy
|
|
|
|
|
|
|
|
OBJS = $(BINARY).o
|
|
|
|
=> OBJS = fancyblink.o
|
|
|
|
|
|
|
|
LIBPATH = ./libopencm3 ?? Prostě cesta k libopencm3
|
|
|
|
OPENCM3_DIR = magic!! ?? složka, kde je libopencm3
|
|
|
|
|
|
|
|
INCLUDE_DIR = $(OPENCM3_DIR)/include
|
|
|
|
=> INCLUDE_DIR ??= ~/Dev/STM/libocm3/libocm3/include
|
|
|
|
LIB_DIR = $(OPENCM3_DIR)/lib
|
|
|
|
=> LIB_DIR ??= ~/Dev/STM/libocm3/libocm3/lib
|
|
|
|
SCRIPT_DIR = $(OPENCM3_DIR)/scripts
|
|
|
|
=> SCRIPT_DIR ??= ~/Dev/STM/libocm3/libocm3/scripts
|
|
|
|
|
|
|
|
CFLAGS = -Os -g -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -fno-common -ffunction-sections -fdata-sections
|
|
|
|
?? Většina zbytečných (-W...)
|
|
|
|
CPPFLAGS = -MD -Wall -Wundef -I$(INCLUDE_DIR) $(DEFS)
|
|
|
|
=> CPPFLAGS = -MD -Wall -Wundef -I~/Dev/ST/locm3/locm3/include -DSTM32F1
|
|
|
|
LDFLAGS = --static -nostartfiles -L$(LIB_DIR) -T$(LDSCRIPT) -Wl,-Map=$(*).map -Wl,--gc-sections
|
|
|
|
?? $(*).map prostě najít .map soubor
|
|
|
|
=> LDFLAGS = --static -nostartfiles -L.../libocm3/lib -Tněkde/stm32vl-discovery.ld -Wl,-Map=$(*).map -Wl,--gc-sections
|
|
|
|
|
|
|
|
LDLIBS = -l$(LIBNAME) -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
|
|
|
|
=> LDLIBS = -lopencm3-stm32f1 -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
|
|
|
|
|
|
|
|
>>> LET US COMPILE
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
To make the .o:
|
|
|
|
===============
|
|
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o něco.o -c něco.c
|
|
|
|
=> arm-none-eabi-gcc {Flagy na všechno} -c něco.c -o něco.o
|
|
|
|
>>> Hotovo!!
|
|
|
|
|
|
|
|
To make the elf:
|
|
|
|
================
|
|
|
|
$(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o něco.elf
|
|
|
|
-> vyžaduje $(OBJS), existenci $(LDSCRIPT) a $(LIB_DIR)/lib$(LIBNAME).a
|
|
|
|
=> arm-none-eabi-gcc {hromada zbytečných LDFLAGS, ARCH_FLAGS} něco.o {LDLIBS} -o něco.elf
|
|
|
|
-> vyžaduje vytvoření něco.o (zbytek už je v libopencm3, SNAD)
|
|
|
|
>>> Hotovo!!
|
|
|
|
|
|
|
|
To make the bin:
|
|
|
|
================
|
|
|
|
$(OBJCOPY) -Obinary něco.elf něco.bin
|
|
|
|
=> arm-none-eabi-objcopy -Obinary něco.elf něco.bin
|
|
|
|
>>> Hotovo!!
|
|
|
|
|