From e9fd356a2efe8c3a1b70a16ced4ec8739381893b Mon Sep 17 00:00:00 2001 From: "Erdem U. Altinyurt" Date: Wed, 3 Sep 2014 01:10:13 +0300 Subject: Added SoftDevice 6 support + OpenOCD flash + some fixes --- Makefile.common | 214 +++++++++++++++++++++++++-------------------- Makefile.template | 17 ++-- gcc_nrf51_s110-sd6_xxaa.ld | 10 +++ gcc_nrf51_s110-sd6_xxab.ld | 10 +++ 4 files changed, 149 insertions(+), 102 deletions(-) create mode 100644 gcc_nrf51_s110-sd6_xxaa.ld create mode 100644 gcc_nrf51_s110-sd6_xxab.ld diff --git a/Makefile.common b/Makefile.common index b4cfbe8..9618c57 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1,31 +1,37 @@ DEVICE := NRF51 DEVICESERIES := nrf51 -SDK_INCLUDE_PATH = $(SDK_PATH)/Include/ -SDK_SOURCE_PATH = $(SDK_PATH)/Source/ -# TEMPLATE_PATH += $(SDK_SOURCE_PATH)/templates/gcc/ -OUTPUT_BINARY_DIRECTORY := _build +SDK_INCLUDE_PATH = $(SDK_PATH)/Include +SDK_SOURCE_PATH = $(SDK_PATH)/Source +# TEMPLATE_PATH += $(SDK_SOURCE_PATH)/templates/gcc +OUTPUT_BINARY_DIRECTORY := build ifeq ($(OS),Windows_NT) -include $(TEMPLATE_PATH)Makefile.windows +include $(TEMPLATE_PATH)/Makefile.windows else -include $(TEMPLATE_PATH)Makefile.posix +include $(TEMPLATE_PATH)/Makefile.posix endif ifeq ($(LINKER_SCRIPT),) - ifeq ($(USE_SOFTDEVICE), S110) - LINKER_SCRIPT = gcc_$(DEVICESERIES)_s110_$(DEVICE_VARIANT).ld - OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s110_$(DEVICE_VARIANT) - STARTADDRESS = 0x16000 + ifeq ($(USE_SOFTDEVICE), S110-sd6) + LINKER_SCRIPT = gcc_$(DEVICESERIES)_s110-sd6_$(DEVICE_VARIANT).ld + OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s110-sd6_$(DEVICE_VARIANT) + STARTADDRESS = 0x14000 else - ifeq ($(USE_SOFTDEVICE), S210) - LINKER_SCRIPT = gcc_$(DEVICESERIES)_s210_$(DEVICE_VARIANT).ld - OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s210_$(DEVICE_VARIANT) - STARTADDRESS = 0x16000 + ifeq ($(USE_SOFTDEVICE), S110) + LINKER_SCRIPT = gcc_$(DEVICESERIES)_s110_$(DEVICE_VARIANT).ld + OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s110_$(DEVICE_VARIANT) + STARTADDRESS = 0x16000 else - LINKER_SCRIPT = gcc_$(DEVICESERIES)_blank_$(DEVICE_VARIANT).ld - OUTPUT_FILENAME := $(OUTPUT_FILENAME)_$(DEVICE_VARIANT) - STARTADDRESS = 0x0 + ifeq ($(USE_SOFTDEVICE), S120) + LINKER_SCRIPT = gcc_$(DEVICESERIES)_s120_$(DEVICE_VARIANT).ld + OUTPUT_FILENAME := $(OUTPUT_FILENAME)_s120_$(DEVICE_VARIANT) + STARTADDRESS = 0x18000 + else + LINKER_SCRIPT = gcc_$(DEVICESERIES)_blank_$(DEVICE_VARIANT).ld + OUTPUT_FILENAME := $(OUTPUT_FILENAME)_$(DEVICE_VARIANT) + STARTADDRESS = 0x0 + endif endif endif else @@ -36,19 +42,20 @@ CPU := cortex-m0 # Toolchain commands JLINK := JLinkExe -Device nrf51822 -speed 100 -if swd -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" - -MK := mkdir +OPENOCD := /usr/local/bin/openocd -f interface/stlink-v2.cfg -c"transport select hla_swd" -f target/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" + +MK := mkdir RM := rm -rf -OBJECT_DIRECTORY := _build -LISTING_DIRECTORY := _build +OBJECT_DIRECTORY := build +LISTING_DIRECTORY := build C_SOURCE_FILES += system_$(DEVICESERIES).c ASSEMBLER_SOURCE_FILES += gcc_startup_$(DEVICESERIES).s @@ -57,46 +64,51 @@ ASSEMBLER_SOURCE_FILES += gcc_startup_$(DEVICESERIES).s #LDFLAGS += -L"$(GNU_INSTALL_ROOT)/arm-none-eabi/lib/armv6-m" #LDFLAGS += -L"$(GNU_INSTALL_ROOT)/lib/gcc/arm-none-eabi/$(GNU_VERSION)/armv6-m" LDFLAGS += -Xlinker -Map=$(LISTING_DIRECTORY)/$(OUTPUT_FILENAME).map -LDFLAGS += -mcpu=$(CPU) -mthumb -mabi=aapcs -L $(TEMPLATE_PATH) -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=$(CPU) -mthumb -mabi=aapcs -L $(TEMPLATE_PATH) -T$(LINKER_SCRIPT) # Compiler flags CFLAGS += -mcpu=$(CPU) -mthumb -mabi=aapcs -D$(DEVICE) -D$(BOARD) -D$(TARGET_CHIP) --std=gnu99 -CFLAGS += -Wall -Werror +CFLAGS += -Wall CFLAGS += -mfloat-abi=soft # Assembler flags ASMFLAGS += -x assembler-with-cpp - -INCLUDEPATHS += -I"$(SDK_PATH)Include" -INCLUDEPATHS += -I"$(SDK_PATH)Include/gcc" -INCLUDEPATHS += -I"$(SDK_PATH)Include/console" -INCLUDEPATHS += -I"$(SDK_PATH)Include/nrf_assert" -INCLUDEPATHS += -I"$(SDK_PATH)Include/sdk" -INCLUDEPATHS += -I"$(SDK_PATH)Include/app_common" -INCLUDEPATHS += -I"$(SDK_PATH)Include/sd_common" -INCLUDEPATHS += -I"$(SDK_PATH)Include/ble" -INCLUDEPATHS += -I"$(SDK_PATH)Include/ble/ble_services" -INCLUDEPATHS += -I"$(SDK_PATH)Include/ble/device_manager" -INCLUDEPATHS += -I"$(SDK_PATH)Include/ble/device_manager/experimental" -INCLUDEPATHS += -I"$(SDK_PATH)Include/ext_sensors" -INCLUDEPATHS += -I"$(SDK_PATH)Include/serialization" -INCLUDEPATHS += -I"$(SDK_PATH)Include/serialization/common" -INCLUDEPATHS += -I"$(SDK_PATH)Include/serialization/common/transport" -INCLUDEPATHS += -I"$(SDK_PATH)Include/serialization/common/struct_ser" -INCLUDEPATHS += -I"$(SDK_PATH)Include/serialization/connectivity" -INCLUDEPATHS += -I"$(SDK_PATH)Include/serialization/connectivity/codecs" -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) - INCLUDEPATHS += -I"$(SDK_PATH)Include/s110" + +INCLUDEPATHS += -I./src +INCLUDEPATHS += -I"$(SDK_PATH)/Include" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/gcc" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/console" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/nrf_assert" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/sdk" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/app_common" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/sd_common" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/ble" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/ble/ble_services" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/ble/device_manager" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/ble/device_manager/experimental" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/ext_sensors" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/common" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/common/transport" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/common/struct_ser" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/connectivity" +INCLUDEPATHS += -I"$(SDK_PATH)/Include/serialization/connectivity/codecs" +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) + INCLUDEPATHS += -I"$(SDK_PATH)/Include/s110" else - ifeq ($(USE_SOFTDEVICE), S210) - INCLUDEPATHS += -I"$(SDK_PATH)Include/s120" - else - INCLUDEPATHS += -I"$(SDK_PATH)Include/sdk_soc" - endif + ifeq ($(USE_SOFTDEVICE), S110) + INCLUDEPATHS += -I"$(SDK_PATH)/Include/s110" + else + ifeq ($(USE_SOFTDEVICE), S120) + INCLUDEPATHS += -I"$(SDK_PATH)/Include/s120" + else + INCLUDEPATHS += -I"$(SDK_PATH)/Include/sdk_soc" + endif + endif endif # Sorting removes duplicates @@ -110,8 +122,8 @@ C_SOURCE_FILENAMES = $(notdir $(C_SOURCE_FILES) ) ASSEMBLER_SOURCE_FILENAMES = $(notdir $(ASSEMBLER_SOURCE_FILES) ) # Make a list of source paths -C_SOURCE_PATHS += $(SDK_SOURCE_PATH) $(TEMPLATE_PATH) $(wildcard $(SDK_SOURCE_PATH)*/) $(wildcard $(SDK_SOURCE_PATH)ext_sensors/*/) $(wildcard $(SDK_SOURCE_PATH)ble/*/) $(BUILD_SCRIPTS_PATH) -ASSEMBLER_SOURCE_PATHS = $(SDK_SOURCE_PATH) $(TEMPLATE_PATH) $(wildcard $(SDK_SOURCE_PATH)*/) $(BUILD_SCRIPTS_PATH) +C_SOURCE_PATHS += $(SDK_SOURCE_PATH) $(TEMPLATE_PATH) $(wildcard $(SDK_SOURCE_PATH)/*/) $(wildcard $(SDK_SOURCE_PATH)/ext_sensors/*/) $(wildcard $(SDK_SOURCE_PATH)/ble/*/) $(BUILD_SCRIPTS_PATH) src +ASSEMBLER_SOURCE_PATHS = $(SDK_SOURCE_PATH) $(TEMPLATE_PATH) $(wildcard $(SDK_SOURCE_PATH)/*/) $(BUILD_SCRIPTS_PATH) C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=.o) ) ASSEMBLER_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(ASSEMBLER_SOURCE_FILENAMES:.s=.o) ) @@ -124,13 +136,13 @@ vpath %.s $(ASSEMBLER_SOURCE_PATHS) -include $(addprefix $(OBJECT_DIRECTORY)/, $(COBJS:.o=.d)) ### Targets -# debug: OUTPUT_FILENAME:=$(OUTPUT_FILENAME)-debug +# debug: OUTPUT_FILENAME:=$(OUTPUT_FILENAME)-debug debug: CFLAGS += -DDEBUG -g3 -O0 debug: ASMFLAGS += -DDEBUG -g3 -O0 debug: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).hex .PHONY: release -# release: OUTPUT_FILENAME:=$(OUTPUT_FILENAME)-release +# release: OUTPUT_FILENAME:=$(OUTPUT_FILENAME)-release release: CFLAGS += -DNDEBUG -O3 release: ASMFLAGS += -DNDEBUG -O3 release: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).hex @@ -187,13 +199,14 @@ sleep 500 \n\ r \n\ q \n\ " \ - > $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink + > $(OUTPUT_BINARY_DIRECTORY)/erase_all.jlink -erase_all: $(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 + $(OBJCOPY) -I ihex -O binary $(SOFTDEVICE_HEX_PATH) $(OUTPUT_BINARY_DIRECTORY)/softdevice.bin + endif $(OUTPUT_BINARY_DIRECTORY)/flash_softdevice.jlink: $(BUILD_DIRECTORIES) echo " \n\ @@ -214,7 +227,6 @@ r \n\ 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 ] @@ -235,7 +247,7 @@ w4 0x4001e504,2 # enable erase \n\ page=`expr $$page + 1`; \ startaddr=`expr $$startaddr + 1024`; \ starthexaddr=`printf "0x%x" $$startaddr`; \ - done + done echo "sleep 1000 \n\ r \n\ w4 0x4001e504,1 # enable write \n\ @@ -261,29 +273,41 @@ $(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) - -gdbserver: $(START_GDB_SERVER_SCRIPT) - /bin/sh $(START_GDB_SERVER_SCRIPT) - -GDB_COMMAND_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/gdbinit -$(GDB_COMMAND_SCRIPT): debug - echo " \n\ - target remote localhost:2331 \n\ - mon flash breakpoints = 1 \n\ - monitor reset \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) - -gdb: $(GDB_COMMAND_SCRIPT) debug - arm-none-eabi-gdb -x $(GDB_COMMAND_SCRIPT) - -serial: - screen /dev/cu.usbmodem1411 38400 + +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) + +gdbserver: $(START_GDB_SERVER_SCRIPT) + /bin/sh $(START_GDB_SERVER_SCRIPT) + +GDB_COMMAND_SCRIPT=$(OUTPUT_BINARY_DIRECTORY)/gdbinit +$(GDB_COMMAND_SCRIPT): debug + echo " \n\ + target remote localhost:2331 \n\ + mon flash breakpoints = 1 \n\ + monitor reset \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) + +gdb: $(GDB_COMMAND_SCRIPT) debug + arm-none-eabi-gdb -x $(GDB_COMMAND_SCRIPT) + +serial: + screen /dev/cu.usbmodem1411 38400 + +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 $< $@ diff --git a/Makefile.template b/Makefile.template index 5d57cbd..15a1713 100644 --- a/Makefile.template +++ b/Makefile.template @@ -6,12 +6,15 @@ DEVICE_VARIANT := xxaa #DEVICE_VARIANT := xxab USE_SOFTDEVICE := S110 -#USE_SOFTDEVICE := S210 - -HOME = /Users/hongbo.yang/ -SDK_PATH = $(HOME)Developer/prjs/embeded/nrf/nrf51_sdk_v6_0_0_43681/nrf51822/ -SOFTDEVICE_HEX_PATH = $(HOME)Developer/prjs/embeded/nrf/s110_nrf51822_7.0.0/s110_nrf51822_7.0.0_softdevice.hex -BUILD_SCRIPTS_PATH = $(HOME)Developer/prjs/embeded/prjs/nrf51822/build_scripts/ +#USE_SOFTDEVICE := S120 +#USE_SOFTDEVICE := S110-sd6 +#USE_SOFTDEVICE := S120-sd6 + +HOME = ~ +SDK_PATH = $(HOME)/nRF51_SDK_v6.0.0.43681/Nordic/nrf51822 +SOFTDEVICE_HEX_PATH = $(HOME)/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_softdevice.hex +#SOFTDEVICE_HEX_PATH = $(HOME)/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_softdevice.hex +BUILD_SCRIPTS_PATH = $(HOME)/F2FS/nrf51822-macosx-build-scripts TEMPLATE_PATH = $(BUILD_SCRIPTS_PATH) # CFLAGS += -DBLE_STACK_SUPPORT_REQD @@ -107,5 +110,5 @@ endif OUTPUT_FILENAME := main -include $(TEMPLATE_PATH)Makefile.common +include $(TEMPLATE_PATH)/Makefile.common diff --git a/gcc_nrf51_s110-sd6_xxaa.ld b/gcc_nrf51_s110-sd6_xxaa.ld new file mode 100644 index 0000000..ac2bf9e --- /dev/null +++ b/gcc_nrf51_s110-sd6_xxaa.ld @@ -0,0 +1,10 @@ +/* Linker script to configure memory regions. */ +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x14000, LENGTH = 0x2C000 /* 80 kB is taken by S110, 176 kB available for application. */ + RAM (rwx) : ORIGIN = 0x20002000, LENGTH = 0x2000 /* 8 kB, 8 kB is taken by S110. */ +} +INCLUDE "gcc_nrf51_common.ld" diff --git a/gcc_nrf51_s110-sd6_xxab.ld b/gcc_nrf51_s110-sd6_xxab.ld new file mode 100644 index 0000000..e59c48d --- /dev/null +++ b/gcc_nrf51_s110-sd6_xxab.ld @@ -0,0 +1,10 @@ +/* Linker script to configure memory regions. */ +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x14000, LENGTH = 0xC000 /* 80 kB is taken by S110, 48 kB available for application. */ + RAM (rwx) : ORIGIN = 0x20002000, LENGTH = 0x2000 /* 8 kB, 8 kB is taken by S110. */ +} +INCLUDE "gcc_nrf51_common.ld" -- cgit v1.2.3