From bcfa665ebd095aa1c9a13219b421457c72b8a899 Mon Sep 17 00:00:00 2001 From: "Erdem U. Altinyurt" Date: Thu, 4 Sep 2014 05:59:07 +0300 Subject: Merged OpenOCD Flasher scripts + Added GDB functions to OpenOCD + Automatize tasks + bugfixes + readme fixed + others... --- Makefile.common | 116 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 79 insertions(+), 37 deletions(-) (limited to 'Makefile.common') diff --git a/Makefile.common b/Makefile.common index 9618c57..42782f3 100644 --- a/Makefile.common +++ b/Makefile.common @@ -13,9 +13,9 @@ include $(TEMPLATE_PATH)/Makefile.posix endif ifeq ($(LINKER_SCRIPT),) - ifeq ($(USE_SOFTDEVICE), S110-sd6) - LINKER_SCRIPT = gcc_$(DEVICESERIES)_s110-sd6_$(DEVICE_VARIANT).ld - OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s110-sd6_$(DEVICE_VARIANT) + ifeq ($(USE_SOFTDEVICE), S110-v6) + LINKER_SCRIPT = gcc_$(DEVICESERIES)_s110-v6_$(DEVICE_VARIANT).ld + OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s110-v6_$(DEVICE_VARIANT) STARTADDRESS = 0x14000 else ifeq ($(USE_SOFTDEVICE), S110) @@ -39,17 +39,24 @@ else endif CPU := cortex-m0 - + +#Flasher selection +#FLASHER := JLink +FLASHER := OpenOCD + # Toolchain commands JLINK := JLinkExe -Device nrf51822 -speed 100 -if swd -OPENOCD := /usr/local/bin/openocd -f interface/stlink-v2.cfg -c"transport select hla_swd" -f target/nrf51.cfg +#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 +#OPENOCD := /usr/local/bin/openocd -f interface/jlink.cfg -c"transport select swd ; adapter_khz 1000 ; adapter_nsrst_delay 10" -f /home/death/de/nrf51.cfg CC := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-gcc" AS := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-as" AR := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ar" -r LD := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ld" NM := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-nm" -OBJDUMP := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objdump" -OBJCOPY := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objcopy" +OBJDUMP := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objdump" +OBJCOPY := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objcopy" +GDB := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-gdb" MK := mkdir RM := rm -rf @@ -97,7 +104,7 @@ INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/application/transport" INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/application/codecs/common" INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/application/codecs/s110/serializers" -ifeq ($(USE_SOFTDEVICE), S110-sd6) +ifeq ($(USE_SOFTDEVICE), S110-v6) INCLUDEPATHS += -I"$(SDK_PATH)/Include/s110" else ifeq ($(USE_SOFTDEVICE), S110) @@ -185,10 +192,56 @@ all: clean debug clean: $(RM) $(OUTPUT_BINARY_DIRECTORY) + +# 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 + +# Create IUCR binary file from the softdevice 6 UICR hex file +$(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin: $(SOFTDEVICE_HEX_PATH) $(BUILD_DIRECTORIES) + $(OBJCOPY) -Iihex -Obinary --only-section .sec3 $< $@ + +# Create binary file from the softdevice 6 hex file +$(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin: $(SOFTDEVICE_HEX_PATH) $(BUILD_DIRECTORIES) + $(OBJCOPY) -Iihex -Obinary --remove-section .sec3 $< $@ + +#OpenOCD Flasher Scripts +ifeq ($(FLASHER), OpenOCD) +flash: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin + $(OPENOCD) -c "program $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin $(STARTADDRESS) verify" + +ifeq ($(USE_SOFTDEVICE), S110-v6) +flash_softdevice: $(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin $(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin + $(OPENOCD) -c "init ; reset halt ; nrf51 mass_erase ; sleep 500 ; flash write_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin 0x10001000 ; verify_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin 0x10001000 ; flash write_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin 0x0 ; verify_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin 0; shutdown" +else +flash_softdevice: $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin + $(OPENOCD) -c "init ; reset halt ; nrf51 mass_erase ; sleep 500 ; flash write_image $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin 0x0 ; verify_image $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin 0x0 ; mww 0x4001e504 1 ; mww 0x10001000 $(STARTADDRESS) ; mww 0x4001e504 0 ; shutdown" +endif + +erase_all: + $(OPENOCD) -c "init ; reset halt ; nrf51 mass_erase ; shutdown" + +pinreset: + $(OPENOCD) -c "init ; reset halt ; mww 0x4001e504 2 ; mww 0x40000544 1 ; reset ; shutdown" + +gdbserver: + $(OPENOCD) + +GDB_COMMAND_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/gdbinit +$(GDB_COMMAND_SCRIPT): debug + echo -e -n "target remote localhost:3333 \n\ + monitor reset halt \n\ + file $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out \n\ + load \n\ + b main \n\ + b app_error_handler \n\ + monitor reset \n\ + continue" > $(GDB_COMMAND_SCRIPT) - +#JLink Flasher Scripts +else $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink : $(BUILD_DIRECTORIES) - echo " \ + echo " r \n\ h \n\ w4 0x4001e504,2 # enable erase all \n\ @@ -200,14 +253,10 @@ r \n\ q \n\ " \ > $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink - + erase_all: $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink; [ "$$?" -eq 1 ] -$(OUTPUT_BINARY_DIRECTORY)/softdevice.bin: $(BUILD_DIRECTORIES) - $(OBJCOPY) -I ihex -O binary $(SOFTDEVICE_HEX_PATH) $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin - endif - $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink: $(BUILD_DIRECTORIES) echo " \n\ r \n\ @@ -273,15 +322,15 @@ $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink: $(BUILD_DIRECTORIES) pin-reset: $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink $(JLINK) -CommanderScript $(OUTPUT_BINARY_DIRECTORY)/pinreset.jlink; [ "$$?" -eq 1 ] - + START_GDB_SERVER_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/start_gdbserver.sh $(START_GDB_SERVER_SCRIPT): $(BUILD_DIRECTORIES) - echo "JLinkGDBServer -if swd -device nrf51822 -LocalHostOnly" > $(START_GDB_SERVER_SCRIPT) - + echo "JLinkGDBServer -if swd -device nrf51822 -LocalHostOnly" > $(START_GDB_SERVER_SCRIPT) + gdbserver: $(START_GDB_SERVER_SCRIPT) - /bin/sh $(START_GDB_SERVER_SCRIPT) - -GDB_COMMAND_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/gdbinit + /bin/sh $(START_GDB_SERVER_SCRIPT) + +GDB_COMMAND_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/gdbinit $(GDB_COMMAND_SCRIPT): debug echo " \n\ target remote localhost:2331 \n\ @@ -292,22 +341,15 @@ $(GDB_COMMAND_SCRIPT): debug b main \n\ b app_error_handler \n\ monitor reset \n\ - continue" >> $(GDB_COMMAND_SCRIPT) + continue" > $(GDB_COMMAND_SCRIPT) + +#end of FLASHER selection +endif gdb: $(GDB_COMMAND_SCRIPT) debug - arm-none-eabi-gdb -x $(GDB_COMMAND_SCRIPT) - -serial: - screen /dev/cu.usbmodem1411 38400 + $(GDB) -x $(GDB_COMMAND_SCRIPT) -openocd_flash: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin - $(OPENOCD) $(OPENOCD_ARGS) -c "program $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin verify $(STARTADDRESS)" - -openocd_flash_softdevice6: $(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin $(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin - $(OPENOCD) -c"init; reset halt; nrf51 mass_erase; flash write_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin 0x10001000; flash write_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin 0; verify_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin 0x10001000; verify_image $(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin 0; reset; shutdown" - -$(OUTPUT_BINARY_DIRECTORY)/softdevice_uicr.bin: $(SOFTDEVICE_HEX_PATH) $(BUILD_DIRECTORIES) - $(OBJCOPY) -Iihex -Obinary --only-section .sec3 $< $@ - -$(OUTPUT_BINARY_DIRECTORY)/softdevice_main.bin: $(SOFTDEVICE_HEX_PATH) $(BUILD_DIRECTORIES) - $(OBJCOPY) -Iihex -Obinary --remove-section .sec3 $< $@ +serial: + screen /dev/ttyUSB1cu.usbmodem1411 38400 + + -- cgit v1.2.3