From 3061ecca3d0fdfb87dabbf5f63c9e06c2a30f53a Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Thu, 23 Aug 2018 17:08:59 +0200 Subject: o Initial import. --- .../open_bootloader/pca10059_usb/armgcc/Makefile | 251 +++++++++++++++++++++ .../armgcc/open_bootloader_gcc_nrf52.ld | 103 +++++++++ 2 files changed, 354 insertions(+) create mode 100644 thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/Makefile create mode 100644 thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/open_bootloader_gcc_nrf52.ld (limited to 'thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc') diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/Makefile b/thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/Makefile new file mode 100644 index 0000000..d3269a6 --- /dev/null +++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/Makefile @@ -0,0 +1,251 @@ +PROJECT_NAME := open_bootloader_usb_mbr_pca10059 +TARGETS := nrf52840_xxaa +OUTPUT_DIRECTORY := _build + +SDK_ROOT := ../../../../.. +PROJ_DIR := ../.. + +$(OUTPUT_DIRECTORY)/nrf52840_xxaa.out: \ + LINKER_SCRIPT := open_bootloader_gcc_nrf52.ld + +# Source files common to all targets +SRC_FILES += \ + $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52840.S \ + $(SDK_ROOT)/components/libraries/bootloader/serial_dfu/nrf_dfu_serial_usb.c \ + $(SDK_ROOT)/components/libraries/experimental_log/src/nrf_log_frontend.c \ + $(SDK_ROOT)/components/libraries/experimental_log/src/nrf_log_str_formatter.c \ + $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecc.c \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecdsa.c \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_hash.c \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_init.c \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_shared.c \ + $(SDK_ROOT)/components/libraries/util/app_error_weak.c \ + $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/app_timer2.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd.c \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_core.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_serial_num.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_string_desc.c \ + $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ + $(SDK_ROOT)/components/libraries/crc32/crc32.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/drv_rtc.c \ + $(SDK_ROOT)/components/libraries/led_softblink/led_softblink.c \ + $(SDK_ROOT)/components/libraries/low_power_pwm/low_power_pwm.c \ + $(SDK_ROOT)/components/libraries/mem_manager/mem_manager.c \ + $(SDK_ROOT)/components/libraries/util/nrf_assert.c \ + $(SDK_ROOT)/components/libraries/atomic_fifo/nrf_atfifo.c \ + $(SDK_ROOT)/components/libraries/atomic/nrf_atomic.c \ + $(SDK_ROOT)/components/libraries/balloc/nrf_balloc.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf_format.c \ + $(SDK_ROOT)/components/libraries/fstorage/nrf_fstorage.c \ + $(SDK_ROOT)/components/libraries/fstorage/nrf_fstorage_nvmc.c \ + $(SDK_ROOT)/components/libraries/experimental_memobj/nrf_memobj.c \ + $(SDK_ROOT)/components/libraries/queue/nrf_queue.c \ + $(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \ + $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ + $(SDK_ROOT)/components/libraries/slip/slip.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_power.c \ + $(SDK_ROOT)/components/drivers_nrf/usbd/nrf_drv_usbd.c \ + $(SDK_ROOT)/components/drivers_nrf/nrf_soc_nosd/nrf_nvic.c \ + $(SDK_ROOT)/modules/nrfx/hal/nrf_nvmc.c \ + $(SDK_ROOT)/components/drivers_nrf/nrf_soc_nosd/nrf_soc.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power_clock.c \ + $(SDK_ROOT)/components/libraries/crypto/nrf_crypto_ecc.c \ + $(SDK_ROOT)/components/libraries/crypto/nrf_crypto_ecdsa.c \ + $(SDK_ROOT)/components/libraries/crypto/nrf_crypto_hash.c \ + $(SDK_ROOT)/components/libraries/crypto/nrf_crypto_init.c \ + $(SDK_ROOT)/components/libraries/crypto/nrf_crypto_shared.c \ + $(PROJ_DIR)/../dfu_public_key.c \ + $(PROJ_DIR)/main.c \ + $(SDK_ROOT)/external/nano-pb/pb_common.c \ + $(SDK_ROOT)/external/nano-pb/pb_decode.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/dfu-cc.pb.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_flash.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_handling_error.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_mbr.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_req_handler.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_settings.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_transport.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_utils.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_validation.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_ver_validation.c \ + $(SDK_ROOT)/components/libraries/bootloader/serial_dfu/nrf_dfu_serial.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader_app_start.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader_app_start_final.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader_dfu_timers.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader_fw_activation.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader_info.c \ + $(SDK_ROOT)/components/libraries/bootloader/nrf_bootloader_wdt.c \ + +# Include folders common to all targets +INC_FOLDERS += \ + $(PROJ_DIR)/config \ + $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/components/libraries/crypto/backend/micro_ecc \ + $(SDK_ROOT)/modules/nrfx/hal \ + $(SDK_ROOT)/components/libraries/crc32 \ + $(SDK_ROOT)/components/libraries/experimental_section_vars \ + $(SDK_ROOT)/components/libraries/mem_manager \ + $(SDK_ROOT)/components/libraries/crypto/backend/nrf_sw \ + $(SDK_ROOT)/components/libraries/util \ + $(SDK_ROOT)/modules/nrfx \ + $(SDK_ROOT)/components/libraries/timer/experimental \ + $(SDK_ROOT)/components/libraries/timer \ + $(SDK_ROOT)/components/libraries/crypto/backend/oberon \ + $(SDK_ROOT)/components/libraries/low_power_pwm \ + $(SDK_ROOT)/components/libraries/crypto/backend/cifra \ + $(SDK_ROOT)/components/libraries/atomic \ + $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310_bl \ + $(SDK_ROOT)/components/drivers_nrf/nrf_soc_nosd \ + $(SDK_ROOT)/components/softdevice/mbr/nrf52840/headers \ + $(SDK_ROOT)/components/libraries/bootloader/dfu \ + $(SDK_ROOT)/components/libraries/bootloader/serial_dfu \ + $(SDK_ROOT)/components/libraries/usbd/config \ + $(SDK_ROOT)/external/nrf_cc310_bl/include \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc \ + $(SDK_ROOT)/components/libraries/usbd \ + $(SDK_ROOT)/components/libraries/delay \ + $(SDK_ROOT)/integration/nrfx/legacy \ + $(SDK_ROOT)/components/libraries/stack_info \ + $(SDK_ROOT)/components/libraries/crypto/backend/nrf_hw \ + $(SDK_ROOT)/components/libraries/led_softblink \ + $(SDK_ROOT)/components/libraries/strerror \ + $(SDK_ROOT)/components/libraries/crypto/backend/mbedtls \ + $(SDK_ROOT)/components/boards \ + $(SDK_ROOT)/components/libraries/crypto/backend/cc310 \ + $(SDK_ROOT)/components/libraries/bootloader \ + $(SDK_ROOT)/external/fprintf \ + $(SDK_ROOT)/components/libraries/crypto \ + ../config \ + $(SDK_ROOT)/components/libraries/scheduler \ + $(SDK_ROOT)/components/libraries/slip \ + $(SDK_ROOT)/components/libraries/experimental_log/src \ + $(SDK_ROOT)/components/toolchain/cmsis/include \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm \ + $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/libraries/atomic_fifo \ + $(PROJ_DIR) \ + $(SDK_ROOT)/components/libraries/sortlist \ + $(SDK_ROOT)/components/libraries/fstorage \ + $(SDK_ROOT)/modules/nrfx/mdk \ + $(SDK_ROOT)/components/libraries/mutex \ + $(SDK_ROOT)/external/nrf_cc310/include \ + $(SDK_ROOT)/external/nano-pb \ + $(SDK_ROOT)/components/libraries/queue \ + $(SDK_ROOT)/components/libraries/experimental_log \ + $(SDK_ROOT)/components/libraries/experimental_memobj \ + $(SDK_ROOT)/components/drivers_nrf/usbd \ + +# Libraries common to all targets +LIB_FILES += \ + $(SDK_ROOT)/external/nrf_cc310_bl/lib/libnrf_cc310_bl_0.9.9.a \ + +# Optimization flags +OPT = -Os -g3 +# Uncomment the line below to enable link time optimization +#OPT += -flto + +# C flags common to all targets +CFLAGS += $(OPT) +CFLAGS += -DAPP_TIMER_V2 +CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +CFLAGS += -DBOARD_PCA10059 +CFLAGS += -DCONFIG_GPIO_AS_PINRESET +CFLAGS += -DFLOAT_ABI_HARD +CFLAGS += -DNRF52840_XXAA +CFLAGS += -DNRF_DFU_SETTINGS_VERSION=1 +CFLAGS += -DSVC_INTERFACE_CALL_AS_NORMAL_FUNCTION +CFLAGS += -mcpu=cortex-m4 +CFLAGS += -mthumb -mabi=aapcs +CFLAGS += -Wall -Werror +CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# keep every function in a separate section, this allows linker to discard unused ones +CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing +CFLAGS += -fno-builtin -fshort-enums -flto + +# C++ flags common to all targets +CXXFLAGS += $(OPT) + +# Assembler flags common to all targets +ASMFLAGS += -g3 +ASMFLAGS += -mcpu=cortex-m4 +ASMFLAGS += -mthumb -mabi=aapcs +ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +ASMFLAGS += -DAPP_TIMER_V2 +ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +ASMFLAGS += -DBOARD_PCA10059 +ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET +ASMFLAGS += -DFLOAT_ABI_HARD +ASMFLAGS += -DNRF52840_XXAA +ASMFLAGS += -DNRF_DFU_SETTINGS_VERSION=1 +ASMFLAGS += -DSVC_INTERFACE_CALL_AS_NORMAL_FUNCTION + +# Linker flags +LDFLAGS += $(OPT) +LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=cortex-m4 +LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# let linker dump unused sections +LDFLAGS += -Wl,--gc-sections +# use newlib in nano version +LDFLAGS += --specs=nano.specs + +nrf52840_xxaa: CFLAGS += -D__HEAP_SIZE=0 +nrf52840_xxaa: ASMFLAGS += -D__HEAP_SIZE=0 + +# Add standard libraries at the very end of the linker input, after all objects +# that may need symbols provided by these libraries. +LIB_FILES += -lc -lnosys -lm + + +.PHONY: default help + +# Default target - first one defined +default: nrf52840_xxaa + +# Print all targets that can be built +help: + @echo following targets are available: + @echo nrf52840_xxaa + @echo flash_mbr + @echo sdk_config - starting external tool for editing sdk_config.h + @echo flash - flashing binary + +TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc + + +include $(TEMPLATE_PATH)/Makefile.common + +$(foreach target, $(TARGETS), $(call define_target, $(target))) + +.PHONY: flash flash_mbr erase + +# Flash the program +flash: $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex + @echo Flashing: $< + nrfjprog -f nrf52 --program $< --sectorerase + nrfjprog -f nrf52 --reset + +# Flash softdevice +flash_mbr: + @echo Flashing: mbr_nrf52_2.3.0_mbr.hex + nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/mbr/nrf52840/hex/mbr_nrf52_2.3.0_mbr.hex --sectorerase + nrfjprog -f nrf52 --reset + +erase: + nrfjprog -f nrf52 --eraseall + +SDK_CONFIG_FILE := ../config/sdk_config.h +CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar +sdk_config: + java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE) diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/open_bootloader_gcc_nrf52.ld b/thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/open_bootloader_gcc_nrf52.ld new file mode 100644 index 0000000..ebbb0f9 --- /dev/null +++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/examples/dfu/open_bootloader/pca10059_usb/armgcc/open_bootloader_gcc_nrf52.ld @@ -0,0 +1,103 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0xe0000, LENGTH = 0x1e000 + RAM (rwx) : ORIGIN = 0x20000008, LENGTH = 0x3fff8 + uicr_mbr_params_page (r) : ORIGIN = 0x10001018, LENGTH = 0x4 + mbr_params_page (r) : ORIGIN = 0x000FE000, LENGTH = 0x1000 + uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4 + bootloader_settings_page (r) : ORIGIN = 0x000FF000, LENGTH = 0x1000 +} + +SECTIONS +{ + .uicr_mbr_params_page : + { + PROVIDE(__start_uicr_mbr_params_page = .); + KEEP(*(SORT(.uicr_mbr_params_page*))) + PROVIDE(__stop_uicr_mbr_params_page = .); + } > uicr_mbr_params_page + .mbr_params_page(NOLOAD) : + { + PROVIDE(__start_mbr_params_page = .); + KEEP(*(SORT(.mbr_params_page*))) + PROVIDE(__stop_mbr_params_page = .); + } > mbr_params_page + .uicr_bootloader_start_address : + { + PROVIDE(__start_uicr_bootloader_start_address = .); + KEEP(*(SORT(.uicr_bootloader_start_address*))) + PROVIDE(__stop_uicr_bootloader_start_address = .); + } > uicr_bootloader_start_address + .bootloader_settings_page(NOLOAD) : + { + PROVIDE(__start_bootloader_settings_page = .); + KEEP(*(SORT(.bootloader_settings_page*))) + PROVIDE(__stop_bootloader_settings_page = .); + } > bootloader_settings_page +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .fs_data : + { + PROVIDE(__start_fs_data = .); + KEEP(*(.fs_data)) + PROVIDE(__stop_fs_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .crypto_data : + { + PROVIDE(__start_crypto_data = .); + KEEP(*(SORT(.crypto_data*))) + PROVIDE(__stop_crypto_data = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .dfu_trans : + { + PROVIDE(__start_dfu_trans = .); + KEEP(*(SORT(.dfu_trans*))) + PROVIDE(__stop_dfu_trans = .); + } > FLASH + +} INSERT AFTER .text + +INCLUDE "nrf_common.ld" -- cgit v1.2.3