<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/84917/porting-project-from-sdk12-3-to-sdk17-and-sd132-to-sd140-unable-to-start-custom-application-from-custom-bootloader-no-dfu-starting-after-sd-in-flash-storage</link><description>Hi, 
 We have a product based on nrf52840 which is already in production for several years. It was built over SoftDevice132 and SDK 12.3. 
 The project has 2 components: 
 
 custom bootloader (no DFU) which has only one meaning: updates the app if it</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 23 Feb 2022 13:00:06 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/84917/porting-project-from-sdk12-3-to-sdk17-and-sd132-to-sd140-unable-to-start-custom-application-from-custom-bootloader-no-dfu-starting-after-sd-in-flash-storage" /><item><title>RE: Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/thread/354576?ContentTypeID=1</link><pubDate>Wed, 23 Feb 2022 13:00:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2ec6b0c7-6d05-402f-b14f-36b3223441be</guid><dc:creator>Mircea Coman</dc:creator><description>&lt;p&gt;Thank you Vidar! I think this settles the issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/thread/354522?ContentTypeID=1</link><pubDate>Wed, 23 Feb 2022 10:14:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5c82eb43-fea5-40a6-88f9-0f72d2352878</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The jump_to_addr() implementation only works when you have code optimization is enabled. This is a known limitation, unfortunately. What happens without optimization is that the input arguments &amp;#39;new_msp&amp;#39; and &amp;#39;addr&amp;#39; gets placed on the stack instead of being loaded directly into r0 and r1 and the reference to &amp;#39;addr&amp;#39; becomes lost as soon as you reset the stack pointer here:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;__set_MSP(new_msp);&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/thread/354341?ContentTypeID=1</link><pubDate>Tue, 22 Feb 2022 12:38:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:895cb32e-c6db-42ca-a003-19c6e52e7b25</guid><dc:creator>Mircea Coman</dc:creator><description>&lt;p&gt;Hi Vidar,&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I was able to tweak the custom bootloader in such a way that now it starts the APP, no matter at what address it resides on the flash (by extracting the function &amp;#39;&lt;strong&gt;app_start()&amp;#39;&lt;/strong&gt; from &amp;#39;&lt;strong&gt;nrf_bootloader_app_start_final.c&lt;/strong&gt;&amp;#39; and mixing it with function &amp;#39;&lt;strong&gt;nrf_bootloader_app_start&lt;/strong&gt;&amp;#39; from SDK12.3. Can you please take a look and check if something&amp;#39;s missing?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUT I have a strange problem&lt;/strong&gt;: it works ONLY if the bootloader is built with SIZE OPTIMIZATION (2) or Build Optimization (1). Otherwise: exception.&lt;/p&gt;
&lt;p&gt;Ideas?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bootloader code:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#include &amp;lt;stdint.h&amp;gt;
#include &amp;quot;boards.h&amp;quot;
#include &amp;quot;nrf_mbr.h&amp;quot;
#include &amp;quot;app_error.h&amp;quot;
#include &amp;quot;app_error_weak.h&amp;quot;
#include &amp;quot;nrf_bootloader_info.h&amp;quot;
#include &amp;quot;nrf_delay.h&amp;quot;

void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t * p_file_name)
{
}


void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
{
}


void app_error_handler_bare(uint32_t error_code)
{
}

void jump_to_addr2(uint32_t new_msp, uint32_t addr)
{
    __set_MSP(new_msp);
    ((void (*)(void))addr)();
}


void app_start2(uint32_t vector_table_addr)
{
    const uint32_t current_isr_num = (__get_IPSR() &amp;amp; IPSR_ISR_Msk);
    const uint32_t new_msp         = *((uint32_t *)(vector_table_addr));                    // The app&amp;#39;s Stack Pointer is found as the first word of the vector table.
    const uint32_t reset_handler   = *((uint32_t *)(vector_table_addr + sizeof(uint32_t))); // The app&amp;#39;s Reset Handler is found as the second word of the vector table.

    __set_CONTROL(0x00000000);   // Set CONTROL to its reset value 0.
    __set_PRIMASK(0x00000000);   // Set PRIMASK to its reset value 0.
    __set_BASEPRI(0x00000000);   // Set BASEPRI to its reset value 0.
    __set_FAULTMASK(0x00000000); // Set FAULTMASK to its reset value 0.

    ASSERT(current_isr_num == 0); // If this is triggered, the CPU is currently in an interrupt.

    // The CPU is in Thread mode (main context).
    jump_to_addr2(new_msp, reset_handler); // Jump directly to the App&amp;#39;s Reset Handler.
}

void nrf_bootloader_app_start_old(uint32_t start_addr)
{
    printf(&amp;quot;Running nrf_bootloader_app_start with address: 0x%08x\r\n&amp;quot;, start_addr);

    uint32_t err_code;

    //NRF_LOG_INFO(&amp;quot;Initializing SD in mbr\r\n&amp;quot;);
    err_code = nrf_dfu_mbr_init_sd();
    if(err_code != NRF_SUCCESS)
    {
        printf(&amp;quot;Failed running nrf_dfu_mbr_init_sd\r\n&amp;quot;);
        return;
    }

    // Disable interrupts
    printf(&amp;quot;Disabling interrupts\r\n&amp;quot;);

    NVIC-&amp;gt;ICER[0]=0xFFFFFFFF;
#if defined(__NRF_NVIC_ISER_COUNT) &amp;amp;&amp;amp; __NRF_NVIC_ISER_COUNT == 2
    NVIC-&amp;gt;ICER[1]=0xFFFFFFFF;
#endif

    // Set the sd softdevice vector table base address
    printf(&amp;quot;Setting SD vector table base: 0x%08x\r\n&amp;quot;, start_addr);
    err_code = sd_softdevice_vector_table_base_set(start_addr);
    if(err_code != NRF_SUCCESS)
    {
        printf(&amp;quot;Failed running sd_softdevice_vector_table_base_set\r\n&amp;quot;);
        return;
    }

    // Run application
    //nrf_bootloader_app_start_impl(start_addr);
	app_start2(start_addr);
}

int main(void)
{  
	/* APP start flash address: 0x3D000*/
	nrf_bootloader_app_start_old(0x3D000);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XML flash placement file:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;!DOCTYPE Linker_Placement_File&amp;gt;
&amp;lt;Root name=&amp;quot;Flash Section Placement&amp;quot;&amp;gt;
  &amp;lt;MemorySegment name=&amp;quot;FLASH1&amp;quot; start=&amp;quot;$(FLASH_PH_START)&amp;quot; size=&amp;quot;$(FLASH_PH_SIZE)&amp;quot;&amp;gt;
    &amp;lt;ProgramSection load=&amp;quot;no&amp;quot; name=&amp;quot;.reserved_flash&amp;quot; start=&amp;quot;$(FLASH_PH_START)&amp;quot; size=&amp;quot;$(FLASH_START)-$(FLASH_PH_START)&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;0x100&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.vectors&amp;quot; start=&amp;quot;$(FLASH_START)&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.init&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.init_rodata&amp;quot; /&amp;gt;
	&amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.sdh_ble_observers&amp;quot; inputsections=&amp;quot;*(SORT(.sdh_ble_observers*))&amp;quot; address_symbol=&amp;quot;__start_sdh_ble_observers&amp;quot; end_symbol=&amp;quot;__stop_sdh_ble_observers&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.sdh_req_observers&amp;quot; inputsections=&amp;quot;*(SORT(.sdh_req_observers*))&amp;quot; address_symbol=&amp;quot;__start_sdh_req_observers&amp;quot; end_symbol=&amp;quot;__stop_sdh_req_observers&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.sdh_state_observers&amp;quot; inputsections=&amp;quot;*(SORT(.sdh_state_observers*))&amp;quot; address_symbol=&amp;quot;__start_sdh_state_observers&amp;quot; end_symbol=&amp;quot;__stop_sdh_state_observers&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.sdh_stack_observers&amp;quot; inputsections=&amp;quot;*(SORT(.sdh_stack_observers*))&amp;quot; address_symbol=&amp;quot;__start_sdh_stack_observers&amp;quot; end_symbol=&amp;quot;__stop_sdh_stack_observers&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.sdh_soc_observers&amp;quot; inputsections=&amp;quot;*(SORT(.sdh_soc_observers*))&amp;quot; address_symbol=&amp;quot;__start_sdh_soc_observers&amp;quot; end_symbol=&amp;quot;__stop_sdh_soc_observers&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.nrf_sections&amp;quot; address_symbol=&amp;quot;__start_nrf_sections&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.text&amp;quot; /&amp;gt;
    
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.fs_data&amp;quot;  inputsections=&amp;quot;*(.fs_data*)&amp;quot; runin=&amp;quot;.fs_data_run&amp;quot;/&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.dtors&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.ctors&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.rodata&amp;quot; size=&amp;quot;0x4&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.ARM.exidx&amp;quot; address_symbol=&amp;quot;__exidx_start&amp;quot; end_symbol=&amp;quot;__exidx_end&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; runin=&amp;quot;.fast_run&amp;quot; name=&amp;quot;.fast&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; runin=&amp;quot;.data_run&amp;quot; name=&amp;quot;.data&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;Yes&amp;quot; runin=&amp;quot;.tdata_run&amp;quot; name=&amp;quot;.tdata&amp;quot; /&amp;gt;
  &amp;lt;/MemorySegment&amp;gt;
  &amp;lt;MemorySegment name=&amp;quot;RAM1&amp;quot; start=&amp;quot;$(RAM_PH_START)&amp;quot; size=&amp;quot;$(RAM_PH_SIZE)&amp;quot;&amp;gt;
    &amp;lt;ProgramSection load=&amp;quot;no&amp;quot; name=&amp;quot;.reserved_ram&amp;quot; start=&amp;quot;$(RAM_PH_START)&amp;quot; size=&amp;quot;$(RAM_START)-$(RAM_PH_START)&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;0x100&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.vectors_ram&amp;quot; start=&amp;quot;$(RAM_START)&amp;quot; address_symbol=&amp;quot;__app_ram_start__&amp;quot;/&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.nrf_sections_run&amp;quot; address_symbol=&amp;quot;__start_nrf_sections_run&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.fs_data_run&amp;quot; address_symbol=&amp;quot;__start_fs_data&amp;quot; end_symbol=&amp;quot;__stop_fs_data&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.nrf_sections_run_end&amp;quot; address_symbol=&amp;quot;__end_nrf_sections_run&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.fast_run&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.data_run&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.tdata_run&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.bss&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.tbss&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.non_init&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; size=&amp;quot;__HEAPSIZE__&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.heap&amp;quot; /&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;8&amp;quot; size=&amp;quot;__STACKSIZE__&amp;quot; load=&amp;quot;No&amp;quot; place_from_segment_end=&amp;quot;Yes&amp;quot; name=&amp;quot;.stack&amp;quot;  address_symbol=&amp;quot;__StackLimit&amp;quot; end_symbol=&amp;quot;__StackTop&amp;quot;/&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;8&amp;quot; size=&amp;quot;__STACKSIZE_PROCESS__&amp;quot; load=&amp;quot;No&amp;quot; name=&amp;quot;.stack_process&amp;quot; /&amp;gt;
  &amp;lt;/MemorySegment&amp;gt;
  &amp;lt;MemorySegment name=&amp;quot;uicr_bootloader_start_address&amp;quot; start=&amp;quot;0x10001014&amp;quot; size=&amp;quot;0x4&amp;quot;&amp;gt;
    &amp;lt;ProgramSection alignment=&amp;quot;4&amp;quot; keep=&amp;quot;Yes&amp;quot; load=&amp;quot;Yes&amp;quot; name=&amp;quot;.uicr_bootloader_start_address&amp;quot; address_symbol=&amp;quot;__start_uicr_bootloader_start_address&amp;quot; end_symbol=&amp;quot;__stop_uicr_bootloader_start_address&amp;quot; start = &amp;quot;0x10001014&amp;quot; size=&amp;quot;0x4&amp;quot; /&amp;gt;
  &amp;lt;/MemorySegment&amp;gt;
  
&amp;lt;/Root&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;.emProject:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;:&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;!DOCTYPE CrossStudio_Project_File&amp;gt;
&amp;lt;solution
  Name=&amp;quot;secure_bootloader_ble_s140_pca10056_debug&amp;quot;
  target=&amp;quot;8&amp;quot;
  version=&amp;quot;2&amp;quot;&amp;gt;
  &amp;lt;project Name=&amp;quot;secure_bootloader_ble_s140_pca10056_debug&amp;quot;&amp;gt;
    &amp;lt;configuration
      Name=&amp;quot;Common&amp;quot;
      arm_architecture=&amp;quot;v7EM&amp;quot;
      arm_core_type=&amp;quot;Cortex-M4&amp;quot;
      arm_endian=&amp;quot;Little&amp;quot;
      arm_fp_abi=&amp;quot;Hard&amp;quot;
      arm_fpu_type=&amp;quot;FPv4-SP-D16&amp;quot;
      arm_linker_heap_size=&amp;quot;0&amp;quot;
      arm_linker_process_stack_size=&amp;quot;0&amp;quot;
      arm_linker_stack_size=&amp;quot;512&amp;quot;
      arm_linker_treat_warnings_as_errors=&amp;quot;No&amp;quot;
      arm_simulator_memory_simulation_parameter=&amp;quot;RWX 00000000,00100000,FFFFFFFF;RWX 20000000,00010000,CDCDCDCD&amp;quot;
      arm_target_device_name=&amp;quot;nRF52840_xxAA&amp;quot;
      arm_target_interface_type=&amp;quot;SWD&amp;quot;
      c_preprocessor_definitions=&amp;quot;BLE_STACK_SUPPORT_REQD;BOARD_PCA10056;CONFIG_GPIO_AS_PINRESET;DEBUG_NRF;INITIALIZE_USER_SECTIONS;NO_VTOR_CONFIG;NRF52840_XXAA;NRF_SD_BLE_API_VERSION=7;S140;SOFTDEVICE_PRESENT;SVC_INTERFACE_CALL_AS_NORMAL_FUNCTION;&amp;quot;
      c_user_include_directories=&amp;quot;../../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/crypto/backend/optiga;../../../../../components/libraries/delay;../../../../../components/libraries/experimental_section_vars;../../../../../components/libraries/fstorage;../../../../../components/libraries/log;../../../../../components/libraries/log/src;../../../../../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/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;../../../../../external/segger_rtt;../../../../../integration/nrfx;../../../../../modules/nrfx;../../../../../modules/nrfx/hal;../../../../../modules/nrfx/mdk;../config;&amp;quot;
      debug_additional_load_file=&amp;quot;../../../../../components/softdevice/s140/hex/s140_nrf52_7.2.0_softdevice.hex&amp;quot;
      debug_register_definition_file=&amp;quot;../../../../../modules/nrfx/mdk/nrf52840.svd&amp;quot;
      debug_start_from_entry_point_symbol=&amp;quot;No&amp;quot;
      debug_target_connection=&amp;quot;J-Link&amp;quot;
      gcc_debugging_level=&amp;quot;Level 3&amp;quot;
      gcc_entry_point=&amp;quot;Reset_Handler&amp;quot;
      linker_output_format=&amp;quot;hex&amp;quot;
      linker_printf_fmt_level=&amp;quot;long&amp;quot;
      linker_printf_width_precision_supported=&amp;quot;Yes&amp;quot;
      linker_scanf_fmt_level=&amp;quot;long&amp;quot;
      linker_section_placement_file=&amp;quot;flash_placement.xml&amp;quot;
      linker_section_placement_macros=&amp;quot;FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x27000;FLASH_SIZE=0xd000;RAM_START=0x20005978;RAM_SIZE=0x3a688&amp;quot;
      linker_section_placements_segments=&amp;quot;FLASH1 RX 0x0 0x100000;RAM1 RWX 0x20000000 0x40000;uicr_bootloader_start_address RX 0x10001014 0x4;&amp;quot;
      macros=&amp;quot;CMSIS_CONFIG_TOOL=../../../../../external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar&amp;quot;
      project_directory=&amp;quot;&amp;quot;
      project_type=&amp;quot;Executable&amp;quot; /&amp;gt;
    &amp;lt;folder Name=&amp;quot;Segger Startup Files&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;$(StudioDir)/source/thumb_crt0.s&amp;quot; /&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;folder Name=&amp;quot;nRF_Libraries&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/util/app_error_weak.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/util/app_util_platform.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/util/nrf_assert.c&amp;quot;&amp;gt;
        &amp;lt;configuration Name=&amp;quot;Release&amp;quot; build_exclude_from_build=&amp;quot;No&amp;quot; /&amp;gt;
      &amp;lt;/file&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/atomic_fifo/nrf_atfifo.c&amp;quot;&amp;gt;
        &amp;lt;configuration Name=&amp;quot;Release&amp;quot; build_exclude_from_build=&amp;quot;No&amp;quot; /&amp;gt;
      &amp;lt;/file&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/atomic/nrf_atomic.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/fstorage/nrf_fstorage.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/fstorage/nrf_fstorage_nvmc.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/experimental_section_vars/nrf_section_iter.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/fstorage/nrf_fstorage_sd.c&amp;quot; /&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;folder Name=&amp;quot;nRF_SoftDevice&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/softdevice/common/nrf_sdh.c&amp;quot; /&amp;gt;
      &amp;lt;configuration Name=&amp;quot;Release&amp;quot; build_exclude_from_build=&amp;quot;No&amp;quot; /&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;folder Name=&amp;quot;nRF_Drivers&amp;quot; /&amp;gt;
    &amp;lt;folder Name=&amp;quot;Application&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../main.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../config/sdk_config.h&amp;quot; /&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;folder Name=&amp;quot;nRF_Segger_RTT&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../external/segger_rtt/SEGGER_RTT.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../external/segger_rtt/SEGGER_RTT_Syscalls_SES.c&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../external/segger_rtt/SEGGER_RTT_printf.c&amp;quot; /&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;folder Name=&amp;quot;nRF_Bootloader&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/bootloader/nrf_bootloader_info.c&amp;quot;&amp;gt;
        &amp;lt;configuration Name=&amp;quot;Release&amp;quot; build_exclude_from_build=&amp;quot;No&amp;quot; /&amp;gt;
      &amp;lt;/file&amp;gt;
      &amp;lt;configuration Name=&amp;quot;Release&amp;quot; build_exclude_from_build=&amp;quot;No&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../components/libraries/bootloader/dfu/nrf_dfu_mbr.c&amp;quot;&amp;gt;
        &amp;lt;configuration Name=&amp;quot;Release&amp;quot; build_exclude_from_build=&amp;quot;No&amp;quot; /&amp;gt;
      &amp;lt;/file&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;folder Name=&amp;quot;None&amp;quot;&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../modules/nrfx/mdk/ses_startup_nrf52840.s&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../modules/nrfx/mdk/ses_startup_nrf_common.s&amp;quot; /&amp;gt;
      &amp;lt;file file_name=&amp;quot;../../../../../modules/nrfx/mdk/system_nrf52840.c&amp;quot; /&amp;gt;
    &amp;lt;/folder&amp;gt;
    &amp;lt;configuration Name=&amp;quot;Release&amp;quot; gcc_optimization_level=&amp;quot;Level 2 for size&amp;quot; /&amp;gt;
  &amp;lt;/project&amp;gt;
  &amp;lt;configuration
    Name=&amp;quot;Release&amp;quot;
    gcc_optimization_level=&amp;quot;Optimize For Size&amp;quot;
    link_time_optimization=&amp;quot;No&amp;quot; /&amp;gt;
&amp;lt;/solution&amp;gt;
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/thread/354132?ContentTypeID=1</link><pubDate>Mon, 21 Feb 2022 12:37:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a318f317-9ed0-4a56-8157-80295f0186a9</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi &lt;span style="font-weight:400;"&gt;Mircea&lt;/span&gt;,&lt;/p&gt;
[quote user="Mircea Coman"]Bootloader starts but it fails to execute APP[/quote]
&lt;p&gt;You must generate and flash the bootloader settings page (&lt;span&gt;&lt;a title="Generating and displaying bootloader settings" href="https://infocenter.nordicsemi.com/topic/ug_nrfutil/UG/nrfutil/nrfutil_settings_generate_display.html?cp=10_7_6"&gt;Generating and displaying bootloader settings&lt;/a&gt;&lt;/span&gt;) to tell the bootloader that there is a valid application present. It will refuse to boot the application without it.&lt;/p&gt;
[quote user=""]From what I see in the bootloader samples in SDK17, the bootloader starts the application by calling ‘nrf_bootloader_app_start’, which seems to run the SoftDevice (flash addr 0x1000) which I am guessing will default to jumping the execution at 0x26000 (which it assumes is the starting adress of app).[/quote]
&lt;p&gt;This approach is only valid when the application starts on top of the Softdevice. Did you try using the app start code you had in your original project? It should still work with the new Softdevice.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/thread/353908?ContentTypeID=1</link><pubDate>Fri, 18 Feb 2022 15:32:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0e08e404-98f8-44f3-842b-77b1fe622097</guid><dc:creator>Mircea Coman</dc:creator><description>&lt;p&gt;Update2:&lt;br /&gt;&lt;br /&gt;I build sample &amp;#39;&lt;strong&gt;secure_bootloader&lt;/strong&gt;&amp;#39; as BOOTLOADER and loaded sample &amp;#39;&lt;strong&gt;gpay_ble_app_hrs_freertos_pca10056_s140&lt;/strong&gt;&amp;#39; to flash (loaded by default at 0x27000).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Bootloader starts but it fails to execute APP - exception.&lt;/p&gt;
&lt;p&gt;Application runs well as standalone application but not in conjunction with Bootloader&lt;br /&gt;&lt;br /&gt;Ideas? Is something missing?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Porting project from SDK12.3 to SDK17 and SD132 to SD140: Unable to start custom Application from custom Bootloader (no DFU) starting after SD in flash storage</title><link>https://devzone.nordicsemi.com/thread/353891?ContentTypeID=1</link><pubDate>Fri, 18 Feb 2022 14:42:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:237cab38-b22d-4dba-87e3-c71b03b1b294</guid><dc:creator>Mircea Coman</dc:creator><description>&lt;p&gt;Maybe it&amp;#39;s worth&amp;nbsp;adding (maybe it&amp;#39;s already obvious)&amp;nbsp;&amp;nbsp;that our &amp;#39;Custom Bootloader&amp;#39; acts as a regular application, completely out of &amp;#39;Bootloader library&amp;#39; scope.&amp;nbsp;&lt;br /&gt;So maybe another relevant question would be: is it possible to have 2 (or more) applications residing on the flash, the first that runs at device powerup is &amp;#39;custom bootloader&amp;#39; which then forwards execution to our &amp;#39;application&amp;#39; (which uses SD)?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>