I'm working on my owm dfu service and until recently I used pstorage_raw for handling memory. Now as I wanted to implement bonding, I added the peer manager, because I'm not so sure about implementing the security features by myself. Thus, I had to switch from pstorage to fstorage.
As fstorage uses section variables, I added fs_data to the linker file. Usually the fs_config variables used by the fds module in peer manager and my dfu service are written in RAM at start up, which is working fine when I flash the program. BUT if I reset the nRF, these config are completely overwritten and the peer manager init fails!
Furthermore, sd_ble_enable always tells me "RAM START ADDR 0x20002008 should be adjusted to 0x20001FE8", although it is set to 0x20001FE8 which you can see in my linker-file:
SEARCH_DIR(.)
GROUP(-lgcc -lc -lnosys)
MEMORY
{
FLASH (rx) : ORIGIN = 0x1c000, LENGTH = 0x1A000
RAM (rwx) : ORIGIN = 0x20001FE8, LENGTH = 0x6018
/** Location in UICR where bootloader start address is stored. */
UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04
}
SECTIONS
{
/* Write the bootloader address in UICR. */
.uicrBootStartAddress :
{
KEEP(*(.uicrBootStartAddress))
} > UICR_BOOTLOADER
.fs_data :
{
. = ALIGN(4);
PROVIDE(__start_fs_data = .);
KEEP(*(.fs_data))
PROVIDE(__stop_fs_data = .);
} > RAM
}
INCLUDE "nrf5x_common.ld"
I'm working with an Eclipse makefile Project with Cross ARM GCC on a nRF52832 with s132_nrf52_2.0.0_softdevice.hex and the nRF5_SDK_11.0.0_89a8197.
I'm really desparate and have no idea how to proceede like this, and I don't want to revert all the modification from implementing peer manager and fstorage again, if I don't have to.
I know that SDK12 just released, but I don't have a compatible chip revision...