2 GDB ?= arm-none-eabi-gdb
3 GAS ?= arm-none-eabi-as
4 GCC ?= arm-none-eabi-gcc
5 GXX ?= arm-none-eabi-g++
6 GLD ?= arm-none-eabi-gcc
7 OBJCOPY ?= arm-none-eabi-objcopy
9 CFLAGS ?= -Wall -g --std=gnu99
10 CXXFLAGS ?= -Wall -g --std=gnu++98
12 # Cross compiler flags
13 CPPFLAGS += -I$(MBED) -I$(MBED)/TARGET_KL46Z
15 CFLAGS += -mthumb -mcpu=cortex-m0plus
16 CXXFLAGS += -mthumb -mcpu=cortex-m0plus -fno-exceptions
18 LDFLAGS += --specs=nano.specs -Wl,-u_printf_float -Wl,--gc-sections \
19 -T$(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/MKL46Z4.ld \
20 -L$(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM \
21 $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/cmsis_nvic.o \
22 $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/retarget.o \
23 $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/startup_MKL46Z4.o \
24 $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/system_MKL46Z4.o \
25 -Wl,--start-group -lmbed -lc_s -lstdc++_s -Wl,--end-group
28 all: $(addsuffix .bin,$(PROG))
31 @echo "LS $(PROG).bin $(PROG).elf"
32 @ls -lh $(PROG).bin $(PROG).elf
35 @echo "INST $(PROG).bin"
36 @if [ -b /dev/sdb ]; then \
38 cp $(PROG).bin /mnt/usb; \
41 echo Error: No USB found; \
45 $(GDB) -ex 'target remote localhost:3333' $(PROG).elf
48 openocd -c 'adapter_khz 5000' \
49 -c 'gdb_memory_map disable' \
50 -s /usr/share/openocd/scripts \
51 -f board/frdm-kl46z.cfg
54 @echo "RM *.bin *.elf *.o $(CLEAN)"
55 @rm -f *.bin *.elf *.o $(CLEAN)
61 %.o: %.c $(wildcard *.h) makefile ../common.mk ../config.mk
63 @$(GCC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
65 %.o: %.cc $(wildcard *.h) makefile ../common.mk ../config.mk
67 @$(GXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
69 %.o: %.cpp $(wildcard *.h) makefile ../common.mk ../config.mk
71 @$(GXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
75 @$(GLD) $(CFLAGS) -o $@ $^ $(LDFLAGS)
79 @$(OBJCOPY) -O binary $< $@