NRF_ERROR_STORAGE_FULL error when trying to flash app+bootloader+softdevice

Hello! I am trying to flash a modified version of the bps example with the bootloader to the nrf52DK configured for development on the nRF52805. I have gotten this process working for the native DK config, so I know it works. Starting to port it over to the smaller flash/ram size I think is causing some issues? My project+softdevice size is about 155kB, according to segger. I had to change the RAM start address from 0x20001a5=40 to 0x20001a50, as per a previous error message. Fixing that one yield this next one, which I haven't been able to fix:

I was able to put this bootloader onto the blinky project, so either my project is simply too big, or I messed up some other configuration settings along the way. Any help here would be greatly appriciated

I have attached the project files, I am working in the 10040e ses folder.

I am using the S112 v7.0.2 softdevice.

edit: some more details. I am using optimization level 3, which gets the filesize down to 155kB. Optimization level 0 makes the file 190kB (phew!). At a file size this big, the bootloader won't merge with the application file.

Thanks so much!

8737.glaucoma_dev_prj_s112dev.zip

Parents
  • Hi,

    You get the NRF_ERROR_STORAGE_FULL because fds_init() returns an error. You can check the exact error code by debugging, but the most likely reason for this is that the application overlaps with the FDS pages. During initialization, FDS sees that the pages are neither valid FDS pages nor empty, and it will back off. So it seems like you simply do not have enough falsh space to do everythign you want.

    Have you make an overview of your memory map (start and end addresses of the major compoents - SotDevice, application, FDS, bootloader, bootloader settings)? You can see memory layout in the bootloader documentation for reference. Most likely you will find that you need to optimize. The first thing that comes to mind is that perhaps you don't need FDS at all? Does your application need BLE bonding or other persistent storage? If not, you can skip FDS alltogether, saving both the pages reseved for FDS and the FDS implementation.

Reply
  • Hi,

    You get the NRF_ERROR_STORAGE_FULL because fds_init() returns an error. You can check the exact error code by debugging, but the most likely reason for this is that the application overlaps with the FDS pages. During initialization, FDS sees that the pages are neither valid FDS pages nor empty, and it will back off. So it seems like you simply do not have enough falsh space to do everythign you want.

    Have you make an overview of your memory map (start and end addresses of the major compoents - SotDevice, application, FDS, bootloader, bootloader settings)? You can see memory layout in the bootloader documentation for reference. Most likely you will find that you need to optimize. The first thing that comes to mind is that perhaps you don't need FDS at all? Does your application need BLE bonding or other persistent storage? If not, you can skip FDS alltogether, saving both the pages reseved for FDS and the FDS implementation.

Children
No Data
Related