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!!