Bootloader memory layout with softdevice question

Hello,

i am developing a bootloader with softdevice112 on nrf52805.

I have setup everything and I can see bootloader and app working, just a question about memory layout to avoid losing flash space, i see on this official link that Bootloader settings and Bootloader parameter page request both 4k + 4k in the latest part of the flash.

In my code I have this linker file:

MEMORY
{
    /* NOTE 1 K = 1 KiBi = 1024 bytes */
  /* These values correspond to the NRF52805 with SoftDevices S112 7.2.0 */
  FLASH (rx) : ORIGIN = 0x28000, LENGTH = 24K
  RAM : ORIGIN = 0x20000008, LENGTH = 24K - 8
  mbr_params_page (r) : ORIGIN = 0x0002E000, LENGTH = 4K
  bootloader_settings_page (r) : ORIGIN = 0x0002F000, LENGTH = 4K
  uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4
}

SECTIONS {
     .uicr_bootloader_start_address :  {
       KEEP(*(.uicr_bootloader_start_address))
       . = ALIGN(4)
     } > uicr_bootloader_start_address
};

This is on bootloader code.

Then I am compiling and creating the output file with the startinh value of bootloader ( so 0x28000 ) and all works fine, but my question is: using only uicr_bootloader_start_address to set the address of bootloader start do I need to have also Bootloader settings and Bootloader parameter or can I remove them? I don't understand if Softdevice will use them in some way in my case because from my point of view I am not using them at all.

Thanks!

  • You will need those pages. Even though you are not actively using it, it is used to verify the application, and to store information about the application (keys, version numbers, signature, etc...). 

    So, unfortunately, it is pretty tight to fit an application, softdevice and a bootloader into the nRF52805. If you exceed the size that you need for your application, you would need a bigger device, such as the nRF52820 or nRF52832/33.

    Best regards,

    Edvin

Related