Summary
Keywords
Full Transcript
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-course/ Project download for this lesson: https://www.state-machine.com/course/lesson46.zip GitHub repository for projects for this video course: https://github.com/QuantumLeaps/modern-embedded-programming-course Transcript of this lesson: https://www.state-machine.com/course/lesson46.txt References resources: --------------------- QP/Spy documentation: https://www.state-machine.com/qtools/qpspy.html QTools downloads (contains QSPY host utility): https://github.com/QuantumLeaps/qtools/releases Other software tracing systems mentioned: TRICE: https://github.com/rokath/trice Embedded Logging Case Study -CppNow 2022 https://youtu.be/Dt0vx-7e_B0 Music credits: -------------- The background music comes from: https://www.bensound.com/royalty-free-music/track/straight
