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
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