diff --git a/README.md b/README.md
index 9c214cfd..62542af6 100644
--- a/README.md
+++ b/README.md
@@ -3,12 +3,15 @@
# What's New?
View QP/C++ Revision History at: https://www.state-machine.com/qpcpp/history.html
->**NOTE:** If you're interested in the latest QP/C++ version from Git,
-it is highly recommened that you download the latest
-[QP/C++ Release](https://github.com/QuantumLeaps/qpcpp/releases)
-as opposed to cloning the repo directy. This is because the `3rd_party`
-directory needed to build the examples is no longer provided in the
-`qpcpp` repository (and is provided in the QP/C++ release).
+> **NOTE:** If you're interested in the latest QP/C++ version from GitHub,
+it is highly recommened that you clone this repo like that:
+
+```
+git clone https://github.com/QuantumLeaps/qpcpp --recurse-submodules --depth 1
+```
+
+Alternatively, you can also download the latest
+[QP/C++ Release](https://github.com/QuantumLeaps/qpcpp/releases).
# Getting Started with QP/C++
diff --git a/doxygen/.gitignore b/doxygen/.gitignore
new file mode 100644
index 00000000..a1669073
--- /dev/null
+++ b/doxygen/.gitignore
@@ -0,0 +1 @@
+metrics.dox
diff --git a/doxygen/Doxyfile b/doxygen/Doxyfile
index 1f124ebe..041e6914 100644
--- a/doxygen/Doxyfile
+++ b/doxygen/Doxyfile
@@ -1,5 +1,7 @@
# Doxyfile 1.9.5
+@INCLUDE = ../../ql-doxygen/ql-doxyfile
+
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
@@ -40,17 +42,6 @@ PYTHON_DOCSTRING = YES
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
-ALIASES = "nav{2}=@ref \1@ref \2" \
- "nav_prev{1}=@ref \1" \
- "nav_next{1}=@ref \1" \
- "next{1}=@ref \1" \
- "description=@par Description" \
- "usage=@par Usage" \
- "hint=@par Hint" \
- "label{1}=
\1
" \
- "caption{1}=\1
" \
- "webref{2}=\2" \
- "tr{1}=@xrefitem tr \"Traceability\" \"\" traces to: @ref \1"
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
@@ -150,13 +141,17 @@ INPUT = main.dox \
../../cert-pack/srs.dox \
../../cert-pack/sas.dox \
../../cert-pack/sds.dox \
+ ../../cert-pack/sds_sm-cpp.dox \
../../cert-pack/autosar.dox \
../../cert-pack/tr.dox \
metrics.dox \
dir.dox \
config.hpp \
../include \
- ../src
+ ../src \
+ ../ports/lint-plus/std.lnt \
+ ../ports/lint-plus/qpcpp.lnt \
+ ../ports/lint-plus/options.lnt
INPUT_ENCODING = UTF-8
INPUT_FILE_ENCODING =
FILE_PATTERNS = *.dox \
@@ -195,7 +190,7 @@ FORTRAN_COMMENT_AFTER = 72
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
+STRIP_CODE_COMMENTS = NO
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = YES
@@ -283,68 +278,6 @@ SEARCHDATA_FILE = searchdata.xml
EXTERNAL_SEARCH_ID = QPCPP
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = NO
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-LATEX_MAKEINDEX_CMD = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = letter
-EXTRA_PACKAGES =
-LATEX_HEADER =
-LATEX_FOOTER =
-LATEX_EXTRA_STYLESHEET =
-LATEX_EXTRA_FILES =
-PDF_HYPERLINKS = YES
-USE_PDFLATEX = YES
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-LATEX_BIB_STYLE = plain
-LATEX_TIMESTAMP = NO
-LATEX_EMOJI_DIRECTORY =
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT = rtf
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT = man
-MAN_EXTENSION = .3
-MAN_SUBDIR =
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = NO
-XML_OUTPUT = xml
-XML_PROGRAMLISTING = YES
-XML_NS_MEMB_FILE_SCOPE = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-GENERATE_DOCBOOK = NO
-DOCBOOK_OUTPUT = docbook
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
@@ -373,51 +306,3 @@ PREDEFINED = Q_SPY \
QXK_ON_CONTEXT_SW
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-TAGFILES =
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-EXTERNAL_PAGES = YES
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-DIA_PATH =
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = NO
-DOT_NUM_THREADS = 0
-DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10"
-DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10"
-DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
-DOT_FONTPATH =
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = NO
-GROUP_GRAPHS = YES
-UML_LOOK = YES
-UML_LIMIT_NUM_FIELDS = 10
-DOT_UML_DETAILS = NO
-DOT_WRAP_THRESHOLD = 17
-TEMPLATE_RELATIONS = NO
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-CALLER_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = YES
-DIR_GRAPH_MAX_DEPTH = 1
-DOT_IMAGE_FORMAT = png
-INTERACTIVE_SVG = NO
-DOT_PATH = C:/tools/graphviz/bin
-DOTFILE_DIRS =
-MSCFILE_DIRS =
-DIAFILE_DIRS =
-PLANTUML_JAR_PATH =
-PLANTUML_CFG_FILE =
-PLANTUML_INCLUDE_PATH =
-DOT_GRAPH_MAX_NODES = 50
-MAX_DOT_GRAPH_DEPTH = 0
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
diff --git a/doxygen/Doxyfile-CERT b/doxygen/Doxyfile-CERT
index 7cc0d69b..35353902 100644
--- a/doxygen/Doxyfile-CERT
+++ b/doxygen/Doxyfile-CERT
@@ -1,11 +1,8 @@
-# Doxyfile 1.9.3
+# Doxyfile 1.9.5
@INCLUDE = Doxyfile
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-ENABLED_SECTIONS += CERT
+ENABLED_SECTIONS += CERT LATEX
+GENERATE_LATEX = YES
HTML_OUTPUT = ../cert-pack
-
+LATEX_OUTPUT = ../cert-latex
diff --git a/doxygen/Doxyfile-CHM b/doxygen/Doxyfile-CHM
index 0065b281..3755a354 100644
--- a/doxygen/Doxyfile-CHM
+++ b/doxygen/Doxyfile-CHM
@@ -1,4 +1,4 @@
-# Doxyfile 1.9.3
+# Doxyfile 1.9.4
@INCLUDE = Doxyfile
diff --git a/doxygen/Doxyfile-LATEX b/doxygen/Doxyfile-LATEX
new file mode 100644
index 00000000..483336c9
--- /dev/null
+++ b/doxygen/Doxyfile-LATEX
@@ -0,0 +1,7 @@
+# Doxyfile 1.9.5
+
+@INCLUDE = Doxyfile
+
+GENERATE_HTML = NO
+GENERATE_LATEX = YES
+ENABLED_SECTIONS += LATEX
diff --git a/doxygen/exa_rtos.dox b/doxygen/exa_rtos.dox
index b9c2f1e9..d1e3cf31 100644
--- a/doxygen/exa_rtos.dox
+++ b/doxygen/exa_rtos.dox
@@ -343,47 +343,76 @@ The QP/C++ examples for Zephyr are as follows:
/*##########################################################################*/
/*! @page zephyr_blinky Blinky
-Blinks an on-board LED once per second.
+The "Blinky" example blinks an on-board LED once per second. The blinking is done by an Active Object (Blinky) with a state machine. The example directory contains the following files:
+
+@verbatim
+/examples/zephyr/blinky
+ |
+ +-src/ - project sources
+ | |
+ | +-bsp.hpp
+ | +-bsp.cpp
+ | +-blinky.hpp
+ | +-blinky.cpp
+ | +-main.cpp
+ |
+ +-CMakeLists.txt - project files
+ +-prj.conf - project config
+ +-README.md
+@endverbatim
-The blinking is done by an Active Object (Blinky) with a state machine.
@section zephyr_blinky-build Building and Running
- Linux:
-Open a terminal in the blinky directory.
@verbatim
-source ~/zephyrproject/zephyr/zephyr-env.sh
+[1] cd /examples/zephyr/blinky
-west build -b
+[2] source ~/zephyrproject/zephyr/zephyr-env.sh
-west flush
+[3] west build -b
+[3a] west build -b nucleo_h743zi
+[3b] west build -b nucleo_l053r8
+...
+
+[4] west flush
@endverbatim
+`[1]` Open a terminal in the Blinky example directory.
+`[2]` If Zephyr project is not in your path, you might need to source the `zephyr-env.sh` shell script.
+`[3]` build the example project, where `` is any of the boards supported by Zepyr. The example has been tested with the following boards:
+`[3a]` nucleo_h743zi (ARM Cortex-M7)
+`[3b]` nucleo_l053r8 (ARM Cortex-M0+)
+`[4]` flash the board
+
+@remark
+The example has been tested with the following boards:
+
+![STM32-NUCLEO-L053R8 board](bd_NUCLEO-L053R8.jpg)
+
+
+
+![STM32-NUCLEO-H743ZI board](bd_NUCLEO-H743ZI.jpg)
+
+
+@note
+The example should also work with most boards supported by Zephyr.
+
+
@section zephyr_blinky-output Sample Output
Once flashed to the board, the application also produces ASCII output to the serial terminal (if supported by the board):
@verbatim
*** Booting Zephyr OS build v2.6.0-rc2-88-g3d39f72a88b3 ***
-BSP_ledOff
-QF_onStartup
-BSP_ledOn
-BSP_ledOff
-BSP_ledOn
-BSP_ledOff
+BSP::ledOff
+QF::onStartup
+BSP::ledOn
+BSP::ledOff
+BSP::ledOn
+BSP::ledOff
@endverbatim
-@note
-The example has been tested with the following boards:
-
-![STM32-NUCLEO-L053R8 board](bd_NUCLEO-L053R8.jpg)
-
-
-![STM32-NUCLEO-H743ZI board](bd_NUCLEO-H743ZI.jpg)
-
-@note
-The example should also work with most boards supported by Zephyr.
-
@section zephyr_blinky-limits Limitations
The simple Blinky example does not support the QS software tracing.
@@ -394,19 +423,61 @@ The simple Blinky example does not support the QS software tracing.
DPP example with multiple active objects.
+@verbatim
+/examples/zephyr/dpp
+ |
+ +-src/ - project sources
+ | |
+ | +-bsp.hpp
+ | +-bsp.cpp
+ | +-dpp.hpp
+ | +-philo.cpp
+ | +-table.cpp
+ | +-main.cpp
+ |
+ +-CMakeLists.txt - project files
+ +-prj.conf - project config
+ +-README.md
+@endverbatim
+
@section zephyr_dpp-build Building and Running
- Linux:
-Open a terminal in the dpp directory.
@verbatim
-source ~/zephyrproject/zephyr/zephyr-env.sh
+[1] cd /examples/zephyr/dpp
-west build -b
+[2] source ~/zephyrproject/zephyr/zephyr-env.sh
-west flush
+[3] west build -b
+[3a] west build -b nucleo_h743zi
+[3b] west build -b nucleo_l053r8
+...
+
+[4] west flush
@endverbatim
+`[1]` Open a terminal in the DPP example directory.
+`[2]` If Zephyr project is not in your path, you might need to source the `zephyr-env.sh` shell script.
+`[3]` build the example project, where `` is any of the boards supported by Zepyr. The example has been tested with the following boards:
+`[3a]` nucleo_h743zi (ARM Cortex-M7)
+`[3b]` nucleo_l053r8 (ARM Cortex-M0+)
+`[4]` flash the board
+
+@remark
+The example has been tested with the following boards:
+
+![STM32-NUCLEO-L053R8 board](bd_NUCLEO-L053R8.jpg)
+
+
+
+![STM32-NUCLEO-H743ZI board](bd_NUCLEO-H743ZI.jpg)
+
+
+@note
+The example should also work with most boards supported by Zephyr.
+
+
@section zephyr_dpp-output Sample Output
Once flashed to the board, the application also produces ASCII output to the serial terminal (if supported by the board):
@@ -435,20 +506,118 @@ Philo[2]->eating
Philo[0]->thinking
@endverbatim
-@note
-The example has been tested with the following boards:
-![STM32-NUCLEO-L053R8 board](bd_NUCLEO-L053R8.jpg)
-
+@section zephyr_dpp-qpspy Using the QP/SPY Software Tracing
+The @ref zephyr "QP/C Zephyr port" supports the
+[QSPY Software Tracing](https://www.state-machine.com/qtools/qpspy.html)
+option and will add the appropriate macros and files to build the "QSPY"
+configuration.
-![STM32-NUCLEO-H743ZI board](bd_NUCLEO-H743ZI.jpg)
+If you wish to enable "QSPY" you can provide the option "QSPY"
+in the command-line for the build. For example:
+
+@verbatim
+west build -b nucleo_h743zi -- -DQSPY=ON
+@endverbatim
@note
-The example should also work with most boards supported by Zephyr.
+The QP/Spy software tracing uses the Zephyr's console UART. This means that the Zephyr `printk()` facility cannot be used while QP/Spy is configured.
-@section zephyr_dpp-limits Limitations
-The DPP example currently does not support the QS software tracing,
-because implementation of the QS output over UART is board dependent. However, for a specific board, re-implementing the QS callbacks should be straightforward.
+
+If yo have built the example with QP/Spy, you might want to watch the QP/Spy output.
+
+
+@section zephyr_dpp-qspy The QSPY Host Utility
+To receive the QP/Spy software tracing output you need to run a special [qspy host application](https://www.state-machine.com/qtools/qspy.html).
+
+@note
+You might need to build the `qspy` host utility on your Linux machine. The QSPY utility is available in
+[QTools collection](https://github.com/QuantumLeaps/qtools/tree/master/qspy).
+
+
+To launch the `qspy` host utility, open a separate terminal and run
+@verbatim
+qspy -c
+```
+specific example:
+```
+qspy -c /dev/ttyACM0
+@endverbatim
+
+
+@subsection @section zephyr_dpp-qs-output QSPY Output Example
+After resetting the board, you should see output similar to the following:
+@verbatim
+########## Trg-RST QP-Ver=701,Build=220810_150847
+ Obj-Dict 0x20003154->QS_RX
+ Obj-Dict 0x20000680->AO_Table
+ Obj-Dict 0x20000180->AO_Philo[0]
+ Obj-Dict 0x20000280->AO_Philo[1]
+ Obj-Dict 0x20000380->AO_Philo[2]
+ Obj-Dict 0x20000480->AO_Philo[3]
+ Obj-Dict 0x20000580->AO_Philo[4]
+ Obj-Dict 0x0000A52C->timerID
+ Usr-Dict 00000100->PHILO_STAT
+ Usr-Dict 00000101->PAUSED_STAT
+ Usr-Dict 00000102->COMMAND_STAT
+ Usr-Dict 00000103->CONTEXT_SW
+ Obj-Dict 0x20003054->EvtPool1
+ Obj-Dict 0x20000180->Philo::inst[0]
+ Obj-Dict 0x2000026C->Philo::inst[0].m_timeEvt
+ Obj-Dict 0x20000280->Philo::inst[1]
+ Obj-Dict 0x2000036C->Philo::inst[1].m_timeEvt
+ Obj-Dict 0x20000380->Philo::inst[2]
+ Obj-Dict 0x2000046C->Philo::inst[2].m_timeEvt
+ Obj-Dict 0x20000480->Philo::inst[3]
+ Obj-Dict 0x2000056C->Philo::inst[3].m_timeEvt
+ Obj-Dict 0x20000580->Philo::inst[4]
+ Obj-Dict 0x2000066C->Philo::inst[4].m_timeEvt
+ Fun-Dict 0x00008929->Philo::initial
+ Fun-Dict 0x0000890F->Philo::thinking
+ Fun-Dict 0x00008917->Philo::hungry
+ Fun-Dict 0x0000891F->Philo::eating
+ Sig-Dict 00000004,Obj=0x00000000->TIMEOUT_SIG
+0000000327 AO-Subsc Obj=Philo::inst[0],Sig=00000005,Obj=0x20000180
+0000000327 AO-Subsc Obj=Philo::inst[0],Sig=00000009,Obj=0x20000180
+===RTC===> St-Init Obj=Philo::inst[0],State=0x00009B1B->Philo::thinking
+===RTC===> St-Entry Obj=Philo::inst[0],State=Philo::thinking
+0000000328 Init===> Obj=Philo::inst[0],State=Philo::thinking
+0000000334 AO-Subsc Obj=Philo::inst[1],Sig=00000005,Obj=0x20000280
+0000000334 AO-Subsc Obj=Philo::inst[1],Sig=00000009,Obj=0x20000280
+===RTC===> St-Init Obj=Philo::inst[1],State=0x00009B1B->Philo::thinking
+===RTC===> St-Entry Obj=Philo::inst[1],State=Philo::thinking
+0000000334 Init===> Obj=Philo::inst[1],State=Philo::thinking
+0000000340 AO-Subsc Obj=Philo::inst[2],Sig=00000005,Obj=0x20000380
+0000000340 AO-Subsc Obj=Philo::inst[2],Sig=00000009,Obj=0x20000380
+===RTC===> St-Init Obj=Philo::inst[2],State=0x00009B1B->Philo::thinking
+===RTC===> St-Entry Obj=Philo::inst[2],State=Philo::thinking
+0000000340 Init===> Obj=Philo::inst[2],State=Philo::thinking
+0000000346 AO-Subsc Obj=Philo::inst[3],Sig=00000005,Obj=0x20000480
+0000000346 AO-Subsc Obj=Philo::inst[3],Sig=00000009,Obj=0x20000480
+===RTC===> St-Init Obj=Philo::inst[3],State=0x00009B1B->Philo::thinking
+===RTC===> St-Entry Obj=Philo::inst[3],State=Philo::thinking
+0000000346 Init===> Obj=Philo::inst[3],State=Philo::thinking
+0000000352 AO-Subsc Obj=Philo::inst[4],Sig=00000005,Obj=0x20000580
+0000000352 AO-Subsc Obj=Philo::inst[4],Sig=00000009,Obj=0x20000580
+===RTC===> St-Init Obj=Philo::inst[4],State=0x00009B1B->Philo::thinking
+===RTC===> St-Entry Obj=Philo::inst[4],State=Philo::thinking
+0000000352 Init===> Obj=Philo::inst[4],State=Philo::thinking
+ Obj-Dict 0x20000680->Table::inst
+ Sig-Dict 00000006,Obj=0x00000000->DONE_SIG
+ Sig-Dict 00000005,Obj=0x00000000->EAT_SIG
+ Sig-Dict 00000007,Obj=0x00000000->PAUSE_SIG
+ Sig-Dict 00000008,Obj=0x00000000->SERVE_SIG
+ Sig-Dict 00000009,Obj=0x00000000->TEST_SIG
+ Sig-Dict 00000011,Obj=0x20000680->HUNGRY_SIG
+0000000370 AO-Subsc Obj=Table::inst,Sig=DONE_SIG
+0000000370 AO-Subsc Obj=Table::inst,Sig=PAUSE_SIG
+0000000370 AO-Subsc Obj=Table::inst,Sig=SERVE_SIG
+0000000371 AO-Subsc Obj=Table::inst,Sig=TEST_SIG
+0000000371 PHILO_STAT 0 thinking
+0000000371 PHILO_STAT 1 thinking
+0000000371 PHILO_STAT 2 thinking
+0000000371 PHILO_STAT 3 thinking
+@endverbatim
@next{exa_os}
*/
diff --git a/doxygen/main.dox b/doxygen/main.dox
index 1bc5875f..503500f3 100644
--- a/doxygen/main.dox
+++ b/doxygen/main.dox
@@ -8,20 +8,15 @@ To check what's new in QP™/C++, please see @ref history "QP/C++ Revision H
@section over_about What is it?
-QP™/C++ Real-Time Embedded Framework (RTEF) is a lightweight implementation of the @webref{active-object, Active Object model of computation} specifically tailored for real-time embedded (RTE) systems. QP is both a software infrastructure for building applications consisting of Active Objects (actors) and a runtime environment for executing the Active Objects in a deterministic fashion. Additionally, QP Framework supports @webref{fsm#HSM, Hierarchical State Machines} with which to specify the behavior of Active Objects @ref srs_ref "[ROOM:94], [UML 2.5],[Sutter:10]".
-
-@note
-
-The @webref{products/qp#CERT,QP Certification Pack} provides:
-- @ref srs_over "Software Requirements Specification" with a good overview of the QP/C++ Framework
-- @ref sas_core "Software Architecture Specification" with concise description of QP/C++ architecture
-- @ref sds "Software Design Specification" with detailed description of the QP/C++ design.
+QP™/C++ Real-Time Embedded Framework (RTEF) is a lightweight implementation of the @webref{active-object, Active Object model of computation} specifically tailored for real-time embedded (RTE) systems. QP is both a *software infrastructure* for building applications consisting of active objects (actors) and a *runtime environment* for executing the active objects in a deterministic fashion. Additionally, QP Framework supports @webref{fsm#HSM, Hierarchical State Machines} with which to specify the behavior of Active Objects @ref srs_ref "[ROOM:94], [UML 2.5],[Sutter:10]". You can think of the QP/C RTEF as a modern, truly *event-driven* real-time operating system (RTOS).
@section over_goals What does it do?
The main objectives of the QP/C++ RTEF are:
-- to provide a modern, event-driven model of concurrency based on the best practices of concurrent programming @ref srs_ref "[ROOM:94], [Cummings:10], [Sutter:10]", collectively known as the @webref{active-object, Active Object (Actor) model of computation}, which is inherently *safer* than the traditional "shared-state concurrency, mutual-exclusion, and blocking" approach based on a conventional Real-Time Operating System (RTOS);
+- to provide a modern, event-driven model of concurrency based on the best practices of concurrent programming collectively known as the @webref{active-object, Active Object (Actor) model of computation}, which is inherently *safer* than the traditional "shared-state concurrency, mutual-exclusion, and blocking" approach based on a conventional Real-Time Operating System (RTOS);
+
+- to provide an efficient, @ref tr "bidirectionally traceable" implementation of @webref{fsm#HSM, Hierarchical State Machines} for specifying the internal behavior of Active Objects;
- to provide a *higher-level of abstraction* closer to the problem domain than the "naked" RTOS threads;
@@ -31,7 +26,10 @@ The main objectives of the QP/C++ RTEF are:
@section over_special What's special about it?
-The QP™/C++ Real-Time Embedded Framework (RTEF) is a unique offering on the embedded software market. It provides a modern, reusable **architecture** of embedded applications, which combines object-orientation with the particular model of concurrency, known as @webref{active-object, active objects} (actors). This architecture is generally **safer**, more responsive and easier to understand than "free threading" with a traditional Real-Time Operating System (RTOS). It also provides sufficiently high level of abstraction and the right abstractions to effectively apply modeling and code generation to deeply embedded systems.
+The QP™/C++ Real-Time Embedded Framework (RTEF) provides a modern, reusable **architecture** of embedded applications, which combines the model of concurrency, known as @webref{active-object, active objects} (actors) with @webref{fsm#HSM, Hierarchical State Machines}. This architecture is generally **safer**, more responsive and easier to understand than "free threading" with a traditional Real-Time Operating System (RTOS). It also provides sufficiently high level of abstraction and the *right* abstractions to effectively apply modeling and code generation to deeply embedded systems.
+
+@note
+The most unique aspect of the QP™/C++ RTEF is its @ref over_eff "tiny size and efficiency" suitable for embedded microcontrollers, such as MCUs based on ARM Cortex-M.
@subsection over_oop Object Orientation
@@ -46,7 +44,7 @@ The behavior of active objects is specified in QP™/C++ by means of @webref
The QP™/C++ framework can run on @ref exa_native "bare-metal single-chip microcontrollers", completely replacing a traditional RTOS. The framework contains a selection of built-in real-time kernels, such as the cooperative @ref srs_qv "QV kernel", the preemptive non-blocking @ref srs_qk "QK kernel", and the preemptive, dual-mode, blocking @ref srs_qxk "QXK kernel". The QXK kernel provides all the features you might expect from a traditional RTOS kernel and has been specifically designed for mixing event-driven active objects with traditional blocking code, such as commercial middleware (TCP/IP stacks, UDP stacks, embedded file systems, etc.) or legacy software. @ref ports_native "Native QP ports" and ready-to-use @ref exa_native "examples" are provided for major @ref exa_ref_mcu "CPU families".
-@subsection over_eff Efficiency
+@subsection over_eff Size and Efficiency
Even though QP™/C++ offers much higher level of abstraction than a traditional RTOS, it typically outperforms equivalent traditional RTOS offerings both in RAM/ROM footprint and in CPU efficiency. The specific measurements and results are reported in the following @webref{doc/AN_QP_Performance.pdf, Application Note: "QP Performance Tests and Results"}:
[![Application Note: "QP Performance Tests and Results"](an-qp_performance.png)](https://www.state-machine.com/doc/AN_QP_Performance.pdf)
@@ -57,7 +55,7 @@ The QP Framework is simple to get started, simple to use and simple to build. Th
@subsection over_inter Interoperability
-QP™/C++ can also work with many traditional @ref exa_rtos "RTOSes" and @ref exa_os "general-purpose OSes" (such as Linux and Windows).
+QP™/C++ can also work with many traditional @ref exa_rtos "RTOSes" and @ref exa_os "general-purpose operating systems (GPOSes)" (such as Linux and Windows).
@subsection over_trace Traceability
diff --git a/doxygen/make-rsm.bat b/doxygen/make-rsm.bat
index 2a226068..6d65be0a 100644
--- a/doxygen/make-rsm.bat
+++ b/doxygen/make-rsm.bat
@@ -42,7 +42,7 @@
@set DOXHOME="C:\tools\doxygen\bin"
-:: Generate Resource Standard Metrics for QP/C++ .............................
+:: Generate Resource Standard Metrics for QP/C++ .............................
@set RCMHOME="C:\tools\MSquared\M2 RSM"
@set RSM_OUTPUT=metrics.dox
@@ -58,11 +58,11 @@
@echo @endcode >> %RSM_OUTPUT%
@echo */ >> %RSM_OUTPUT%
-:: Generate Doxygen Documentation ...........................................
+:: Generate Doxygen Documentation ...........................................
if "%1"=="-CHM" (
@echo Generating HTML...
%DOXHOME%\doxygen.exe Doxyfile-CHM
-
+
@echo Adding custom images...
xcopy preview.js tmp\
xcopy img tmp\img\
@@ -70,7 +70,7 @@ if "%1"=="-CHM" (
@echo Generating CHM...
"C:\tools\HTML Help Workshop\hhc.exe" tmp\index.hhp
-
+
@echo.
@echo Cleanup...
@rmdir /S /Q tmp
@@ -80,7 +80,7 @@ if "%1"=="-CHM" (
@echo.
@echo Cleanup...
rmdir /S /Q C:\qp_lab\qpcpp\html
-
+
echo Adding custom images...
xcopy preview.js C:\qp_lab\qpcpp\html\
xcopy img C:\qp_lab\qpcpp\html\img\
diff --git a/doxygen/make.bat b/doxygen/make.bat
index 9d179e49..01d6b27d 100644
--- a/doxygen/make.bat
+++ b/doxygen/make.bat
@@ -28,42 +28,46 @@
@echo usage:
@echo make
@echo make -CHM
-@echo make ...
+@echo make -CERT
+@echo make -LATEX
-:: Doxygen tool (adjust to your system) ......................................
+:: tools (adjust to your system)---------------------------------------------
+:: Doxygen tool
@set DOXYGEN=doxygen
-:: HTML Help tool (needed only with the -CHM option, (adjust to your system) .
+:: Simple complexity metrics tool (adjust to your system)
+@set METRICS=lizard -m -L500 -a10 -C20 -V
+
+:: HTML Help tool (needed only with the -CHM option) .
@set HHC="C:\tools\HTML Help Workshop\hhc.exe"
-:: Simple complexity metrics tool (adjust to your system) ...................
-@set LIZARD=lizard
+:: QP directory .............................................................
+@set QP=..
-:: QP/C++ directory ..........................................................
-@set QPCPP=..
-
-:: HTML outut directory ......................................................
-@set HTML_OUT=%QPCPP%\html
-if "%1"=="-CERT" (
- @set HTML_OUT=%QPCPP%\cert-pack
+:: Outut directories ........................................................
+@set HTML_OUT=%QP%\html
+IF "%1"=="-CERT" (
+ @set HTML_OUT=%QP%\cert-pack
)
+@set LATEX_OUT=%QP%\latex
-:: Generate metrics.dox file...
-@set METRICS_INP=%QPCPP%\include %QPCPP%\src -x %QPCPP%\src\qs\*
+:: Generate metrics.dox file-------------------------------------------------
+@set METRICS_INP=%QP%\include %QP%\src -x %QP%\src\qs\*
@set METRICS_OUT=metrics.dox
@echo /** @defgroup metrics Code Metrics> %METRICS_OUT%
@echo.>> %METRICS_OUT%
@echo @code{.cpp}>> %METRICS_OUT%
-@echo QP/C++ Code Metrics >> %METRICS_OUT%
+@echo Code Metrics >> %METRICS_OUT%
-%LIZARD% -m -L500 -a10 -C20 -V %METRICS_INP% >> %METRICS_OUT%
+%METRICS% %METRICS_INP% >> %METRICS_OUT%
@echo @endcode>> %METRICS_OUT%
-@echo */ >> %METRICS_OUT%
+@echo */>> %METRICS_OUT%
-:: Generate Doxygen Documentation...
+:: Generate Doxygen Documentation -------------------------------------------
if "%1"=="-CHM" (
+
@echo Generating HTML...
%DOXYGEN% Doxyfile-CHM
@@ -79,7 +83,24 @@ if "%1"=="-CHM" (
@rmdir /S /Q tmp
@echo CHM file generated
+) else if "%1"=="-LATEX" (
+
+ @echo.
+ @echo Cleanup...
+ rmdir /S /Q %LATEX_OUT%
+
+ @echo Generating LATEX...
+ %DOXYGEN% Doxyfile-LATEX
+
+ @echo Adding custom files...
+ xcopy img %LATEX_OUT%\img\
+
+ @echo TODO...
+ @echo cd ..\latex
+ @echo make.bat
+
) else (
+
@echo.
@echo Cleanup...
rmdir /S /Q %HTML_OUT%
@@ -87,7 +108,7 @@ if "%1"=="-CHM" (
@echo Generating HTML...
%DOXYGEN% Doxyfile%1
- @echo Adding custom images...
+ @echo Adding custom files...
xcopy img %HTML_OUT%\img\
xcopy /Y ..\..\ql-doxygen\jquery.js %HTML_OUT%
rem @qclean %HTML_OUT%
diff --git a/doxygen/metrics.dox b/doxygen/metrics.dox
index 1d4587e9..d80f2e08 100644
--- a/doxygen/metrics.dox
+++ b/doxygen/metrics.dox
@@ -1,7 +1,7 @@
/** @defgroup metrics Code Metrics
@code{.cpp}
- QP/C++ Code Metrics
+ Code Metrics
================================================
NLOC CCN token PARAM length location
------------------------------------------------
diff --git a/doxygen/rsm_qpcpp.cfg b/doxygen/rsm_qpcpp.cfg
index 20b6d6e3..8fbe5eec 100644
--- a/doxygen/rsm_qpcpp.cfg
+++ b/doxygen/rsm_qpcpp.cfg
@@ -87,7 +87,7 @@ C# File Extensions : cs
Java File Extensions : java
# Other files are not officially supported by RSM
# but lines will be counted as LOC
-Other File Extensions :
+Other File Extensions :
# When analyzing *.h files, treat header files as
# both C and C++. If you use separate extensions for C++ and
@@ -136,7 +136,7 @@ Wrap long names in reports : Yes
# are to be created. The path must be a location with write
# permissions. RSM will create work files in the current
# directory if no path is specified.
-Work file location path :
+Work file location path :
# When processing code line differentials, ignore
# blank line changes in the code.
@@ -261,7 +261,7 @@ Maximum Function Name Length : 32
# Emit a quality notice when a file does not contain
# the specified key string.
Quality Notice 21 : No
-RSM KEY String :
+RSM KEY String :
# RSM Quality Notices For Stability and Maintainability ################
@@ -492,13 +492,13 @@ Min. Class/Struct LOC content analysis : 10
# or interface white space percentage is less than
# the specified minimum.
Quality Notice 16 : Yes
-Minimum Function Whitespace Percent : 10.00
+Minimum Function Whitespace Percent : 10.00
# Quality Notice No. 17
# Emit a quality notice when function comment line
# percentage is less than the specified minimum.
Quality Notice 17 : No
-Minimum Function Comment Line Percent : 10.00
+Minimum Function Comment Line Percent : 10.00
# Quality Notice No. 18
# Emit a quality notice when the eLOC within a
@@ -517,14 +517,14 @@ Minimum Function lLOC : 0
# Emit a quality notice when class/struct comment line
# percentage is less than the specified minimum.
Quality Notice 31 : Yes
-Minimum Class/Struct Comment Percent : 10.00
+Minimum Class/Struct Comment Percent : 10.00
# Quality Notice No. 46
# Emit a quality notice when function, struct, class
# or interface blank line percentage is less than the
# specified minimum.
Quality Notice 46 : No
-Minimum Function Blank Line Percent : 10.00
+Minimum Function Blank Line Percent : 10.00
# Quality Notice No. 51
# Emit a quality notice when a function
@@ -553,20 +553,20 @@ Quality Notice 54 : Yes
# percentage is less than the specified minimum.
# Consider setting Notice 30 to No.
Quality Notice 19 : Yes
-Minimum File Whitespace Percent : 10.00
+Minimum File Whitespace Percent : 10.00
A TAB is equivalent to n space : 2
# Quality Notice No. 20
# Emit a quality notice when file comment line
# percentage is less than the specified minimum.
Quality Notice 20 : Yes
-Minimum File Comment Line Percent : 10.00
+Minimum File Comment Line Percent : 10.00
# Quality Notice No. 47
# Emit a quality notice when file blank line
# percentage is less than the specified minimum.
Quality Notice 47 : No
-Minimum File Blank Line Percent : 10.00
+Minimum File Blank Line Percent : 10.00
# Quality Notice No. 57
# Emit a quality notice when RSM skip lines conditions
diff --git a/examples/arm-cm/blinky_efm32-slstk3401a/qk/gnu/flash.bat b/examples/arm-cm/blinky_efm32-slstk3401a/qk/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/blinky_efm32-slstk3401a/qk/gnu/flash.bat
+++ b/examples/arm-cm/blinky_efm32-slstk3401a/qk/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/blinky_efm32-slstk3401a/qk/iar/blinky-qk.icf b/examples/arm-cm/blinky_efm32-slstk3401a/qk/iar/blinky-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/blinky_efm32-slstk3401a/qk/iar/blinky-qk.icf
+++ b/examples/arm-cm/blinky_efm32-slstk3401a/qk/iar/blinky-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/blinky_efm32-slstk3401a/qv/gnu/flash.bat b/examples/arm-cm/blinky_efm32-slstk3401a/qv/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/blinky_efm32-slstk3401a/qv/gnu/flash.bat
+++ b/examples/arm-cm/blinky_efm32-slstk3401a/qv/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/blinky_efm32-slstk3401a/qv/iar/blinky-qv.icf b/examples/arm-cm/blinky_efm32-slstk3401a/qv/iar/blinky-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/blinky_efm32-slstk3401a/qv/iar/blinky-qv.icf
+++ b/examples/arm-cm/blinky_efm32-slstk3401a/qv/iar/blinky-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/blinky_ek-tm4c123gxl/qk/gnu/flash.bat b/examples/arm-cm/blinky_ek-tm4c123gxl/qk/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/blinky_ek-tm4c123gxl/qk/gnu/flash.bat
+++ b/examples/arm-cm/blinky_ek-tm4c123gxl/qk/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/blinky_ek-tm4c123gxl/qk/iar/blinky-qk.icf b/examples/arm-cm/blinky_ek-tm4c123gxl/qk/iar/blinky-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/blinky_ek-tm4c123gxl/qk/iar/blinky-qk.icf
+++ b/examples/arm-cm/blinky_ek-tm4c123gxl/qk/iar/blinky-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/blinky_ek-tm4c123gxl/qv/gnu/flash.bat b/examples/arm-cm/blinky_ek-tm4c123gxl/qv/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/blinky_ek-tm4c123gxl/qv/gnu/flash.bat
+++ b/examples/arm-cm/blinky_ek-tm4c123gxl/qv/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/blinky_ek-tm4c123gxl/qv/iar/blinky-qv.icf b/examples/arm-cm/blinky_ek-tm4c123gxl/qv/iar/blinky-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/blinky_ek-tm4c123gxl/qv/iar/blinky-qv.icf
+++ b/examples/arm-cm/blinky_ek-tm4c123gxl/qv/iar/blinky-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qk/gnu/flash.bat b/examples/arm-cm/dpp_efm32-slstk3401a/qk/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/dpp_efm32-slstk3401a/qk/gnu/flash.bat
+++ b/examples/arm-cm/dpp_efm32-slstk3401a/qk/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf b/examples/arm-cm/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf
+++ b/examples/arm-cm/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qv/gnu/flash.bat b/examples/arm-cm/dpp_efm32-slstk3401a/qv/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/dpp_efm32-slstk3401a/qv/gnu/flash.bat
+++ b/examples/arm-cm/dpp_efm32-slstk3401a/qv/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf b/examples/arm-cm/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf
+++ b/examples/arm-cm/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qview/qview-dpp.lnk b/examples/arm-cm/dpp_efm32-slstk3401a/qview/qview-dpp.lnk
deleted file mode 100644
index e5e45279..00000000
Binary files a/examples/arm-cm/dpp_efm32-slstk3401a/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qview/qview-dpp1.lnk b/examples/arm-cm/dpp_efm32-slstk3401a/qview/qview-dpp1.lnk
deleted file mode 100644
index 60283bc8..00000000
Binary files a/examples/arm-cm/dpp_efm32-slstk3401a/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qxk/gnu/flash.bat b/examples/arm-cm/dpp_efm32-slstk3401a/qxk/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/dpp_efm32-slstk3401a/qxk/gnu/flash.bat
+++ b/examples/arm-cm/dpp_efm32-slstk3401a/qxk/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf b/examples/arm-cm/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf
+++ b/examples/arm-cm/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu/flash.bat b/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu/flash.bat
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu_with-stack-prot/flash.bat b/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu_with-stack-prot/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu_with-stack-prot/flash.bat
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qk/gnu_with-stack-prot/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qk/iar/dpp-qk.icf b/examples/arm-cm/dpp_ek-tm4c123gxl/qk/iar/dpp-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qk/iar/dpp-qk.icf
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qk/iar/dpp-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qv/gnu/flash.bat b/examples/arm-cm/dpp_ek-tm4c123gxl/qv/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qv/gnu/flash.bat
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qv/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qv/iar/dpp-qv.icf b/examples/arm-cm/dpp_ek-tm4c123gxl/qv/iar/dpp-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qv/iar/dpp-qv.icf
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qv/iar/dpp-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qview/qview-dpp.lnk b/examples/arm-cm/dpp_ek-tm4c123gxl/qview/qview-dpp.lnk
deleted file mode 100644
index 8c2ea1c4..00000000
Binary files a/examples/arm-cm/dpp_ek-tm4c123gxl/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qview/qview-dpp1.lnk b/examples/arm-cm/dpp_ek-tm4c123gxl/qview/qview-dpp1.lnk
deleted file mode 100644
index af5e5c22..00000000
Binary files a/examples/arm-cm/dpp_ek-tm4c123gxl/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/gnu/flash.bat b/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/gnu/flash.bat
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/iar/dpp-qxk.icf b/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/iar/dpp-qxk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/iar/dpp-qxk.icf
+++ b/examples/arm-cm/dpp_ek-tm4c123gxl/qxk/iar/dpp-qxk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_mbed-lpc1768/qk/iar/dpp-qk.icf b/examples/arm-cm/dpp_mbed-lpc1768/qk/iar/dpp-qk.icf
index e8a34c46..0b9e36c0 100644
--- a/examples/arm-cm/dpp_mbed-lpc1768/qk/iar/dpp-qk.icf
+++ b/examples/arm-cm/dpp_mbed-lpc1768/qk/iar/dpp-qk.icf
@@ -35,5 +35,5 @@ place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block HEAP };
-place in CRP_region { section .crp };
-place in RAM1_region { section .sram };
\ No newline at end of file
+place in CRP_region { section .crp };
+place in RAM1_region { section .sram };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_mbed-lpc1768/qv/iar/dpp-qv.icf b/examples/arm-cm/dpp_mbed-lpc1768/qv/iar/dpp-qv.icf
index e8a34c46..0b9e36c0 100644
--- a/examples/arm-cm/dpp_mbed-lpc1768/qv/iar/dpp-qv.icf
+++ b/examples/arm-cm/dpp_mbed-lpc1768/qv/iar/dpp-qv.icf
@@ -35,5 +35,5 @@ place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block HEAP };
-place in CRP_region { section .crp };
-place in RAM1_region { section .sram };
\ No newline at end of file
+place in CRP_region { section .crp };
+place in RAM1_region { section .sram };
\ No newline at end of file
diff --git a/examples/arm-cm/dpp_nucleo-h743zi/qview/qview-dpp.lnk b/examples/arm-cm/dpp_nucleo-h743zi/qview/qview-dpp.lnk
deleted file mode 100644
index 06d8efbf..00000000
Binary files a/examples/arm-cm/dpp_nucleo-h743zi/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-h743zi/qview/qview-dpp1.lnk b/examples/arm-cm/dpp_nucleo-h743zi/qview/qview-dpp1.lnk
deleted file mode 100644
index 38eb80b8..00000000
Binary files a/examples/arm-cm/dpp_nucleo-h743zi/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-l053r8/qview/qview-dpp.lnk b/examples/arm-cm/dpp_nucleo-l053r8/qview/qview-dpp.lnk
deleted file mode 100644
index 0e556bfb..00000000
Binary files a/examples/arm-cm/dpp_nucleo-l053r8/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-l053r8/qview/qview-dpp1.lnk b/examples/arm-cm/dpp_nucleo-l053r8/qview/qview-dpp1.lnk
deleted file mode 100644
index 220356ee..00000000
Binary files a/examples/arm-cm/dpp_nucleo-l053r8/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-l152re/qspy200823_151436.seq b/examples/arm-cm/dpp_nucleo-l152re/qspy200823_151436.seq
index 8bd22bcd..a8243508 100644
--- a/examples/arm-cm/dpp_nucleo-l152re/qspy200823_151436.seq
+++ b/examples/arm-cm/dpp_nucleo-l152re/qspy200823_151436.seq
@@ -3,11 +3,11 @@
+-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+
|l_SysTick_Handl| | Table::inst | |Philo::inst[0] | |Philo::inst[1] | |Philo::inst[2] | |Philo::inst[3] | |Philo::inst[4] |
+-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+ +-------+-------+
-0000042339 . . . . * .SERVE_SIG. . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0000042339 . . . . * .SERVE_SIG. . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0000042896 *--SERVE_SIG------->| | | | | |
0001070723 *--TIMEOUT_SIG------+-------------------+-------------------+-------------------+-------------------+------------------>|
0001075362 | |<------------------+-------------------+-------------------+-------------------+-------HUNGRY_SIG--*
-0001079065 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0001079065 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0001079975 | *--EAT_SIG----------+-------------------+-------------------+-------------------+------------------>|
0001080774 | *--EAT_SIG----------+-------------------+-------------------+------------------>| |
0001081583 | *--EAT_SIG----------+-------------------+------------------>| | |
@@ -18,7 +18,7 @@
0001762885 *--TIMEOUT_SIG------+------------------>| | | | |
0001767416 | |<------HUNGRY_SIG--* | | | |
0001772368 | | | | | |
-0002097460 . . . . * .PAUSE_SIG. . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0002097460 . . . . * .PAUSE_SIG. . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0002098016 *--PAUSE_SIG------->| | | | | |
0002101049 | | | | | |
0002140275 *--TIMEOUT_SIG------+-------------------+-------------------+------------------>| | |
@@ -31,21 +31,21 @@
0003109447 | |<------------------+-------------------+-------------------+-------HUNGRY_SIG--* |
0003114370 | | | | | |
0005013277 *--TIMEOUT_SIG------+-------------------+-------------------+-------------------+-------------------+------------------>|
-0005016745 . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
+0005016745 . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
0005017655 | |<------------------+-------------------+-------------------+-------------------+---------DONE_SIG--*
0005025076 | | | | | |
0007760487 *--TIMEOUT_SIG------+-------------------+-------------------+-------------------+-------------------+------------------>|
0007764998 | |<------------------+-------------------+-------------------+-------------------+-------HUNGRY_SIG--*
0007769921 | | | | | |
-0011827861 . . . . * .SERVE_SIG. . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0011827861 . . . . * .SERVE_SIG. . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0011828417 *--SERVE_SIG------->| | | | | |
-0011832381 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0011832381 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0011833291 | *--EAT_SIG----------+-------------------+-------------------+-------------------+------------------>|
0011834089 | *--EAT_SIG----------+-------------------+-------------------+------------------>| |
0011834887 | *--EAT_SIG----------+-------------------+------------------>| | |
0011835685 | *--EAT_SIG----------+------------------>| | | |
0011836483 | *--EAT_SIG--------->| | | | |
-0011839510 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0011839510 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0011840421 | *--EAT_SIG----------+-------------------+-------------------+-------------------+------------------>|
0011841199 | *--EAT_SIG----------+-------------------+-------------------+------------------>| |
0011841977 | *--EAT_SIG----------+-------------------+------------------>| | |
@@ -55,9 +55,9 @@
0011864225 | | | | | |
0011874191 | | | | | |
0015268086 *--TIMEOUT_SIG------+-------------------+-------------------+------------------>| | |
-0015271590 . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . * .DONE_SIG . . . . | . . . . . . . . . | . . .
+0015271590 . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . * .DONE_SIG . . . . | . . . . . . . . . | . . .
0015272500 | |<------------------+-------------------+---------DONE_SIG--* | |
-0015276635 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0015276635 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0015277545 | *--EAT_SIG----------+-------------------+-------------------+-------------------+------------------>|
0015278343 | *--EAT_SIG----------+-------------------+-------------------+------------------>| |
0015279141 | *--EAT_SIG----------+-------------------+------------------>| | |
@@ -66,9 +66,9 @@
0015289641 | | | | | |
0015294035 | | | | | |
0015540732 *--TIMEOUT_SIG------+------------------>| | | | |
-0015544272 . . . . | . . . . . . . . . | . . . . . . . . . * .DONE_SIG . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0015544272 . . . . | . . . . . . . . . | . . . . . . . . . * .DONE_SIG . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0015545182 | |<--------DONE_SIG--* | | | |
-0015549317 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
+0015549317 . . . . | . . . . . . . . . * .EAT_SIG. . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . . . . . . . . | . . .
0015550227 | *--EAT_SIG----------+-------------------+-------------------+-------------------+------------------>|
0015551025 | *--EAT_SIG----------+-------------------+-------------------+------------------>| |
0015551823 | *--EAT_SIG----------+-------------------+------------------>| | |
diff --git a/examples/arm-cm/dpp_nucleo-l152re/qspy200823_203915.seq b/examples/arm-cm/dpp_nucleo-l152re/qspy200823_203915.seq
index dc60d12e..2c084ea2 100644
--- a/examples/arm-cm/dpp_nucleo-l152re/qspy200823_203915.seq
+++ b/examples/arm-cm/dpp_nucleo-l152re/qspy200823_203915.seq
@@ -3,11 +3,11 @@
+-------+-------+ +-------+-------+ +-------+-------+
|l_SysTick_Handl| | Table::inst | | ? |
+-------+-------+ +-------+-------+ +-------+-------+
-0000042339 . . . . * .SERVE_SIG. . . . | . . . . . . . . . / . . .
+0000042339 . . . . * .SERVE_SIG. . . . | . . . . . . . . . / . . .
0000042896 *--SERVE_SIG------->| /
0001070723 *--TIMEOUT_SIG------+------------------>/
0001075362 | |<------HUNGRY_SIG--*
-0001079065 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
+0001079065 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
0001079975 | *--EAT_SIG--------->/
0001080774 | *--EAT_SIG--------->/
0001081583 | *--EAT_SIG--------->/
@@ -15,7 +15,7 @@
0001083181 | *--EAT_SIG--------->/
0001762885 *--TIMEOUT_SIG------+------------------>/
0001767416 | |<------HUNGRY_SIG--*
-0002097460 . . . . * .PAUSE_SIG. . . . | . . . . . . . . . / . . .
+0002097460 . . . . * .PAUSE_SIG. . . . | . . . . . . . . . / . . .
0002098016 *--PAUSE_SIG------->| /
0002101049 | /
0002140275 *--TIMEOUT_SIG------+------------------>/
@@ -25,19 +25,19 @@
0003104906 *--TIMEOUT_SIG------+------------------>/
0003109447 | |<------HUNGRY_SIG--*
0005013277 *--TIMEOUT_SIG------+------------------>/
-0005016745 . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
+0005016745 . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
0005017655 | |<--------DONE_SIG--*
0007760487 *--TIMEOUT_SIG------+------------------>/
0007764998 | |<------HUNGRY_SIG--*
-0011827861 . . . . * .SERVE_SIG. . . . | . . . . . . . . . / . . .
+0011827861 . . . . * .SERVE_SIG. . . . | . . . . . . . . . / . . .
0011828417 *--SERVE_SIG------->| /
-0011832381 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
+0011832381 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
0011833291 | *--EAT_SIG--------->/
0011834089 | *--EAT_SIG--------->/
0011834887 | *--EAT_SIG--------->/
0011835685 | *--EAT_SIG--------->/
0011836483 | *--EAT_SIG--------->/
-0011839510 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
+0011839510 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
0011840421 | *--EAT_SIG--------->/
0011841199 | *--EAT_SIG--------->/
0011841977 | *--EAT_SIG--------->/
@@ -45,18 +45,18 @@
0011843533 | *--EAT_SIG--------->/
0011846001 | /
0015268086 *--TIMEOUT_SIG------+------------------>/
-0015271590 . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
+0015271590 . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
0015272500 | |<--------DONE_SIG--*
-0015276635 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
+0015276635 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
0015277545 | *--EAT_SIG--------->/
0015278343 | *--EAT_SIG--------->/
0015279141 | *--EAT_SIG--------->/
0015279939 | *--EAT_SIG--------->/
0015280737 | *--EAT_SIG--------->/
0015540732 *--TIMEOUT_SIG------+------------------>/
-0015544272 . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
+0015544272 . . . . | . . . . . . . . . | . . . . DONE_SIG. * . . .
0015545182 | |<--------DONE_SIG--*
-0015549317 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
+0015549317 . . . . | . . . . . . . . . * .EAT_SIG. . . . . / . . .
0015550227 | *--EAT_SIG--------->/
0015551025 | *--EAT_SIG--------->/
0015551823 | *--EAT_SIG--------->/
diff --git a/examples/arm-cm/dpp_nucleo-l152re/qview/qview-dpp.lnk b/examples/arm-cm/dpp_nucleo-l152re/qview/qview-dpp.lnk
deleted file mode 100644
index 904fee6d..00000000
Binary files a/examples/arm-cm/dpp_nucleo-l152re/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-l152re/qview/qview-dpp1.lnk b/examples/arm-cm/dpp_nucleo-l152re/qview/qview-dpp1.lnk
deleted file mode 100644
index 507af402..00000000
Binary files a/examples/arm-cm/dpp_nucleo-l152re/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-l552ze/qview/qview-dpp.lnk b/examples/arm-cm/dpp_nucleo-l552ze/qview/qview-dpp.lnk
deleted file mode 100644
index f89908b2..00000000
Binary files a/examples/arm-cm/dpp_nucleo-l552ze/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_nucleo-l552ze/qview/qview-dpp1.lnk b/examples/arm-cm/dpp_nucleo-l552ze/qview/qview-dpp1.lnk
deleted file mode 100644
index 14b7c635..00000000
Binary files a/examples/arm-cm/dpp_nucleo-l552ze/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/arm-cm/dpp_stm32f4-discovery/qk/gnu/flash.bat b/examples/arm-cm/dpp_stm32f4-discovery/qk/gnu/flash.bat
index 637ee704..60694ebc 100644
--- a/examples/arm-cm/dpp_stm32f4-discovery/qk/gnu/flash.bat
+++ b/examples/arm-cm/dpp_stm32f4-discovery/qk/gnu/flash.bat
@@ -1,9 +1,9 @@
::============================================================================
:: Batch file to load the DPP program to the flash of STM32 boards
-::
+::
:: NOTE: requires the ST-LINK utlity from ST, see:
:: http://www.st.com/en/embedded-software/stsw-link004.html
-::
+::
@echo off
setlocal
@@ -12,7 +12,7 @@ setlocal
::----------------------------------------------------------------------------
:: NOTE: Adjust the following symbol to the location of the
-:: STLINK utility on your machine
+:: STLINK utility on your machine
::
set STLINK="C:\tools\ST\ST-LINK\ST-LINK Utility\ST-LINK_CLI.exe"
diff --git a/examples/arm-cm/dpp_stm32f4-discovery/qv/gnu/flash.bat b/examples/arm-cm/dpp_stm32f4-discovery/qv/gnu/flash.bat
index 637ee704..60694ebc 100644
--- a/examples/arm-cm/dpp_stm32f4-discovery/qv/gnu/flash.bat
+++ b/examples/arm-cm/dpp_stm32f4-discovery/qv/gnu/flash.bat
@@ -1,9 +1,9 @@
::============================================================================
:: Batch file to load the DPP program to the flash of STM32 boards
-::
+::
:: NOTE: requires the ST-LINK utlity from ST, see:
:: http://www.st.com/en/embedded-software/stsw-link004.html
-::
+::
@echo off
setlocal
@@ -12,7 +12,7 @@ setlocal
::----------------------------------------------------------------------------
:: NOTE: Adjust the following symbol to the location of the
-:: STLINK utility on your machine
+:: STLINK utility on your machine
::
set STLINK="C:\tools\ST\ST-LINK\ST-LINK Utility\ST-LINK_CLI.exe"
diff --git a/examples/arm-cm/dpp_stm32f4-discovery/qxk/gnu/flash.bat b/examples/arm-cm/dpp_stm32f4-discovery/qxk/gnu/flash.bat
index 637ee704..60694ebc 100644
--- a/examples/arm-cm/dpp_stm32f4-discovery/qxk/gnu/flash.bat
+++ b/examples/arm-cm/dpp_stm32f4-discovery/qxk/gnu/flash.bat
@@ -1,9 +1,9 @@
::============================================================================
:: Batch file to load the DPP program to the flash of STM32 boards
-::
+::
:: NOTE: requires the ST-LINK utlity from ST, see:
:: http://www.st.com/en/embedded-software/stsw-link004.html
-::
+::
@echo off
setlocal
@@ -12,7 +12,7 @@ setlocal
::----------------------------------------------------------------------------
:: NOTE: Adjust the following symbol to the location of the
-:: STLINK utility on your machine
+:: STLINK utility on your machine
::
set STLINK="C:\tools\ST\ST-LINK\ST-LINK Utility\ST-LINK_CLI.exe"
diff --git a/examples/arm-cm/game_efm32-slstk3401a/qk/gnu/flash.bat b/examples/arm-cm/game_efm32-slstk3401a/qk/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/game_efm32-slstk3401a/qk/gnu/flash.bat
+++ b/examples/arm-cm/game_efm32-slstk3401a/qk/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/game_efm32-slstk3401a/qk/iar/game-qk.icf b/examples/arm-cm/game_efm32-slstk3401a/qk/iar/game-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/game_efm32-slstk3401a/qk/iar/game-qk.icf
+++ b/examples/arm-cm/game_efm32-slstk3401a/qk/iar/game-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/game_efm32-slstk3401a/qv/gnu/flash.bat b/examples/arm-cm/game_efm32-slstk3401a/qv/gnu/flash.bat
index 0ca15c72..23215d0b 100644
--- a/examples/arm-cm/game_efm32-slstk3401a/qv/gnu/flash.bat
+++ b/examples/arm-cm/game_efm32-slstk3401a/qv/gnu/flash.bat
@@ -1,13 +1,13 @@
::============================================================================
:: Batch file to program the flash of EFM32-SLSTK3401A board
-::
+::
:: NOTE: requires the J-Link commander (JLink.exe) from SEGGER, see:
:: https://www.segger.com/j-link-commander.html
-::
+::
setlocal
@echo off
-@echo Load a given binary file to the flash of EFM32-SLSTK3401A
+@echo Load a given binary file to the flash of EFM32-SLSTK3401A
@echo usage: flash bin-file
@echo example: flash dbg\blinky-qk.bin
@@ -17,7 +17,7 @@ setlocal
::
if [%JLINK%] EQU [] set JLINK=%QTOOLS%\..\JLink
if not exist "%JLINK%\JLink.exe" (
- @echo The JLink tool not found. Please adjust flash.bat
+ @echo The JLink tool not found. Please adjust flash.bat
@goto end
)
diff --git a/examples/arm-cm/game_efm32-slstk3401a/qv/iar/game-qv.icf b/examples/arm-cm/game_efm32-slstk3401a/qv/iar/game-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/game_efm32-slstk3401a/qv/iar/game-qv.icf
+++ b/examples/arm-cm/game_efm32-slstk3401a/qv/iar/game-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/low-power_ek-tm4c123gxl/qk/gnu/flash.bat b/examples/arm-cm/low-power_ek-tm4c123gxl/qk/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/low-power_ek-tm4c123gxl/qk/gnu/flash.bat
+++ b/examples/arm-cm/low-power_ek-tm4c123gxl/qk/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/low-power_ek-tm4c123gxl/qk/iar/low-power-qk.icf b/examples/arm-cm/low-power_ek-tm4c123gxl/qk/iar/low-power-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/low-power_ek-tm4c123gxl/qk/iar/low-power-qk.icf
+++ b/examples/arm-cm/low-power_ek-tm4c123gxl/qk/iar/low-power-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/low-power_ek-tm4c123gxl/qv/gnu/flash.bat b/examples/arm-cm/low-power_ek-tm4c123gxl/qv/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/low-power_ek-tm4c123gxl/qv/gnu/flash.bat
+++ b/examples/arm-cm/low-power_ek-tm4c123gxl/qv/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/low-power_ek-tm4c123gxl/qv/iar/low-power-qv.icf b/examples/arm-cm/low-power_ek-tm4c123gxl/qv/iar/low-power-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/low-power_ek-tm4c123gxl/qv/iar/low-power-qv.icf
+++ b/examples/arm-cm/low-power_ek-tm4c123gxl/qv/iar/low-power-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/gnu/flash.bat b/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/gnu/flash.bat
+++ b/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/iar/low-power-qxk.icf b/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/iar/low-power-qxk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/iar/low-power-qxk.icf
+++ b/examples/arm-cm/low-power_ek-tm4c123gxl/qxk/iar/low-power-qxk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/arm-cr/dpp_launchxl2-tms57012/qview/qview-dpp.lnk b/examples/arm-cr/dpp_launchxl2-tms57012/qview/qview-dpp.lnk
deleted file mode 100644
index 8f989777..00000000
Binary files a/examples/arm-cr/dpp_launchxl2-tms57012/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/arm-cr/dpp_launchxl2-tms57012/qview/qview-dpp1.lnk b/examples/arm-cr/dpp_launchxl2-tms57012/qview/qview-dpp1.lnk
deleted file mode 100644
index b9bb91e4..00000000
Binary files a/examples/arm-cr/dpp_launchxl2-tms57012/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/examples/embos/arm-cm/dpp_nucleo-h743zi/gnu/SEGGER/SEGGER_RTT_ASM_ARMv7M.S b/examples/embos/arm-cm/dpp_nucleo-h743zi/gnu/SEGGER/SEGGER_RTT_ASM_ARMv7M.S
index 8b134723..b2033fd6 100644
--- a/examples/embos/arm-cm/dpp_nucleo-h743zi/gnu/SEGGER/SEGGER_RTT_ASM_ARMv7M.S
+++ b/examples/embos/arm-cm/dpp_nucleo-h743zi/gnu/SEGGER/SEGGER_RTT_ASM_ARMv7M.S
@@ -58,9 +58,9 @@ Additional information:
#define _THUMB_CODE .code 16
#define _WORD .word
#define _SECTION(Sect, Type, AlignExp) .section Sect ##, "ax"
- #define _ALIGN(Exp) .align Exp
+ #define _ALIGN(Exp) .align Exp
#define _PLACE_LITS .ltorg
- #define _DATA_SECT_START
+ #define _DATA_SECT_START
#define _C_STARTUP _start
#define _STACK_END __stack_end__
#define _RAMFUNC
@@ -80,7 +80,7 @@ Additional information:
#define _THUMB_CODE THUMB
#define _WORD DCD
#define _SECTION(Sect, Type, AlignExp) SECTION Sect ## : ## Type ## :REORDER:NOROOT ## (AlignExp)
- #define _ALIGN(Exp) alignrom Exp
+ #define _ALIGN(Exp) alignrom Exp
#define _PLACE_LITS
#define _DATA_SECT_START DATA
#define _C_STARTUP __iar_program_start
diff --git a/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat b/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat
+++ b/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf b/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
+++ b/examples/freertos/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/gnu/flash.bat b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/gnu/flash.bat
index 1e07aad3..30a2b4b4 100644
--- a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/gnu/flash.bat
+++ b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program to the flash of EK-LM3S6965
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
@@ -13,7 +13,7 @@ setlocal
::----------------------------------------------------------------------------
:: NOTE: The following symbol LMFLASH assumes that LMFlash.exe can
:: be found on the PATH. You might need to adjust this symbol to the
-:: location of the LMFlash utility on your machine
+:: location of the LMFlash utility on your machine
::
set LMFLASH=LMFlash.exe
diff --git a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/iar/lwip-qk.icf b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/iar/lwip-qk.icf
index 8d92b3e6..7267deeb 100644
--- a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/iar/lwip-qk.icf
+++ b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qk/iar/lwip-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/gnu/flash.bat b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/gnu/flash.bat
index 1e07aad3..30a2b4b4 100644
--- a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/gnu/flash.bat
+++ b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program to the flash of EK-LM3S6965
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
@@ -13,7 +13,7 @@ setlocal
::----------------------------------------------------------------------------
:: NOTE: The following symbol LMFLASH assumes that LMFlash.exe can
:: be found on the PATH. You might need to adjust this symbol to the
-:: location of the LMFlash utility on your machine
+:: location of the LMFlash utility on your machine
::
set LMFLASH=LMFlash.exe
diff --git a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/iar/lwip-qv.icf b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/iar/lwip-qv.icf
index 8d92b3e6..7267deeb 100644
--- a/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/iar/lwip-qv.icf
+++ b/examples/lwip/arm-cm/lwip_ek-lm3s6965/qv/iar/lwip-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/performance/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf b/examples/performance/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/performance/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf
+++ b/examples/performance/dpp_efm32-slstk3401a/qk/iar/dpp-qk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/performance/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf b/examples/performance/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/performance/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf
+++ b/examples/performance/dpp_efm32-slstk3401a/qv/iar/dpp-qv.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/performance/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf b/examples/performance/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/performance/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf
+++ b/examples/performance/dpp_efm32-slstk3401a/qxk/iar/dpp-qxk.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/performance/dpp_efm32-slstk3401a/ucos-ii/iar/dpp-ucos2.icf b/examples/performance/dpp_efm32-slstk3401a/ucos-ii/iar/dpp-ucos2.icf
index 565bb4c0..da0bc053 100644
--- a/examples/performance/dpp_efm32-slstk3401a/ucos-ii/iar/dpp-ucos2.icf
+++ b/examples/performance/dpp_efm32-slstk3401a/ucos-ii/iar/dpp-ucos2.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/threadx/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf b/examples/threadx/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
index 115a830b..0fdfc4b3 100644
--- a/examples/threadx/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
+++ b/examples/threadx/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/threadx/arm-cm/dpp_stm32f429-discovery/iar/dpp.icf b/examples/threadx/arm-cm/dpp_stm32f429-discovery/iar/dpp.icf
index 3f54c43b..371a08a7 100644
--- a/examples/threadx/arm-cm/dpp_stm32f429-discovery/iar/dpp.icf
+++ b/examples/threadx/arm-cm/dpp_stm32f429-discovery/iar/dpp.icf
@@ -27,5 +27,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat b/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat
index 8f88a12e..cb2a3886 100644
--- a/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat
+++ b/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/gnu/flash.bat
@@ -1,8 +1,8 @@
::============================================================================
:: Batch file to program the flash of EK-TM4C123GXL
-::
+::
:: NOTE: requires the LMFlash programmer (included in QTools for Windows)
-::
+::
@echo off
setlocal
diff --git a/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf b/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
index 565bb4c0..da0bc053 100644
--- a/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
+++ b/examples/uc-os2/arm-cm/dpp_ek-tm4c123gxl/iar/dpp.icf
@@ -25,5 +25,5 @@ do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
-place at start of RAM_region {block CSTACK };
+place at start of RAM_region {block CSTACK };
place in RAM_region { readwrite, block HEAP };
\ No newline at end of file
diff --git a/examples/workstation/dpp/qview/qview-dpp.lnk b/examples/workstation/dpp/qview/qview-dpp.lnk
deleted file mode 100644
index 72e7c69f..00000000
Binary files a/examples/workstation/dpp/qview/qview-dpp.lnk and /dev/null differ
diff --git a/examples/workstation/dpp/qview/qview-dpp1.lnk b/examples/workstation/dpp/qview/qview-dpp1.lnk
deleted file mode 100644
index 20406a36..00000000
Binary files a/examples/workstation/dpp/qview/qview-dpp1.lnk and /dev/null differ
diff --git a/include/qstamp.cpp b/include/qstamp.cpp
index f85d27c8..81b746ef 100644
--- a/include/qstamp.cpp
+++ b/include/qstamp.cpp
@@ -1,19 +1,5 @@
-//$file${include::qstamp.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
-//
-// Model: qpcpp.qm
-// File: ${include::qstamp.cpp}
-//
-// This code has been generated by QM 5.2.2 .
-// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
-//
-// This code is covered by the following QP license:
-// License # : LicenseRef-QL-dual
-// Issued to : Any user of the QP/C++ real-time embedded framework
-// Framework(s) : qpcpp
-// Support ends : 2023-12-31
-// License scope:
-//
-// Copyright (C) 2005 Quantum Leaps, LLC .
+// QP/C++ Real-Time Embedded Framework (RTEF)
+// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
//
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
//
@@ -32,25 +18,17 @@
// Plagiarizing this software to sidestep the license obligations is illegal.
//
// Contact information:
-//
+//
//
-//
-//$endhead${include::qstamp.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//! @file
//! @brief Application build time-stamp
-//! @note
-//! This module needs to be re-compiled in every new software build. To achive
-//! this, it is recommended to delete the object file (qstamp.o or qstamp.obj)
-//! in the build directory before each build. (Most development tools allow
-//! you to specify a pre-build action, which is the ideal place to delete
-//! the qstamp object file.)
+//! @deprecated
+//! File `include/qstamp.cpp` is kept only for backwards compatibility.
+//! Instead, please use file `src/qs/qstamp.cpp`.
#include "qstamp.hpp"
namespace QP {
-//! the calendar date of the last translation of the form: "Mmm dd yyyy"
char const BUILD_DATE[12] = __DATE__;
-
-//! the time of the last translation of the form: "hh:mm:ss"
char const BUILD_TIME[9] = __TIME__;
} // namespace QP
diff --git a/ports/lint-plus/lin.bat b/ports/lint-plus/lin.bat
index 00287534..608d0ae5 100644
--- a/ports/lint-plus/lin.bat
+++ b/ports/lint-plus/lin.bat
@@ -55,7 +55,7 @@ if "%1"=="16bit" (
@del *.log
:: linting -------------------------------------------------------------------
-%PCLP% -os(lint_qf.log) %LINTFLAGS% -iqv ..\..\src\qf\*.cpp
+%PCLP% -os(lint_qf.log) %LINTFLAGS% -iqv ..\..\src\qf\*.cpp
%PCLP% -os(lint_qv.log) %LINTFLAGS% -iqv ..\..\src\qv\*.cpp
diff --git a/qpcpp.qm b/qpcpp.qm
index a8ffbb40..9fbc4a81 100644
--- a/qpcpp.qm
+++ b/qpcpp.qm
@@ -13388,27 +13388,6 @@ extern char const BUILD_TIME[9];
#endif // QP_INC_QSTAMP_HPP_
-
-
- //! @file
-//! @brief Application build time-stamp
-//! @note
-//! This module needs to be re-compiled in every new software build. To achive
-//! this, it is recommended to delete the object file (qstamp.o or qstamp.obj)
-//! in the build directory before each build. (Most development tools allow
-//! you to specify a pre-build action, which is the ideal place to delete
-//! the qstamp object file.)
-
-#include "qstamp.hpp"
-
-namespace QP {
-//! the calendar date of the last translation of the form: "Mmm dd yyyy"
-char const BUILD_DATE[12] = __DATE__;
-
-//! the time of the last translation of the form: "hh:mm:ss"
-char const BUILD_TIME[9] = __TIME__;
-} // namespace QP
-
@@ -14819,6 +14798,27 @@ $define ${QUTest-stub}
#endif // def Q_UTEST
+
+
+ //! @file
+//! @brief Application build time-stamp
+//! @note
+//! This module needs to be re-compiled in every new software build. To achive
+//! this, it is recommended to delete the object file (qstamp.o or qstamp.obj)
+//! in the build directory before each build. (Most development tools allow
+//! you to specify a pre-build action, which is the ideal place to delete
+//! the qstamp object file.)
+
+#include "qstamp.hpp"
+
+namespace QP {
+//! the calendar date of the last translation of the form: "Mmm dd yyyy"
+char const BUILD_DATE[12] = __DATE__;
+
+//! the time of the last translation of the form: "hh:mm:ss"
+char const BUILD_TIME[9] = __TIME__;
+} // namespace QP
+
diff --git a/src/qs/qstamp.cpp b/src/qs/qstamp.cpp
new file mode 100644
index 00000000..dabb7eda
--- /dev/null
+++ b/src/qs/qstamp.cpp
@@ -0,0 +1,56 @@
+//$file${src::qs::qstamp.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+//
+// Model: qpcpp.qm
+// File: ${src::qs::qstamp.cpp}
+//
+// This code has been generated by QM 5.2.2 .
+// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
+//
+// This code is covered by the following QP license:
+// License # : LicenseRef-QL-dual
+// Issued to : Any user of the QP/C++ real-time embedded framework
+// Framework(s) : qpcpp
+// Support ends : 2023-12-31
+// License scope:
+//
+// Copyright (C) 2005 Quantum Leaps, LLC .
+//
+// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
+//
+// This software is dual-licensed under the terms of the open source GNU
+// General Public License version 3 (or any later version), or alternatively,
+// under the terms of one of the closed source Quantum Leaps commercial
+// licenses.
+//
+// The terms of the open source GNU General Public License version 3
+// can be found at:
+//
+// The terms of the closed source Quantum Leaps commercial licenses
+// can be found at:
+//
+// Redistributions in source code must retain this top-level comment block.
+// Plagiarizing this software to sidestep the license obligations is illegal.
+//
+// Contact information:
+//
+//
+//
+//$endhead${src::qs::qstamp.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//! @file
+//! @brief Application build time-stamp
+//! @note
+//! This module needs to be re-compiled in every new software build. To achive
+//! this, it is recommended to delete the object file (qstamp.o or qstamp.obj)
+//! in the build directory before each build. (Most development tools allow
+//! you to specify a pre-build action, which is the ideal place to delete
+//! the qstamp object file.)
+
+#include "qstamp.hpp"
+
+namespace QP {
+//! the calendar date of the last translation of the form: "Mmm dd yyyy"
+char const BUILD_DATE[12] = __DATE__;
+
+//! the time of the last translation of the form: "hh:mm:ss"
+char const BUILD_TIME[9] = __TIME__;
+} // namespace QP