Course Hive
Search

Welcome

Sign in or create your account

Continue with Google
or
#46 Software Tracing with Binary Protocols
Play lesson

Modern Embedded Systems Programming Course - #46 Software Tracing with Binary Protocols

4.0 (6)
56 learners

What you'll learn

This course includes

  • 22.3 hours of video
  • Certificate of completion
  • Access on mobile and TV

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

Course Hive

Continue this lesson in the app

Install CourseHive on Android or iOS to keep learning while you move.

Related Courses

FAQs

Course Hive
Download CourseHive
Keep learning anywhere