This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Tutorial on setting up the bootloader for nrf52832 in IAR

Hi.

 

I' m using nRF52832, SDK v15.0.0, S132.

 

I'm want tutorial how make bootloader DFU in IAR.

 

How I make bootloader DFU for nrf52832 in IAR?

Parents Reply Children
  • I did the secure bootloader DFU. I attained step 8 in document.


    I instal softdevice and secure bootloader to flash nRF52832. After make the ble_app_buttonless_dfu start download and debug but program not start.

    If install only softdevice and buttonless dfu then I got error "No bootloader was found".

    If install softdevice and bootloader after buttonless dfu then I got not start programs.

    Although security bootloader work.
    The verification was performed in the following steps:

    E1. Generate new firmware.

    E2. Generate new DFU .zip package.

    E3. Switch the device to DFU mode, do DFU update and verify new image is running.

    Help me

  • If you flash SoftDevice, Bootloader and the Buttonless DFU application, then the device should start in DFU mode. If you want the device to run the application, then you need to generate a bootloader settings page and flash that along with the SD,BL and App. 

    See https://github.com/NordicSemiconductor/pc-nrfutil#generate-2 on how to generate the settings hex file. 

  • Thanks bjorn-spockeli. 

    I get new problem. I mayn't build progect in IAR. Progect  Buttonless DFU.

    I get errors:

    Error[Pe020]: identifier "nrf_dfu_set_peer_data_svci_async_t" is undefined 
    Error[Pe020]: identifier "nrf_dfu_set_peer_data_svci_async_t" is undefined 
    Error[Pe020]: identifier "nrf_dfu_set_peer_data_svci_async_t" is undefined 3
    Error[Pe020]: identifier "nrf_dfu_peer_data_t" is undefined 
    Error[Pe020]: identifier "nrf_dfu_peer_data_t" is undefined 
    Error[Pe020]: identifier "SYSTEM_SERVICE_ATT_SIZE" is undefined  

  • nrf_dfu_peer_data_t is defined in nrf_dfu_types.h - Make sure that you have added this in the include path in IAR ( the file is located in components\libraries\bootloader\dfu) 

    nrf_dfu_set_peer_data_svci_async_t is defined when NRF_SVCI_ASYNC_FUNC_DECLARE(NRF_DFU_SVCI_SET_PEER_DATA, nrf_dfu_set_peer_data, nrf_dfu_peer_data_t, nrf_dfu_peer_data_state_t); is called nrf_dfu_ble_svci_bond_sharing.h

    #define NRF_SVCI_ASYNC_FUNC_DECLARE(svci_num,                                           \
                                        name,                                               \
                                        param_type,                                         \
                                        state_type)                                         \
    /*lint --e{19} */                                                                       \
    NRF_SVCI_ACYNC_FUNC_TYPEDEF(name, param_type, state_type);                              \
    NRF_SVCI_ASYNC_EVENT_FUNC_TYPEDEF(name, state_type);                                    \
                                                                                            \
    typedef struct                                                                          \
    {                                                                                       \
        name ## _async_fn_t     async_func;                                                 \
        name ## _event_fn_t     sys_evt_handler;                                            \
        state_type              state;                                                      \
    } name ## _svci_async_t;
    

  • I add file \libraries\bootloader\dfu figure IAR error_1.

    I include in main.c following libraries:

    #include "nrf_dfu_ble_svci_bond_sharing.h"
    #include "nrf_svci_async_function.h"
    #include "nrf_svci_async_handler.h"


    figure library nrf_dfu_ble_svci_bond_sharing.h

    figure library nrf_svci_async_function.h

    Errors remained.

Related