This lesson explains modern software tracing based on binary protocols instead of ASCII formatting with printf. To focus the discussion, you will see a mature software tracing system called QP-Spy, which is much more suitable for real-time systems than the primitive printf method.
Contents with Timestamps:
-------------------------
1:25 The main problems of printf-style tracing
1:50 Firefighter analogy of printf-style tracing
3:08 General structure of the real-time tracing system
4:02 Introducing QP/Spy as an example of real-time tracing
4:25 Replacing MY_PRINTF with QP-Spy instrumentation
5:58 Adding board-specific code for QP/Spy
7:30 Adding QP/Spy output to the idle callback
8:30 Adding QP/Spy instrumentation in QM model
9:08 Adding QS source code to the spy build configuration
9:53 Excluding the QS group from dbg build configuration
10:50 Obtaining the QSPY host utility to receive the trace
11:43 Launching QSPY and connecting to the embedded target
12:16 Comparing QSPY output to MY_PRINTF() output
13:12 Timing the QSPY execution with a logic analyzer
14:13 Application-specific and pre-defined trace records
14:45 Inversion of control as an opportunity for software tracing
15:02 Event-driven framework as a funnel for system interactions
15:46 Enabling pre-defined trace records for state machines
16:50 Ways of obtaining the symbolic information from the code
17:07 Example: TRICE software tracing system
17:27 Example: Embedded logging with "string_constant" library
18:17 Q-Spy approach of generating symbolic "dictionaries"
19:10 Generating "object dictionaries"
19:28 Generating "signal dictionaries"
19:48 Generating "function dictionaries" (in QM)
20:32 QSPY output with symbolic information from "dictionaries"
20:51 Enabling all pre-defined trace records
21:12 Disabling a specific trace record type
22:08 The QP/Spy data protocol
22:20 Harvesting raw binary data from the embedded target
23:22 Comparision of binary data to formatted trace data
23:58 Detecting errors and gaps in the trace data
24:15 Post-processing binary data in QSPY
24:25 Demonstration of transmission error detection in QSPY
24:45 More features of QP/Spy data protocol
25:17 Benefits for sending data out of the embedded target
26:00 Software tracing as the basis for testing embedded code
26:05 Software tracing as the basis for monitoring devices
End Notes:
----------
Companion web page to this video course
https://www.state-machine.com/video-c...
Project download for this lesson:
https://www.state-machine.com/course/...
GitHub repository for projects for this video course:
https://github.com/QuantumLeaps/moder...
Transcript of this lesson:
https://www.state-machine.com/course/...
References resources:
---------------------
QP/Spy documentation:
https://www.state-machine.com/qtools/...
QTools downloads (contains QSPY host utility):
https://github.com/QuantumLeaps/qtool...
Other software tracing systems mentioned:
TRICE: https://github.com/rokath/trice
Embedded Logging Case Study -CppNow 2022
• Embedded Logging Case Study: From C to Shi...
Music credits:
--------------
The background music comes from:
https://www.bensound.com/royalty-free...
On this page of the site you can watch the video online #46 Software Tracing with Binary Protocols with a duration of hours minute second in good quality, which was uploaded by the user Quantum Leaps, LLC 01 January 1970, share the link with friends and acquaintances, this video has already been watched 10,399 times on youtube and it was liked by 159 viewers. Enjoy your viewing!