From 67bf9dbc5262619128bb28c5e7726282e1f26aa0 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 31 May 2015 18:49:50 +0200 Subject: o Better flashing technique. --- Makefile.common | 56 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/Makefile.common b/Makefile.common index 66f3b4e..3a10fc2 100644 --- a/Makefile.common +++ b/Makefile.common @@ -26,6 +26,9 @@ SDK_SOURCE_PATH ?= $(SDK_PATH)/Source # TEMPLATE_PATH += $(SDK_SOURCE_PATH)/templates/gcc OUTPUT_BINARY_DIRECTORY := build +# Modern (> 4.98?) exits with 0 on success +JLINK_OUTPUT ?= 0 + ifeq ($(OS),Windows_NT) include $(TEMPLATE_PATH)/Makefile.windows else @@ -78,7 +81,7 @@ FLASHER := JLink # Toolchain commands #JLINK := JLinkExe -Device nrf51822 -speed 100 -if swd -JLINK := JLinkExe -speed 100 -if swd +JLINK := JLinkExe -device nrf51822 -speed 1000 -if swd #JLINK := JLinkExe -IP localhost #You need to change openOCD clause depending your dongle. I have stlink-v2 and it's working. Jlink will work if you fetch latest trunk from git. OPENOCD := /usr/local/bin/openocd -f interface/stlink-v2.cfg -c"transport select hla_swd" -f target/nrf51.cfg @@ -301,18 +304,23 @@ release: ASMFLAGS += -DNDEBUG -O3 release: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).hex echostuff: - @echo CPU: $(CPU) - @echo DEVICE: $(DEVICE) - @echo BOARD: $(BOARD) - @echo TARGET_CHIP: $(TARGET_CHIP) - @echo C_OBJECTS: [$(C_OBJECTS)] - @echo CFLAGS: $(CFLAGS) + @echo "CPU: $(CPU)" + @echo "DEVICE: $(DEVICE)" + @echo "BOARD: $(BOARD)" + @echo "TARGET_CHIP: $(TARGET_CHIP)" + @echo "STARTADDRESS: $(STARTADDRESS)" + @echo CFLAGS: + @$(foreach X,$(CFLAGS), echo " $(X)";) + @echo LDFLAGS: + @$(foreach X,$(LDFLAGS), echo " $(X)";) + @echo C_OBJECTS: + @$(foreach X,$(C_OBJECTS), echo " $(X)";) @echo C_SOURCE_FILES: - @echo $(C_SOURCE_FILES) | tr ' ' '\n' + @$(foreach X,$(C_SOURCE_FILES), echo " $(X)";) @echo C_SOURCE_PATHS: - @echo $(C_SOURCE_PATHS) | tr ' ' '\n' + @$(foreach X,$(C_SOURCE_PATHS), echo " $(X)";) @echo INCLUDEPATHS: - @echo $(INCLUDEPATHS) | tr ' ' '\n' + @$(foreach X,$(INCLUDEPATHS), echo " $(X)";) ## Create build directories $(BUILD_DIRECTORIES): @@ -334,7 +342,7 @@ $(OBJECT_DIRECTORY)/%.o: %.s ## Link C and assembler objects to an .out file $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out: $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES) | $(BUILD_DIRECTORIES) @echo LD $@ - @$(CC) $(LDFLAGS) -o $@ $^ + $(CC) $(LDFLAGS) -o $@ $^ ## Create binary .bin file from the .out file $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out @@ -346,11 +354,14 @@ $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).hex: $(OUTPUT_BINARY_DIRECTORY)/$( ## Default build target .PHONY: all -all: debug +all: debug $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).dump clean: $(RM) $(OUTPUT_BINARY_DIRECTORY) +%.dump: %.out + $(OBJDUMP) -d $< > $@ + # Create binary file from the softdevice 7 hex file $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin: $(BUILD_DIRECTORIES) $(OBJCOPY) -I ihex -O binary $(SOFTDEVICE_HEX_PATH) $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin @@ -413,7 +424,7 @@ q \n\ > $@ erase_all: $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink - $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink; [ "$$?" -eq 1 ] + $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink; [ "$$?" -eq $(JLINK_OUTPUT) ] $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink: $(BUILD_DIRECTORIES) @echo " \n\ @@ -435,9 +446,9 @@ qc \n\ " > $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink flash_softdevice: $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin - $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink; [ "$$?" -eq 1 ] + $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink; [ "$$?" -eq $(JLINK_OUTPUT) ] -$(OUTPUT_BINARY_DIRECTORY)/flash.jlink: $(BUILD_DIRECTORIES) $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin +$(OUTPUT_BINARY_DIRECTORY)/flash2.jlink: $(BUILD_DIRECTORIES) $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin @echo " \n\ r \n\ h \n\ @@ -450,7 +461,7 @@ w4 0x4001e504,2 # enable erase \n\ page=0; \ while [ $$binsize -gt 0 ]; \ do \ - echo "w4 0x4001e508, $$starthexaddr # start erasing code region 1 page $$page\n" >> $@ ; \ + echo "w4 0x4001e508, $$starthexaddr # start erasing code region 1 page $$page" >> $@ ; \ binsize=`expr $$binsize - 1024`; \ page=`expr $$page + 1`; \ startaddr=`expr $$startaddr + 1024`; \ @@ -466,8 +477,17 @@ g \n\ qc \n\ " >> $@ +$(OUTPUT_BINARY_DIRECTORY)/flash.jlink: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin | $(BUILD_DIRECTORIES) + echo "w4 0x4001e504,1 # enable write \n\ +loadbin \"$<\", $(STARTADDRESS)\n\ +verifybin \"$<\", $(STARTADDRESS)\n\ +r \n\ +g \n\ +qc \n\ +" >> $@ + flash: $(OUTPUT_BINARY_DIRECTORY)/flash.jlink - $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/flash.jlink; [ "$$?" -eq 1 ] + $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/flash.jlink; [ "$$?" -eq $(JLINK_OUTPUT) ] $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink: $(BUILD_DIRECTORIES) @echo "\n\ @@ -480,7 +500,7 @@ $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink: $(BUILD_DIRECTORIES) " > $@ pin-reset: $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink - $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink; [ "$$?" -eq 1 ] + $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink; [ "$$?" -eq $(JLINK_OUTPUT) ] START_GDB_SERVER_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/start_gdbserver.sh $(START_GDB_SERVER_SCRIPT): $(BUILD_DIRECTORIES) -- cgit v1.2.3