RTT related funcionality from JLink SDK

  • RTT related funcionality from JLink SDK

    Hello,

    I'd like to use RTT functionality to send/receive a large amounts of data(in order of megabytes). Currently I'm using custom made TCP client that connects to localhost:19021. This seems to work, and can be quie easily embedded into a host application. I do wonder if there are some extra things in SDK that justifies buying it taking this specific case into account, like:
    - does SDK provide direct access to RTT reading/writing without socket proxy? If yes, does it provide better performance?
    - is it possible to have a temporary access to the SDK API so I'd check if there are any other interesting things there that I might use in a future?
    - Is SDK provided as C library? Are there, for instance, Python bindings?

    Apart from that, do you have any extra tips to fine-tune RTT when sending lots of data? So far I've been tinkering with:
    - BUFFER_SIZE_UP / BUFFER_SIZE_DOWN, 8-16kB seems enough.
    - SEGGER_RTT_MODE_DEFAULT set to SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL from default SEGGER_RTT_MODE_NO_BLOCK_SKIP as from time to time RTT was dropping data.
    - How JLink's speed affects the RTT performance? I haven't seen any difference when using 4-16MHz range.
    - SEGGER_RTT_Read API does not play well with RTOS task-based system as it must be polled constantly to check if there is a new data. Is it possible to use it in a more efficient way? Maybe some kind of signalling can be implemented to let know the application about new data available?

    Thank you in advance
    Mateusz Piesta