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

Segger Fixed Memory Allocation in Flash and SoftDevice compatibility.

Hi All,

New user here but couldn't find a concrete answer to the following question.

In PIC land I've usually allocated fixed memory using the _at_ or __attribute__ label but Segger doesn't support this. From googling I read to add a reference to the xml file, which I've done as shown below:

<!DOCTYPE Board_Memory_Definition_File>
<root name="nRF52810_xxAA">
  <MemorySegment access="ReadOnly" name="FLASH1" size="0x00030000" start="0x00000000" />
  <MemorySegment access="Read/Write" name="RAM1" size="0x00006000" start="0x20000000" />
  <MemorySegment access="Read/Write" name="CODE_RAM1" size="0x00006000" start="0x00800000" />

  <MemorySegment name="$(FLASH_NAME:FLASH)">
    <ProgramSection alignment="4" load="Yes" name=".settingsStore" start="0x00000000" />
  </MemorySegment>
</root>

You can see that the start is 0x0 which is probably a bad idea, likely the entry point of the application if it's like PIC's. A related question to ask at this point is where does a SoftDevice get placed in Flash?

Back to the main question, I then have the following to take up a 4kb page of flash (actual usage is 1kb so plenty for futureproofing).

static const union {
  struct settingsProto settings;
  uint8_t pad[FLASH_PAGE_SIZE_BYTES];
} store __attribute__((section(".settingsStore"))); // reserve flash page

Upon build I receive the error:

unplaced section: .settingsStore [config.o], size=4000, align=4



Parents Reply Children
No Data
Related