Cannot find RTT control block

Hello, I've tried to implement rtt logging in my own project but the control block cannot be found. So I tried the saadc example and that did not work either, I tried to use the blinky example and enabled LOG_ENABLED and LOG_BACKEND_RTT_ENABLED without luck. I checked my map file and it says that _SEGGER_RTT is placed outside ram somehow, ie not included in ram.

I use nordic sdk 17.1.0 with my nrf52810 chip. Blinky works as the led blinks which means the board is working.

Here is my linker script:

SEARCH_DIR(.)
GROUP(-lgcc -lc -lnosys)

MEMORY
{
  FLASH (rx) : ORIGIN = 0x0, LENGTH = 192K
  RAM (rwx) :  ORIGIN = 0x20000000, LENGTH = 24K
}

SECTIONS
{
}

SECTIONS
{
  . = ALIGN(4);
  .mem_section_dummy_ram :
  {
  }
  .log_dynamic_data :
  {
    PROVIDE(__start_log_dynamic_data = .);
    KEEP(*(SORT(.log_dynamic_data*)))
    PROVIDE(__stop_log_dynamic_data = .);
  } > RAM
  .log_filter_data :
  {
    PROVIDE(__start_log_filter_data = .);
    KEEP(*(SORT(.log_filter_data*)))
    PROVIDE(__stop_log_filter_data = .);
  } > RAM
} INSERT AFTER .data;

SECTIONS
{
  .mem_section_dummy_rom :
  {
  }
  .log_const_data :
  {
    PROVIDE(__start_log_const_data = .);
    KEEP(*(SORT(.log_const_data*)))
    PROVIDE(__stop_log_const_data = .);
  } > FLASH
  .log_backends :
  {
    PROVIDE(__start_log_backends = .);
    KEEP(*(SORT(.log_backends*)))
    PROVIDE(__stop_log_backends = .);
  } > FLASH
    .nrf_balloc :
  {
    PROVIDE(__start_nrf_balloc = .);
    KEEP(*(.nrf_balloc))
    PROVIDE(__stop_nrf_balloc = .);
  } > FLASH

} INSERT AFTER .text


INCLUDE "nrf_common.ld"

RTT logging works on my nrf51802 chip with sdk 12.3.0 so there is nothing wrong with my jlink or my jlink setup either.

Here is a part of my map file:

 .bss._SEGGER_RTT
                0x00000000       0x78 _build/nrf52810_xxaa/SEGGER_RTT.c.o

How can I resolve this?

Related