Change RAM_START and DFU

I have a project that has been deployed for a few years, which we regularly update via DFU in BLE.

On this project, I had to increase NRF_SDH_BLE_TOTAL_LINK_COUNT.

This caused a change in the size of RAM required by the SoftDevice.

In Segger Embeded Studio , I therefore adjusted RAM_START from 0x20002BF0 to 0x20003BE0

When I run the project without Bootloader, everything works fine.

However, when I update via DFU to the new version with RAM_START = 0x20003BE0, unfortunately I get the following error:

<warning> nrf_sdh_ble: Insufficient RAM allocated for the SoftDevice.
<warning> nrf_sdh_ble: Change the RAM start location from 0x20002BF0 to 0x20003BE0.
<warning> nrf_sdh_ble: Maximum RAM size for application is 0xC420.
<error> nrf_sdh_ble: sd_ble_enable() returned NRF_ERROR_NO_MEM.
<error> app: Fatal error
<error> app: ERROR 4 [NRF_ERROR_NO_MEM] at :0
PC at: 0x00000000
<error> app: End of error report

I notice that the new RAM_START value is not transmitted via the firmware update in DFU.

To continue upgrading my project on all deployed devices, I really need to be able to change NRF_SDH_BLE_TOTAL_LINK_COUNT and therefore also change RAM_START.

How can I manage this?

Parents Reply
  • Hi,

    Great to hear that you've found a way around this issue. 

    I can also inform you that you may see success if you use an older version of Segger Embedded Studio, since 5.70a is newer than what we supported.

    From the release notes for nRF5 SDK v17.1.0:

    The following toolchains/devices have been used for testing and verification:
    - ARM: MDK-ARM version 5.25   
    - GCC: GCC ARM Embedded 9.2020-q2.major
    - IAR: IAR Workbench 7.80.4
    - SES: SES 5.42a

    Kind regards,
    Andreas

Children
No Data
Related