About Qtools ============ Qtools is a collection of various open source tools for working with the QP state machine frameworks on desktop platforms, such as Windows, Linux, and Mac OS X. The following tools are currently provided: 1. qspy - host application for the QS software tracing system implemented in the QP/C and QP/C++ frameworks 2. qclean - for cleanup of source code files 3. qfsgen - for generating ROM-based file systems to be used in embedded web pages served by the HTTP server 4. qudp - for testing UDP connections to the embedded targets 5. qudps - UDP server for testing UDP connections to the embedded targets. 6. mscgen - for converting .msc files generated by qspy into message sequence charts (MSC) in various graphic formats. GCC C/C++ compiler for Windows ------------------------------ The Qtools collection for Windows contains the GCC C/C++ compiler adapted from MinGW (Minimal GNU on Windows). The inclusion of the GNU compiler enables building native Windows applications from the standard command prompt, just like it is commonly done in Linux and other POSIX-compliant operating systems. GNU make for Windows -------------------- The Qtools collection for Windows contains GNU make and other related UNIX-style file utilities (such as cp, mkdir, mv, mvdir, rm, rmdir, touch), which commonly used in the makefiles as well as diff and patch. PC-Lint/FlexeLint compiler options ---------------------------------- The Qtools collection contains PC-Lint/FlexeLint option files for various compilers (in subdirectory lint). Installation ============ Installation of Qtools is trivial and consists merely of unzipping the qtools_.zip archive into a directroy of your choice. ----------- NOTE: To use the Qtools, you should add the \bin directory to the PATH, where denotes the directory where you have unzipped the qtools_.zip archive. NOTE: To use the Qtools source code (such as parts of the QSPY) in builds of the QP library, you need to define the environment variable QTOOLS to point to the installation directory of Qtools. ----------- On Linux you must additionally make sure that the executables, such as qspy, qclean, etc. have the 'executable' property set. Licensing ========= All tools included in this collection are distributed under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. The text of GPL version 2 is included in the file COPYING in the root directory of the Qtools distribution. Documentation ============= The documentation of the tools is provided in the \doc\ directory. QSPY Matlab Scripts =================== The Matlab/GNU Octave scripts for the QSPY utility are located in the \matlab\ directory. QSPY Sequence Diagrams Examples =============================== The sequence diagram input files for the MSCgen utility and the generated sequence diagrams (in the SVG format) are located in the \mscgen\ directory. Source Code =========== In compliance with GPL, this distribution contains the source code for the utilities contributed by Quantum Leaps in the \source\ subdirectory, except for the QSPY source code, which is provided in the \qspy directory. The tools with names starting with 'q' have been developed and are copyrighted by Quantum Leaps. The GCC C and C++ compilers for Windows has been taken from the MinGW project at SourceForge.net: https://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/ The installer mingw-get-inst-20110211.exe has been used and after the installation, the files have been pruned to reduce the size of the distribution. Please refer to the MinGW project for the source code. The GNU make executable for Windows has been taken from the MinGW project at SourceForge.net: https://sourceforge.net/projects/mingw/files/MinGW/make/ make-3.82-mingw32/make-3.82-5-mingw32-bin.tar.lzma The GNU make source (make-3.82-src.zip) has been taken from: https://sourceforge.net/projects/mingw/files/MinGW/make/ make-3.82-mingw32/make-3.82-5-mingw32-src.tar.lzma The "GNU Make" manual (make.pdf) has been copied from the GNU make project at: http://www.gnu.org/software/make The file and diff utilities have been taken from the UnixUtils project at SourceForge.net: http://prdownloads.sourceforge.net/unxutils/UnxUtils.zip The file and diff utilities source (source/fileutils-3.16-src.zip) has been taken from: http://prdownloads.sourceforge.net/unxutils/UnxUtilsSrc.zip The Mscgen utility has been taken from the Mscgen project at: http://www.mcternan.me.uk/mscgen/ Contact information: ==================== Quantum Leaps Web sites: http://www.state-machine.com http://www.quantum-leaps.com e-mail: info@quantum-leaps.com toll-free: 1-866-450-LEAP ================================================================== Qtools Revision History ======================= Qtools Version 4.5.05 (22-Mar-2013) ----------------------------------- Replaced the MinGW compiler included in the collection to smaller version GCC 4.5.2. Qtools Version 4.5.04 (31-Jan-2013) ----------------------------------- Modified the QSPY source code to consistently use the size_t type in "hal.h" instead of "unsigned int", so that the QSPY utility builds cleanly on 64-bit systems. Modified the qtools\qspy\win32\mingw\make.bat file to use the MinGW compiler now included in the Qtools collection for Windows. Qtools Version 4.5.03 (26-Nov-2012) ----------------------------------- Added the MinGW C/C++ compiler to the Qtools collection for Windows. Changed the location of executables from the root of Qtools to the bin\ subdirectory. This is done to accomodate the structure of the MinGW compiler. Qtools Version 4.5.02 (21-Jul-2012) ----------------------------------- Re-designed the QSPY interface to support more flexible parsing of the trace records in desktop-based simulations (such as Windows or Qt). Users can provide a custom parsing callback function to QSPY_config(). Also added QS_RESET() macro to reset the internal dictionaries (and other cleanup in the future) when the target resets. Qtools Version 4.5.01 (25-Jun-2012) ----------------------------------- Added the QS_USR_DICTIONARY() entry for storing dictionaries of the user trace records. Replaced all remaining sprintf() calls with snprintf(). Qtools Version 4.5.00 (26-May-2012) ----------------------------------- Re-designed the implementation of the QSPY host application, so that it can be convenienty included as part of the QP library. This allows direct QS tracing output to the screen for QP applications running on the desktop. The QSPY application has been converted from C++ to plain C for easier integration with QP/C. Qtools Version 4.3.00 (03-Nov-2011) ----------------------------------- This QSPY version mataches the changes to the critical section macros made in QP 4.3.00. The QS record names QS_QF_INT_LOCK and QS_QF_INT_UNLOCK have been replaced with QS_QF_CRIT_ENTRY and QS_QF_CRIT_EXIT, respectively. Qtools Version 4.2.04 (27-Sep-2011) ----------------------------------- This QSPY version fixes the bug of incorrect reporting function or object pointers for which the dictionary records are not provided and which are repeated in one format line (bug #3405904). For example, trace record AO.FIFO would report (incorrectly) as follows: 0014004078 AO.FIFO: Sndr=200009B4 Obj=200009B4 Evt(Sig=00000009,Obj=200009B4, Pool= 0, Ref= 0) Queue(nFree= 5, nMin= 5) The Sndr= and Obj= are reported to be the same, but they were not. Qtools Version 4.2.01 (01-Aug-2011) ----------------------------------- This QSPY version adds generation of sequence diagrams as files to be processed by MscGen (www.mcternan.me.uk/mscgen/). This version adds the option -g to generate .msc file. Also, this version of QSPY for Windows allows COM ports larger than COM9. Qtools Version 4.2.00 (13-Jul-2012) ----------------------------------- This QSPY version matches the changes made to QS target code in QP/C/C++ 4.2.xx. These changes include sending the additinal byte of sender priority in trace records: - QS_QF_ACTIVE_POST_FIFO, - QS_QF_ACTIVE_POST_LIFO, Additional changes include sending the poolID and refCtr of events in two bytes instead of just one byte. The changes affect the following trace records: - QS_QF_ACTIVE_POST_FIFO, - QS_QF_ACTIVE_POST_LIFO, - QS_QF_ACTIVE_GET, - QS_QF_EQUEUE_GET, - QS_QF_ACTIVE_GET_LAST, - QS_QF_EQUEUE_GET_LAST, - QS_QF_EQUEUE_POST_FIFO, - QS_QF_EQUEUE_POST_LIFO, - QS_QF_PUBLISH, - QS_QF_GC_ATTEMPT, and - QS_QF_GC. Also, for compatibility with the QP 4.2.xx, this version changes the defaults as follows: signal size (-S) from 1 byte to 2 bytes, and baud rate (-b) from 38400 to 115200 This version adds the following trace record: QS_QF_TIMEEVT_CTR The version also adds compatiblity with 64-bit targets (such as 64-bit linux). This version can accept 8-byte pointers (both object pointers and function pointers) as well as 64-bit integers sent in user-defined trace records. This version also adds the hex format for uint32_t integers sent in the user-defined trace records. Finally, this version adds command-line option -v to specify the corresponding QP version running on the target. The default version is -v4.2, but by specifying version -v4.1 or -v4.0 will switch QSPY into the backwards-compatibility mode with the earlier versions of QP. Qtools Version 4.1.06 (09-Feb-2011) ----------------------------------- This is the intial standalone release of the QSPY host application. QSPY is still available in the QP/C and QP/C++ distributions, but other rapid prototyping platforms (such as mbed or Arduino) do not use the standard QP distributions and have no easy access to the QSPY tool. For these users, this pre-compiled standalone release is more convenient.