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

Bootloader nRF52

Hi all,

I am trying to "add" the DFU bootloader to my application and I have some questions regarding it:

my thought are:

  1. add to DFU bootloader example code, part of my code adding the BLE capitability

-my code will run normally until the button is pressed to jump to the bootloader and perform the DFU

  1. add the DFU service to my current project and add the device manager, and more required libraries.

which option is most viable?

Update 03/06/17:

Softdevice $132

SDK 12.2

How can I swith from my aplication to the bootloader?

Thanks

Parents
  • Hi Arepa,

    I don't think option 1 would be a very good one. With this option, you have to do "bootloader update" whenever you want to update your firmware. Application update option has no use. When you do bootloader update, you are limited to the size of the bootloader which is written in UICR and can't be changed.

    Option 2 is much better one.

    You should consider Option 1 only when you want to do background DFU, where you device functional normally when you are receiving DFU. But this requires lots of change in the bootloader and on how to integrate it with your application.

  • Hi Hung, Option 3 could be... Use the base DFU example and keep own my aplication apart.

    I mean program the DFU example to the nRF52

    Program my own apllication so doing the aplication jump to the DFU bootloader

    I am adding on my aplication:

    	err_code = sd_power_gpregret_clr(0, 0xFF);
    APP_ERROR_CHECK(err_code);
    err_code = sd_power_gpregret_set(0, BOOTLOADER_DFU_START);
    
    APP_ERROR_CHECK(err_code);
    
    sd_nvic_SystemReset();   
    
    NRF_POWER->GPREGRET = BOOTLOADER_DFU_START;
    
    NVIC_SystemReset();
    

    at the moment I am able to flash the bootloader, aplication and softdevice to my nRF52 but It keeps stuck on the bootloader, I am able to make the DFU, but it still keeps in the bootloader. Is it related to the bootloader settings? or BOOTLOADER_SETTINGS_ADDRESS?

Reply
  • Hi Hung, Option 3 could be... Use the base DFU example and keep own my aplication apart.

    I mean program the DFU example to the nRF52

    Program my own apllication so doing the aplication jump to the DFU bootloader

    I am adding on my aplication:

    	err_code = sd_power_gpregret_clr(0, 0xFF);
    APP_ERROR_CHECK(err_code);
    err_code = sd_power_gpregret_set(0, BOOTLOADER_DFU_START);
    
    APP_ERROR_CHECK(err_code);
    
    sd_nvic_SystemReset();   
    
    NRF_POWER->GPREGRET = BOOTLOADER_DFU_START;
    
    NVIC_SystemReset();
    

    at the moment I am able to flash the bootloader, aplication and softdevice to my nRF52 but It keeps stuck on the bootloader, I am able to make the DFU, but it still keeps in the bootloader. Is it related to the bootloader settings? or BOOTLOADER_SETTINGS_ADDRESS?

Children
No Data
Related