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.
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_<ver>.zip archive into a directroy of your choice.
-----------
NOTE: To use the Qtools, you should add the <qtools> directory to the
PATH, where <qtools> denotes the directory where you have unzipped
the qtools_<ver>.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 version 2 (GPL2) as published by the
Free Software Foundation and appearing in the file COPYING.TXT included
in the Qtools package.
Documentation
=============
The documentation of the tools is provided in the <qtools>\doc\ directory.
QSPY Matlab Scripts
===================
The Matlab/GNU Octave scripts for the QSPY utility are located in the
<qtools>\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 <qtools>\mscgen\
directory.
Source Code
===========
In compliance with GPL, this distribution contains the source code in the
<qtools>\source\ subdirectory, except for the QSPY source code, which
is provided in the <qtools>\qspy directory. The tools with names starting
with 'q' have been developed and are copyrighted by Quantum Leaps.
The GNU make executable 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.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<msc_file> 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.
Source: README, updated 2012-05-26