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

Help activating bootloader logs on RTT

We successfully built the mesh bootloader, but want to get RTT working with the bootloader logs inside SEGGER.

We were following this two posts post1 post2 to achieve our goal.

After activating the -DBOOTLOADER_DEBUG_ENABLE=ON option on ninja and changing the declarations in the SEGGER_RTT.c file to

static char __attribute__((section(".rtt_ac_up"))) _acUpBuffer  [BUFFER_SIZE_UP];
static char __attribute__((section(".rtt_ac_down"))) _acDownBuffer[BUFFER_SIZE_DOWN];
SEGGER_RTT_CB __attribute__((section(".rtt_segger"))) _SEGGER_RTT;

I need to know where I can edit the SECTIONs used above. I think they have to be defined in a linker file, with the *.ld extension. For reference we are using a modified light switch client example from mesh sdk 3.1.0, that used softdevice version 6.1.0. We recently updated the project to use mesh SDK 3.2.0, and changed on the project definitions to use the 6.1.1 version of the softdevice in the additional load file option.

I have been searching around to pinpoint which .ld file the project uses. I supposed it was one inside the linker folder inside the project folder, but adding the SECTION definitions to the most recent .ld file does nothing, I get a 'region `UNPLACED_SECTIONS' overflowed by 1272 bytes' message regardless of the definition of the sections.

  • The linker folder inside the project folder doesn't seem to have any use. The linker script that matters is inside build/${name_of_project}_${build_type}/obj/${name_of_project}.ld.

    I think the flash_placement.xml file is used by SEGGER to generate the linker script referred above at build time, so we should edit flash_placement.xml.

  • rmarques said:
    I think the flash_placement.xml file is used by SEGGER to generate the linker script referred above at build time, so we should edit flash_placement.xml.

     That is correct. Segger embedded studio uses the falsh_placement.xml file for the flash placements, but I believe it also uses some of the project settings, so check project settings -> build -> Memory segments, and project settings -> linker -> section placement macros as well.

    It depends a bit on what you want to change how many of these you have to modify.

    You are talking about the mesh bootloader, or do you use the normal SDK's bootloader?

    Best regards,

    Edvin

  • Yes, section placement macros are used inside the flash_placement.xml file.

    I am talking about the mesh bootloader.

    I am now looking at this post to see if I can get logs working.

  • You are maybe aware of this, but most of the links you have provided are not for the mesh bootloader, but the "normal SDK" bootloader. Is there any specific reason why you need to enable logging in your mesh bootloader? Or why you need to change it at all?

  • I am not able to run DFU over the mesh for large firmware packets (other than the blinky destributed with the mesh SDK) and I suspect the problem is on the mesh bootloader. I have already posted here about this.

    I want to have the LOGs working on the bootloader side so I can investigate on my own at least until I have confirmation of the state of the DFU over mesh from nordic.

    Since this is so hard to debug right now, we are thinking of implementing our own transport layer on the app side and just use the bootloader to transfer the firmware from the nodes' ram into flash, because that works.

Related