QTools™ Collection
QP/Spy™ Software Tracing
QP/Spy™ is a software tracing and testing system built into the QP/C and QP/C++ Real-Time Embedded Frameworks. QP/Spy consists of the code instrumentation inside QP/C and QP/C++ and the console application called QSPY (available for Windows, Linux and MacOS hosts). The job of QP/Spy is to receive the trace data produced by an instrumented QP/C or QP/C++ application running on an embedded Target, visualize the data, and optionally to save the data in various formats (such as MATLAB or MscGen). QP/Spy can also send commands to the Target for unit testing (QUTest™) and monitoring (QView™).
The QSPY host application is easily adaptable to various target-host communication links. Out of the box, the QSPY host application supports serial (RS232), TCP/IP, and file communication links. Adding other communication links is straightforward, because the data link is accessed only through a generic Platform Abstraction Layer (PAL).
QUTest™ Unit Testing Harness
QUTest™ (pronounced “cutest”) is a powerful Unit Testing Harness, which is specifically designed for deeply embedded systems, but also supports unit testing of embedded code on host computers (“dual targeting”). QUTest™ is the fundamental tooling for Test-Driven Development (TDD) of QP/C/C++ applications, which is a highly recommended best-practice.
QUTest™ separates the execution of the CUT (Code Under Test) from checking of the test expectations. The embedded target is concerned only with running a test fixture that exercises the CUT and produces QP/Spy™ trace, but it does not check the “test assertions”. Generating test inputs and checking the “test assertions” against the expectations is performed on the host computer by means of test scripts, which are written in Python.
QView™ Monitoring & Visualization
QView™ is a powerful visualization and monitoring facility, which allows embedded developers to rapidly create virtual Graphical User Interfaces to monitor and control their embedded devices from a host (desktop) computer. The interfaces created by QView™ can visualize the tracing data produced by QP/Spy™ and can also send various commands to the embedded target.
QWin™ Prototyping
QWin™ is a simple GUI toolkit for prototyping (dual-targeting) embedded systems on Windows in the C programming language. QWin™ allows you to build realistic embedded front panels consisting of LCD displays (both graphical and segmented), buttons, and LEDs. QWIN is based on the raw Win32 API to provide direct mapping to C for easy integration with embedded code.
Dual Targeting is a powerful technique for avoiding the "target system bottleneck" in embedded software development. Dual targeting simply means that from day one, your embedded code (typically in C or C++) is designed to run on at least two platforms: the final target hardware and your development workstation. All you really need for this is two C compilers: one for the development computer and another for the embedded device. The dual targeting strategy does require a specific way of designing the embedded software such that any target hardware dependencies are handled through a well-defined interface. The QP™ frameworks support Dual Targeting by providing ready-to-use ports that run on the desktop platforms, such as Windows and POSIX (Linux, macOS).