Nrf52810 DFU Secure bootloader . Part of the HEX regions are out of the device memory size, but you can still proceed write operation.

Hi. 
I am using the Nrf52DK to program our custom Nrf52810 based board for DFU .
We use the:
nrf5sdk v17.0.2  with softdevice s112. along with the pca10040e_s112_ble example but when we try to add the hex file on NrfConnect we get the following error. 


"Part of the HEX regions are out of the device memory size, but you can still proceed wrote operation."


 The write process although proceeds and we see the DFU service on NrfConnect. 
Although later on when we try to connect to the service it just disconnects.
The memory layout on the nrf52810 looks like this , with the circled are being the bootloader. 

ps. we tried do the same process on the Nrf52DK board and it worked as expected.

Any help appreciated. 

Parents
  • Hi, 

    See this answer


     The write process although proceeds and we see the DFU service on NrfConnect. 
    Although later on when we try to connect to the service it just disconnects.

    Please run debug version of the bootloader and provide the debug log. Thanks. 

    Regards,
    Amanda

  • Hi.  It seems the app takes too much time to advertise. When it did i did 3 or 4 connection attempts with the following logs:

    <info> app: Inside main
    <debug> app: In nrf_bootloader_init
    <debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
    <debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
    <debug> nrf_dfu_settings: Using settings page.
    <debug> nrf_dfu_settings: Copying forbidden parts from backup page.
    <debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    <info> nrf_dfu_settings: Backing up settings page to address 0x2E000.
    <info> app: Entering DFU mode.
    <debug> nrf_dfu_ble: Initializing BLE DFU transport
    <debug> nrf_dfu_ble: Setting up vector table: 0x00022000
    <debug> nrf_dfu_ble: Enabling SoftDevice.
    <debug> nrf_dfu_ble: Configuring BLE stack.
    <debug> nrf_dfu_ble: Enabling the BLE stack.
    <debug> nrf_dfu_ble: No advertising name found
    <debug> nrf_dfu_ble: Using default advertising name
    <debug> nrf_dfu_ble: Advertising...
    <debug> nrf_dfu_ble: BLE DFU transport initialized.
    <debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
    <debug> app: Enter main loop
    <debug> nrf_dfu_ble: Connected
    <debug> nrf_dfu_ble: Advertising...
    <debug> nrf_dfu_settings: Using settings page.
    <debug> nrf_dfu_settings: Copying forbidden parts from backup page.
    <debug> nrf_dfu_ble: Connected
    <debug> nrf_dfu_ble: Advertising...
    <debug> nrf_dfu_settings: Using settings page.
    <debug> nrf_dfu_settings: Copying forbidden parts from backup page.
    <debug> nrf_dfu_ble: Connected
    <debug> nrf_dfu_ble: Advertising...
    <debug> nrf_dfu_settings: Using settings page.
    <debug> nrf_dfu_settings: Copying forbidden parts from backup page.

  • Hi, 

    Did you modify the bootloader? If so, what is that? If not, please erase the board before programming. 

    What is the disconnect reason? The disconnect reason should be passed with the BLE_GAP_EVT_DISCONNECT event in p_ble_evt->evt.gap_evt.params.disconnected.reason as

            case BLE_GAP_EVT_DISCONNECTED:
            {
                // Disconnected reason
                NRF_LOG_INFO("Disconnected, reason %d.",
                              p_ble_evt->evt.gap_evt.params.disconnected.reason);
                
                m_conn_handle = BLE_CONN_HANDLE_INVALID;
    
                /* Restart advertising so that the DFU Controller can reconnect if possible. */
                if (!(m_flags & DFU_BLE_RESETTING_SOON))
                {
                    err_code = advertising_start();
                    APP_ERROR_CHECK(err_code);
                }
    
                if (m_observer)
                {
                    m_observer(NRF_DFU_EVT_TRANSPORT_DEACTIVATED);
                }
            } break;

    -Amanda

Reply
  • Hi, 

    Did you modify the bootloader? If so, what is that? If not, please erase the board before programming. 

    What is the disconnect reason? The disconnect reason should be passed with the BLE_GAP_EVT_DISCONNECT event in p_ble_evt->evt.gap_evt.params.disconnected.reason as

            case BLE_GAP_EVT_DISCONNECTED:
            {
                // Disconnected reason
                NRF_LOG_INFO("Disconnected, reason %d.",
                              p_ble_evt->evt.gap_evt.params.disconnected.reason);
                
                m_conn_handle = BLE_CONN_HANDLE_INVALID;
    
                /* Restart advertising so that the DFU Controller can reconnect if possible. */
                if (!(m_flags & DFU_BLE_RESETTING_SOON))
                {
                    err_code = advertising_start();
                    APP_ERROR_CHECK(err_code);
                }
    
                if (m_observer)
                {
                    m_observer(NRF_DFU_EVT_TRANSPORT_DEACTIVATED);
                }
            } break;

    -Amanda

Children
No Data
Related