Hi,
I notice my dfu bootloader oversized after I merge softblink led feature into the example code. How can I modify the linker_section_placement_macros and the linker_section_placements_segments without breaking the requirement for Memory layout - Memory range nRF52840
HW: PCA10056
SW: nRF5_SDK_15.2.0_9412b96
example code: \dfu\secure_bootloader\pca10056_ble + softblink led feature
Bootloader project file:
<!DOCTYPE CrossStudio_Project_File> <solution Name="secure_bootloader_ble_s140_pca10056" target="8" version="2"> <project Name="secure_bootloader_ble_s140_pca10056"> <configuration Name="Common" arm_architecture="v7EM" arm_core_type="Cortex-M4" arm_endian="Little" arm_fp_abi="Hard" arm_fpu_type="FPv4-SP-D16" arm_linker_heap_size="0" arm_linker_process_stack_size="0" arm_linker_stack_size="2048" arm_linker_treat_warnings_as_errors="No" arm_simulator_memory_simulation_parameter="RWX 00000000,00100000,FFFFFFFF;RWX 20000000,00010000,CDCDCDCD" arm_target_device_name="nRF52840_xxAA" arm_target_interface_type="SWD" c_preprocessor_definitions="APP_TIMER_V2;APP_TIMER_V2_RTC1_ENABLED;BLE_STACK_SUPPORT_REQD;BOARD_PCA10056;CONFIG_GPIO_AS_PINRESET;FLOAT_ABI_HARD;INITIALIZE_USER_SECTIONS;NO_VTOR_CONFIG;NRF52840_XXAA;NRF_DFU_SETTINGS_VERSION=1;NRF_DFU_SVCI_ENABLED;NRF_SD_BLE_API_VERSION=6;S140;SOFTDEVICE_PRESENT;SVC_INTERFACE_CALL_AS_NORMAL_FUNCTION;" c_user_include_directories="../../config;../../../../../components/ble/common;../../../../../components/boards;../../../../../components/libraries/atomic;../../../../../components/libraries/atomic_fifo;../../../../../components/libraries/balloc;../../../../../components/libraries/bootloader;../../../../../components/libraries/bootloader/ble_dfu;../../../../../components/libraries/bootloader/dfu;../../../../../components/libraries/crc32;../../../../../components/libraries/crypto;../../../../../components/libraries/crypto/backend/cc310;../../../../../components/libraries/crypto/backend/cc310_bl;../../../../../components/libraries/crypto/backend/cifra;../../../../../components/libraries/crypto/backend/mbedtls;../../../../../components/libraries/crypto/backend/micro_ecc;../../../../../components/libraries/crypto/backend/nrf_hw;../../../../../components/libraries/crypto/backend/nrf_sw;../../../../../components/libraries/crypto/backend/oberon;../../../../../components/libraries/delay;../../../../../components/libraries/experimental_section_vars;../../../../../components/libraries/fstorage;../../../../../components/libraries/led_softblink;../../../../../components/libraries/log;../../../../../components/libraries/log/src;../../../../../components/libraries/low_power_pwm;../../../../../components/libraries/mem_manager;../../../../../components/libraries/memobj;../../../../../components/libraries/mutex;../../../../../components/libraries/queue;../../../../../components/libraries/ringbuf;../../../../../components/libraries/scheduler;../../../../../components/libraries/stack_info;../../../../../components/libraries/strerror;../../../../../components/libraries/svc;../../../../../components/libraries/timer;../../../../../components/libraries/sortlist;../../../../../components/libraries/util;../../../../../components/softdevice/common;../../../../../components/softdevice/s140/headers;../../../../../components/softdevice/s140/headers/nrf52;../../../../../components/toolchain/cmsis/include;../..;../../../../../external/fprintf;../../../../../external/nano-pb;../../../../../external/nrf_cc310/include;../../../../../external/nrf_cc310_bl/include;../../../../../external/nrf_oberon;../../../../../external/nrf_oberon/include;../../../../../integration/nrfx;../../../../../modules/nrfx;../../../../../modules/nrfx/hal;../../../../../modules/nrfx/mdk;../../../../../components/libraries/timer/experimental;../config;" debug_additional_load_file="../../../../../components/softdevice/s140/hex/s140_nrf52_6.1.0_softdevice.hex" debug_register_definition_file="../../../../../modules/nrfx/mdk/nrf52840.svd" debug_start_from_entry_point_symbol="No" debug_target_connection="J-Link" gcc_debugging_level="Level 3" gcc_entry_point="Reset_Handler" linker_output_format="hex" linker_printf_fmt_level="long" linker_printf_width_precision_supported="Yes" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0xf8000;FLASH_SIZE=0x6000;RAM_START=0x200057b8;RAM_SIZE=0x3a848" linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;mbr_params_page RX 0x000FE000 0x1000;bootloader_settings_page RX 0x000FF000 0x1000;uicr_mbr_params_page RX 0x10001018 0x4;uicr_bootloader_start_address RX 0x10001014 0x4" macros="CMSIS_CONFIG_TOOL=../../../../../external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar" project_directory="" project_type="Executable" /> <folder Name="Segger Startup Files"> <file file_name="$(StudioDir)/source/thumb_crt0.s" /> </folder> <folder Name="nRF_Log"> <file file_name="../../../../../components/libraries/log/src/nrf_log_frontend.c" /> <file file_name="../../../../../components/libraries/log/src/nrf_log_str_formatter.c" /> </folder> <folder Name="nRF_Libraries"> <file file_name="../../../../../components/libraries/util/app_error_weak.c" /> <file file_name="../../../../../components/libraries/scheduler/app_scheduler.c" /> <file file_name="../../../../../components/libraries/timer/experimental/app_timer2.c" /> <file file_name="../../../../../components/libraries/util/app_util_platform.c" /> <file file_name="../../../../../components/libraries/crc32/crc32.c" /> <file file_name="../../../../../components/libraries/timer/experimental/drv_rtc.c" /> <file file_name="../../../../../components/libraries/led_softblink/led_softblink.c" /> <file file_name="../../../../../components/libraries/low_power_pwm/low_power_pwm.c" /> <file file_name="../../../../../components/libraries/mem_manager/mem_manager.c" /> <file file_name="../../../../../components/libraries/util/nrf_assert.c" /> <file file_name="../../../../../components/libraries/atomic_fifo/nrf_atfifo.c" /> <file file_name="../../../../../components/libraries/atomic/nrf_atomic.c" /> <file file_name="../../../../../components/libraries/balloc/nrf_balloc.c" /> <file file_name="../../../../../external/fprintf/nrf_fprintf.c" /> <file file_name="../../../../../external/fprintf/nrf_fprintf_format.c" /> <file file_name="../../../../../components/libraries/fstorage/nrf_fstorage.c" /> <file file_name="../../../../../components/libraries/fstorage/nrf_fstorage_nvmc.c" /> <file file_name="../../../../../components/libraries/fstorage/nrf_fstorage_sd.c" /> <file file_name="../../../../../components/libraries/memobj/nrf_memobj.c" /> <file file_name="../../../../../components/libraries/queue/nrf_queue.c" /> <file file_name="../../../../../components/libraries/ringbuf/nrf_ringbuf.c" /> <file file_name="../../../../../components/libraries/sortlist/nrf_sortlist.c" /> <file file_name="../../../../../components/libraries/experimental_section_vars/nrf_section_iter.c" /> <file file_name="../../../../../components/libraries/strerror/nrf_strerror.c" /> </folder> <folder Name="nano-pb"> <file file_name="../../../../../external/nano-pb/pb_common.c" /> <file file_name="../../../../../external/nano-pb/pb_decode.c" /> </folder> <folder Name="nRF_Crypto backend CC310_BL"> <file file_name="../../../../../components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecc.c" /> <file file_name="../../../../../components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecdsa.c" /> <file file_name="../../../../../components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_hash.c" /> <file file_name="../../../../../components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_init.c" /> <file file_name="../../../../../components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_shared.c" /> </folder> <folder Name="nRF_Oberon_Crypto"> <file file_name="../../../../../external/nrf_oberon/lib/nrf52/liboberon_2.0.5.a" /> </folder> <folder Name="nRF_SoftDevice"> <file file_name="../../../../../components/softdevice/common/nrf_sdh.c" /> <file file_name="../../../../../components/softdevice/common/nrf_sdh_ble.c" /> <file file_name="../../../../../components/softdevice/common/nrf_sdh_soc.c" /> </folder> <folder Name="nRF_Drivers"> <file file_name="../../../../../modules/nrfx/hal/nrf_nvmc.c" /> </folder> <folder Name="nRF_Crypto"> <file file_name="../../../../../components/libraries/crypto/nrf_crypto_ecc.c" /> <file file_name="../../../../../components/libraries/crypto/nrf_crypto_ecdsa.c" /> <file file_name="../../../../../components/libraries/crypto/nrf_crypto_hash.c" /> <file file_name="../../../../../components/libraries/crypto/nrf_crypto_init.c" /> <file file_name="../../../../../components/libraries/crypto/nrf_crypto_shared.c" /> </folder> <folder Name="Application"> <file file_name="../../../dfu_public_key.c" /> <file file_name="../../main.c" /> <file file_name="../config/sdk_config.h" /> </folder> <folder Name="nRF_SVC"> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_svci_handler.c" /> <file file_name="../../../../../components/libraries/svc/nrf_svc_handler.c" /> </folder> <folder Name="nRF_BLE"> <file file_name="../../../../../components/ble/common/ble_srv_common.c" /> </folder> <folder Name="nRF_Bootloader"> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader.c" /> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader_app_start.c" /> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader_app_start_final.c" /> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader_dfu_timers.c" /> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader_fw_activation.c" /> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader_info.c" /> <file file_name="../../../../../components/libraries/bootloader/nrf_bootloader_wdt.c" /> </folder> <folder Name="None"> <file file_name="../../../../../modules/nrfx/mdk/ses_startup_nrf52840.s" /> <file file_name="../../../../../modules/nrfx/mdk/ses_startup_nrf_common.s" /> <file file_name="../../../../../modules/nrfx/mdk/system_nrf52840.c" /> </folder> <folder Name="nRF_DFU"> <file file_name="../../../../../components/libraries/bootloader/dfu/dfu-cc.pb.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu.c" /> <file file_name="../../../../../components/libraries/bootloader/ble_dfu/nrf_dfu_ble.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_flash.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_handling_error.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_mbr.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_req_handler.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_settings.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_settings_svci.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_transport.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_utils.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_validation.c" /> <file file_name="../../../../../components/libraries/bootloader/dfu/nrf_dfu_ver_validation.c" /> </folder> <folder Name="nrf_cc310_bl"> <file file_name="../../../../../external/nrf_cc310_bl/lib/libnrf_cc310_bl_0.9.10.a" /> </folder> <folder Name="nRF_Crypto backend Oberon"> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_chacha_poly_aead.c" /> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_ecc.c" /> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_ecdh.c" /> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_ecdsa.c" /> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_eddsa.c" /> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_hash.c" /> <file file_name="../../../../../components/libraries/crypto/backend/oberon/oberon_backend_hmac.c" /> </folder> </project> <configuration Name="Release" c_preprocessor_definitions="NDEBUG" gcc_debugging_level="None" gcc_optimization_level="Optimize For Size" /> </solution>
Error code from mergehex:
C:S\project\nrfutil_tool>nrfutil settings generate --family NRF52840 --application blinky_rtc_FreeRTOS_pca10056.hex --application-version 1 --bootloader-version 1 --bl-settings-version 1 settings.hex Note: Generating a DFU settings page with backup page included. This is only required for bootloaders from nRF5 SDK 15.1 and newer. If you want to skip backup page generation, use --no-backup option. Generated Bootloader DFU settings .hex file and stored it in: settings.hex Bootloader DFU Settings: * File: settings.hex * Family: NRF52840 * Start Address: 0x000FF000 * CRC: 0x745E67EE * Settings Version: 0x00000001 (1) * App Version: 0x00000001 (1) * Bootloader Version: 0x00000001 (1) * Bank Layout: 0x00000000 * Current Bank: 0x00000000 * Application Size: 0x000135E8 (79336 bytes) * Application CRC: 0x412BC0D9 * Bank0 Bank Code: 0x00000001 * Softdevice Size: 0x00000000 (0 bytes) * Boot Validation CRC: 0x00000000 * SD Boot Validation Type: 0x00000000 (0) * App Boot Validation Type: 0x00000000 (0) C:\project\nrfutil_tool>mergehex.exe --merge settings.hex secure_bootloader_ble_s140_pca10056.hex --output my_bootloader.hex Parsing input hex files. Merging files. ERROR: The hex files cannot be merged since there are conflicts.
Here is the setting.hex and bootloader.hex