# Settings GDB ?= arm-none-eabi-gdb GAS ?= arm-none-eabi-as GCC ?= arm-none-eabi-gcc GXX ?= arm-none-eabi-g++ GLD ?= arm-none-eabi-gcc OBJCOPY ?= arm-none-eabi-objcopy CFLAGS ?= -Wall -g --std=gnu99 CXXFLAGS ?= -Wall -g --std=gnu++98 # Cross compiler flags CPPFLAGS += -I$(MBED) -I$(MBED)/TARGET_KL46Z CFLAGS += -mthumb -mcpu=cortex-m0plus CXXFLAGS += -mthumb -mcpu=cortex-m0plus -fno-exceptions LDFLAGS += --specs=nano.specs -Wl,-u_printf_float -Wl,--gc-sections \ -T$(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/MKL46Z4.ld \ -L$(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM \ $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/cmsis_nvic.o \ $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/retarget.o \ $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/startup_MKL46Z4.o \ $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/system_MKL46Z4.o \ -Wl,--start-group -lmbed -lc_s -lstdc++_s -Wl,--end-group # Targets all: $(PROG).bin info: all @echo "LS $(PROG).bin $(PROG).elf" @ls -lh $(PROG).bin $(PROG).elf install: all @echo "INST $(PROG).bin" @if [ -b /dev/sdb ]; then \ mount /mnt/usb; \ cp $(PROG).bin /mnt/usb; \ umount /mnt/usb; \ else \ echo Error: No USB found; \ fi gdb: all $(GDB) -ex 'target remote localhost:3333' $(PROG).elf openocd: all openocd -c 'adapter_khz 5000' \ -c 'gdb_memory_map disable' \ -s /usr/share/openocd/scripts \ -f board/frdm-kl46z.cfg clean: @echo "RM $(PROG).bin $(PROG).elf $(OBJS)" @rm -f $(PROG).bin $(PROG).elf $(OBJS) # Rules %.o: %.c $(wildcard *.h) makefile ../common.mk ../config.mk @echo "CC $<" @$(GCC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< %.o: %.cc $(wildcard *.h) makefile ../common.mk ../config.mk @echo "CXX $<" @$(GXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< %.o: %.cpp $(wildcard *.h) makefile ../common.mk ../config.mk @echo "CXX $<" @$(GXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(PROG).elf: $(OBJS) @echo "LD $+" @$(GLD) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(PROG).bin: $(PROG).elf @echo "BIN $+" @$(OBJCOPY) -O binary $< $@