PROG=main DEFINES = #if not defined then we use a timer #DEFINES += -DBOOTLOADER_BUTTON=BSP_BUTTON_1 DEFINES += -DSWI_DISABLE0 #DEFINES += -DBOARD_PCA10028 DEFINES += -DBOARD_BLE400 DEFINES += -DSOFTDEVICE_PRESENT DEFINES += -DNRF51 DEFINES += -D__HEAP_SIZE=0 DEFINES += -DS130 DEFINES += -DBLE_STACK_SUPPORT_REQD DEFINES += -DBSP_DEFINES_ONLY CFLAGS=-Os -g LDFLAGS= ASFLAGS= INCLUDES= SDK=sdk-9.0.0 BDADDR=FD:F9:62:4A:8A:C8 SDKCSRCS= \ ble/ble_services/ble_dfu/ble_dfu.c \ ble/common/ble_advdata.c \ ble/common/ble_conn_params.c \ ble/common/ble_srv_common.c \ drivers_nrf/hal/nrf_delay.c \ drivers_nrf/pstorage/pstorage_raw.c \ libraries/crc16/crc16.c \ libraries/bootloader_dfu/bootloader.c \ libraries/bootloader_dfu/bootloader_settings.c \ libraries/bootloader_dfu/bootloader_util.c \ libraries/bootloader_dfu/dfu_init_template.c \ libraries/bootloader_dfu/dfu_single_bank.c \ libraries/bootloader_dfu/dfu_transport_ble.c \ libraries/hci/hci_mem_pool.c \ libraries/scheduler/app_scheduler.c \ libraries/timer/app_timer.c \ libraries/timer/app_timer_appsh.c \ libraries/util/app_error.c \ libraries/util/nrf_assert.c \ softdevice/common/softdevice_handler/softdevice_handler.c \ softdevice/common/softdevice_handler/softdevice_handler_appsh.c \ toolchain/system_nrf51.c SDKSSRCS = toolchain/gcc/gcc_startup_nrf51.s CSRCS = \ dfu_ble_svc.c \ main.c \ SOFTDEVICE=${SDK}/sdk/softdevice/s130/hex/s130_softdevice.hex APP_VERSION=0xFFFFFFFF DEV_REVISION=0xFFFF DEV_TYPE=0xFFFF SD_REQ=0xFFFE LINKER_SCRIPT=dfu_gcc_nrf51.ld INCLUDES += -Isdk-config -I${SDK} -I. OOCD=openocd OOCD_CFG=openocd.cfg CROSS=arm-none-eabi- CC := $(CROSS)gcc AS := $(CROSS)as AR := $(CROSS)ar LD := $(CROSS)ld NM := $(CROSS)nm OBJDUMP := $(CROSS)objdump OBJCOPY := $(CROSS)objcopy SIZE := $(CROSS)size GDB := $(CROSS)gdb NRFUTIL := nrfutil NRFDFU := nrfdfu CFLAGS += -mcpu=cortex-m0 CFLAGS += -mthumb -mabi=aapcs --std=gnu99 CFLAGS += -Wall -Werror -Os CFLAGS += -mfloat-abi=soft # keep every function in separate section. This will allow linker to dump unused functions CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing CFLAGS += -fno-builtin --short-enums # keep every function in separate section. This will allow linker to dump unused functions LDFLAGS += -Xlinker -Map=$(PROG).map LDFLAGS += -mthumb -mabi=aapcs -L${SDK} -T$(LINKER_SCRIPT) LDFLAGS += -mcpu=cortex-m0 # let linker to dump unused sections LDFLAGS += -Wl,--gc-sections # use newlib in nano version #LDFLAGS += --specs=nano.specs -lc -lnosys LIBS += -lc -lnosys # Assembler flags ASFLAGS += -x assembler-with-cpp CPPFLAGS=$(DEFINES) $(INCLUDES) OBJS=${CSRCS:%.c=%.o} ${SDKCSRCS:%.c=${SDK}/sdk/%.o} ${SDKSSRCS:%.s=${SDK}/sdk/%.o} default: ${PROG}.bin ${PROG}.hex clean: /bin/rm -f ${OBJS} ${PROG} ${PROG}.bin ${PROG}.hex ${PROG}:${OBJS} $(CC) $(LDFLAGS) $(CFLAGS) $(OBJS) $(LIBS) -o $@ $(SIZE) $@ %.bin:% $(OBJCOPY) -O binary $< $@ %.hex:% $(OBJCOPY) -O ihex $< $@ twongle.o:twongle.c $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< %.o:%.c $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< %.o:%.s $(CC) $(CPPFLAGS) $(ASFLAGS) -c -o $@ $< flash: ${PROG}.hex ${OOCD} -f ${OOCD_CFG} \ -c "init" -c "reset init" \ -c "flash write_image erase $<" \ -c "reset" \ -c "shutdown" flash_softdevice: ${SOFTDEVICE} ${OOCD} -f ${OOCD_CFG} \ -c "init" -c "reset init" \ -c "nrf51 mass_erase" \ -c "flash write_image erase $<" \ -c "reset" \ -c "shutdown" flashall: ${SOFTDEVICE} ${PROG}.hex ${OOCD} -f ${OOCD_CFG} \ -c "init" -c "reset init" \ -c "nrf51 mass_erase" \ -c "flash write_image ${SOFTDEVICE}" \ -c "flash write_image ${PROG}.hex" \ -c "reset" \ -c "shutdown" ds: $(OOCD) -f $(OOCD_CFG) debug: ${PROG} ${GDB} -x gdb.script ${PROG} reset: ${OOCD} -f ${OOCD_CFG} \ -c "init" \ -c "reset init" \ -c "reset" \ -c "shutdown" %.zip: %.hex ${NRFUTIL} dfu genpkg --dev-revision ${DEV_REVISION} --dev-type ${DEV_TYPE} --application-version ${APP_VERSION} --sd-req ${SD_REQ} --bootloader $< $@ dfu: ${PROG}.zip ${NRFDFU} -b ${BDADDR} -p ${PROG}.zip #flash: $(MAKECMDGOALS) # @echo Flashing: $(OUTPUT_BINARY_DIRECTORY)/$<.hex # nrfjprog --reset --program $(OUTPUT_BINARY_DIRECTORY)/$<.hex # ### Flash softdevice #flash_softdevice: # @echo Flashing: s130_softdevice.hex # nrfjprog --reset --program softdevice/s130/hex/s130_softdevice.hex