BrankoP
Newbie
The RTEdbg open source toolkit helps embedded developers test, debug, and optimize C/C++ firmware. It provides functions for minimaly intrusive data logging, data transfer to host, and decoding utilities that enable deeper insight into real-time systems. Unlike traditional debuggers, this solution doesn't stop the embedded system, preserving its natural behavior. It is suitable for large RTOS-based systems as well as small, resource-constrained systems.
The solution works with all 32-bit microcontrollers. It is optimized for maximum execution speed and minimum memory and stack usage. Any communication channel or debug probe can be used to transmit logged data to the host for decoding. The solution is the equivalent of a re-entrant, time-stamped fprintf() running on the host instead of the embedded system. The fprintf functionality provides flexibility in data formatting and allows the logging data to be sorted into multiple files for later analysis with common tools such as CSV and LOG viewers.
The toolkit is not a replacement for tools like SystemView or Tracealyzer because it is based on a different concept. There is no data processing or tagging in the embedded system during data logging, so there is no runtime overhead and no wasted program memory (and circular buffer) for data tagging or printf-like functions and strings. This results in fast code execution and low stack usage. Typically, 35 CPU cycles and 4 bytes of stack are required to log a simple event using the RTEdbg library function on a device with a Cortex-M4 core, and only 20 bytes of stack when logging full data structures or buffers. According to the Segger SystemView documentation, nearly 200 CPU cycles and a maximum of 150 to 510 bytes of stack (depending on configuration) are required for event generation and encoding under the same conditions. Solutions such as SystemView or Tracealyzer are primarily designed for RTOS event analysis and are less suitable for logging various application-specific data.
See https://github.com/RTEdbg/RTEdbg
The solution works with all 32-bit microcontrollers. It is optimized for maximum execution speed and minimum memory and stack usage. Any communication channel or debug probe can be used to transmit logged data to the host for decoding. The solution is the equivalent of a re-entrant, time-stamped fprintf() running on the host instead of the embedded system. The fprintf functionality provides flexibility in data formatting and allows the logging data to be sorted into multiple files for later analysis with common tools such as CSV and LOG viewers.
The toolkit is not a replacement for tools like SystemView or Tracealyzer because it is based on a different concept. There is no data processing or tagging in the embedded system during data logging, so there is no runtime overhead and no wasted program memory (and circular buffer) for data tagging or printf-like functions and strings. This results in fast code execution and low stack usage. Typically, 35 CPU cycles and 4 bytes of stack are required to log a simple event using the RTEdbg library function on a device with a Cortex-M4 core, and only 20 bytes of stack when logging full data structures or buffers. According to the Segger SystemView documentation, nearly 200 CPU cycles and a maximum of 150 to 510 bytes of stack (depending on configuration) are required for event generation and encoding under the same conditions. Solutions such as SystemView or Tracealyzer are primarily designed for RTOS event analysis and are less suitable for logging various application-specific data.
See https://github.com/RTEdbg/RTEdbg