mirror of
https://github.com/QuantumLeaps/qpcpp.git
synced 2025-01-14 05:42:57 +08:00
6.5.0
This commit is contained in:
parent
4bcf22e87b
commit
fcf6fdc6b7
@ -9,7 +9,7 @@
|
||||
License Type: Windows Single User License
|
||||
Licensed To : Quantum Leaps, LLC
|
||||
License No. : WS2975 License Date: Dec 15, 2013
|
||||
Build Date : Sep 2 2009 Run Date: Mar 28, 2019
|
||||
Build Date : Sep 2 2009 Run Date: Apr 11, 2019
|
||||
(C)1996-2009 M Squared Technologies LLC
|
||||
________________________________________________________________________
|
||||
|
||||
|
@ -93,7 +93,7 @@ Hierarchical state machines are represented in QP/C++ as subclasses of the @ref
|
||||
|
||||
<div class="separate"></div>
|
||||
@subsection sm_state_decl The Q_STATE_DECL() Macro
|
||||
The Q_STATE_DECL() macro declares **two** functions for every state: the "state-caller" **static member** function and the"state-handler" **regular member** function. So, for example, the declaration of the "on" state Q_STATE_DECL(on) expands to the following two declarations within the `Calc` class:
|
||||
The Q_STATE_DECL() macro declares **two** functions for every state: the "state-handler" **regular member** function and the "state-caller" **static member** function. So, for example, the declaration of the "on" state Q_STATE_DECL(on) expands to the following two declarations within the `Calc` class:
|
||||
|
||||
@code{cpp}
|
||||
[1] QP::QState on_h(QP::QEvt const * const e); // "state-handler"
|
||||
@ -103,9 +103,9 @@ The Q_STATE_DECL() macro declares **two** functions for every state: the "state-
|
||||
The two functions have each a different purpose.
|
||||
|
||||
<ul class="tag">
|
||||
<li><span class="tag">1</span> The "state-caller" **static member** function is used as a unique "handle" for a state. Internally, the QEP event processor uses **function pointers** to state-callers, which are simple objects (e.g. 32-bit addresses in ARM Cortex-M CPUs). These simple function pointers can be compared quickly and stored efficiently inside the state machine objects.
|
||||
<li><span class="tag">1</span> The "state-handler" `on_h()` is a **regular member** function used to implement the state behavior. As a regular class member, it has convenient, direct access to the state machine class attributes. The "state-handler" is called by the "state-caller".
|
||||
</li>
|
||||
<li><span class="tag">2</span> The "state-handler" **regular member** function is used to implement the state behavior. As a regular class member, it has convenient, direct access to the state machine class attributes. The "state-handler" is called by the "state-caller".
|
||||
<li><span class="tag">2</span> The "state-caller" `on()` is a **static member** function that has a simple job to call the state-handler member function on the specified instance of the class. Internally, the QEP event processor uses "state-callers" as unique "handles" for the states. Specifically, the QEP event processor uses the simple **function pointers** to these `state-callers`, which are simple objects (e.g. 32-bit addresses in ARM Cortex-M CPUs), because they don't use the `this` calling convention. These simple function pointers can be stored very efficiently inside the state machine objects and can be compared quickly inside the QEP algorithm that implements the UML semantics of hierarchical state machines.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@ -113,7 +113,7 @@ The two functions have each a different purpose.
|
||||
@ref sm_call
|
||||
|
||||
@remark
|
||||
Because the state-handler functions are regular members of the state machine class, they can be `virtual`, which allows them to be overridden in the subclasses of a given state machine class. Such **inheritance of entire sate machines** is an advanced feature, which should be used only in very special circumstances and with great caution. To declare a `virtual` state-handler, you simply prepend `virtual` in front of the Q_STATE_DECL() macro, as in the following examples:
|
||||
Because the state-handler functions are regular members of the state machine class, they can be `virtual`, which allows them to be overridden in the subclasses of a given state machine class. Such **inheritance of entire sate machines** is an advanced concept, which should be used only in very special circumstances and with great caution. To declare a `virtual` state-handler, you simply prepend `virtual` in front of the Q_STATE_DECL() macro, as in the following examples:
|
||||
@code{cpp}
|
||||
virtual Q_STATE_DECL(on);
|
||||
virtual Q_STATE_DECL(ready);
|
||||
@ -134,15 +134,15 @@ Every state that has been declared with the @ref sm_decl "Q_STATE_DECL()" macro
|
||||
|
||||
@code{cpp}
|
||||
[1] QP::QState Calc::ready(void * const me, QP::QEvt const * const e) {
|
||||
return static_cast<Calc *>(me)->on_h(e);
|
||||
return static_cast<Calc *>(me)->ready_h(e);
|
||||
}
|
||||
[2] QP::QState Calc::ready_h(QP::QEvt const * const e)
|
||||
@endcode
|
||||
|
||||
<ul class="tag">
|
||||
<li><span class="tag">1</span> The static `Calc::on()` state-caller function is fully defined to call the "state-handler" function on the provided `me` pointer, which is explicitly cast to the class instance.
|
||||
<li><span class="tag">1</span> The static `Calc::ready()` state-caller function is fully defined to call the "state-handler" function on the provided `me` pointer, which is explicitly cast to the class instance.
|
||||
</li>
|
||||
<li><span class="tag">2</span> The signature of the `Calc::on_h()` "state-handler" member function is provided, which needs to be followed by the body (`{...}`) of the "state-handler" member function.
|
||||
<li><span class="tag">2</span> The signature of the `Calc::ready_h()` "state-handler" member function is provided, which needs to be followed by the body (`{...}`) of the "state-handler" member function.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -234,7 +234,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -234,7 +234,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -231,7 +231,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-03-31
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -231,7 +231,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
//$file${.::dpp.h} ###########################################################
|
||||
//$file${.::dpp.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: dpp.qm
|
||||
// File: ${.::dpp.h}
|
||||
//
|
||||
// This code has been generated by QM 4.3.1 (https://www.state-machine.com/qm).
|
||||
// This code has been generated by QM 4.5.0 (https://www.state-machine.com/qm).
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//
|
||||
// This program is open source software: you can redistribute it and/or
|
||||
@ -15,7 +15,7 @@
|
||||
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
// for more details.
|
||||
//
|
||||
//$endhead${.::dpp.h} ########################################################
|
||||
//$endhead${.::dpp.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#ifndef dpp_h
|
||||
#define dpp_h
|
||||
|
||||
@ -35,7 +35,7 @@ enum DPPSignals {
|
||||
|
||||
} // namespace DPP
|
||||
|
||||
//$declare${Events::TableEvt} ################################################
|
||||
//$declare${Events::TableEvt} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
//${Events::TableEvt} ........................................................
|
||||
@ -45,42 +45,42 @@ public:
|
||||
};
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${Events::TableEvt} ################################################
|
||||
//$enddecl${Events::TableEvt} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
// number of philosophers
|
||||
#define N_PHILO ((uint8_t)5)
|
||||
|
||||
//$declare${AOs::AO_Philo[N_PHILO]} ##########################################
|
||||
//$declare${AOs::AO_Philo[N_PHILO]} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
extern QP::QActive * const AO_Philo[N_PHILO];
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${AOs::AO_Philo[N_PHILO]} ##########################################
|
||||
//$enddecl${AOs::AO_Philo[N_PHILO]} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${AOs::AO_Table} ###################################################
|
||||
//$declare${AOs::AO_Table} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
extern QP::QActive * const AO_Table;
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${AOs::AO_Table} ###################################################
|
||||
//$enddecl${AOs::AO_Table} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#ifdef qxk_h
|
||||
//$declare${AOs::XT_Test1} ###################################################
|
||||
//$declare${AOs::XT_Test1} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
extern QP::QXThread * const XT_Test1;
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${AOs::XT_Test1} ###################################################
|
||||
//$declare${AOs::XT_Test2} ###################################################
|
||||
//$enddecl${AOs::XT_Test1} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//$declare${AOs::XT_Test2} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
extern QP::QXThread * const XT_Test2;
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${AOs::XT_Test2} ###################################################
|
||||
//$enddecl${AOs::XT_Test2} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#endif // qxk_h
|
||||
|
||||
#endif // dpp_h
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<model version="4.3.1" links="1">
|
||||
<model version="4.5.0" links="1">
|
||||
<documentation>Dining Philosopher Problem example with MSM state machines</documentation>
|
||||
<!--${qpcpp}-->
|
||||
<framework name="qpcpp"/>
|
||||
@ -23,14 +23,14 @@
|
||||
m_timeEvt(this, TIMEOUT_SIG, 0U)</code>
|
||||
</operation>
|
||||
<!--${AOs::Philo::SM}-->
|
||||
<statechart>
|
||||
<statechart properties="0x00">
|
||||
<!--${AOs::Philo::SM::initial}-->
|
||||
<initial target="../1">
|
||||
<action>static bool registered = false; // starts off with 0, per C-standard
|
||||
(void)e; // suppress the compiler warning about unused parameter
|
||||
|
||||
me->subscribe(EAT_SIG);
|
||||
me->subscribe(TEST_SIG);
|
||||
subscribe(EAT_SIG);
|
||||
subscribe(TEST_SIG);
|
||||
|
||||
if (!registered) {
|
||||
registered = true;
|
||||
@ -47,16 +47,16 @@ if (!registered) {
|
||||
QS_FUN_DICTIONARY(&eating);
|
||||
}
|
||||
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, me); // signal for each Philos
|
||||
QS_SIG_DICTIONARY(TIMEOUT_SIG, me); // signal for each Philos</action>
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this); // signal for each Philos
|
||||
QS_SIG_DICTIONARY(TIMEOUT_SIG, this); // signal for each Philos</action>
|
||||
<initial_glyph conn="2,3,5,1,20,5,-3">
|
||||
<action box="0,-2,6,2"/>
|
||||
</initial_glyph>
|
||||
</initial>
|
||||
<!--${AOs::Philo::SM::thinking}-->
|
||||
<state name="thinking">
|
||||
<entry>me->m_timeEvt.armX(think_time(), 0U);</entry>
|
||||
<exit>(void)me->m_timeEvt.disarm();</exit>
|
||||
<entry>m_timeEvt.armX(think_time(), 0U);</entry>
|
||||
<exit>(void)m_timeEvt.disarm();</exit>
|
||||
<!--${AOs::Philo::SM::thinking::TIMEOUT}-->
|
||||
<tran trig="TIMEOUT" target="../../2">
|
||||
<tran_glyph conn="2,13,3,1,20,12,-3">
|
||||
@ -65,8 +65,8 @@ QS_SIG_DICTIONARY(TIMEOUT_SIG, me); // signal for each Philos</action>
|
||||
</tran>
|
||||
<!--${AOs::Philo::SM::thinking::EAT, DONE}-->
|
||||
<tran trig="EAT, DONE">
|
||||
<action>/* EAT or DONE must be for other Philos than this one */
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));</action>
|
||||
<action>// EAT or DONE must be for other Philos than this one
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this));</action>
|
||||
<tran_glyph conn="2,16,3,-1,13">
|
||||
<action box="0,-2,14,2"/>
|
||||
</tran_glyph>
|
||||
@ -85,13 +85,13 @@ Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));</action>
|
||||
<!--${AOs::Philo::SM::hungry}-->
|
||||
<state name="hungry">
|
||||
<entry>TableEvt *pe = Q_NEW(TableEvt, HUNGRY_SIG);
|
||||
pe->philoNum = PHILO_ID(me);
|
||||
AO_Table->POST(pe, me);</entry>
|
||||
pe->philoNum = PHILO_ID(this);
|
||||
AO_Table->POST(pe, this);</entry>
|
||||
<!--${AOs::Philo::SM::hungry::EAT}-->
|
||||
<tran trig="EAT">
|
||||
<!--${AOs::Philo::SM::hungry::EAT::[Q_EVT_CAST(TableEvt)->philoNum=~}-->
|
||||
<choice target="../../../3">
|
||||
<guard>Q_EVT_CAST(TableEvt)->philoNum == PHILO_ID(me)</guard>
|
||||
<guard>Q_EVT_CAST(TableEvt)->philoNum == PHILO_ID(this)</guard>
|
||||
<choice_glyph conn="15,30,5,1,7,13,-3">
|
||||
<action box="1,0,19,4"/>
|
||||
</choice_glyph>
|
||||
@ -103,7 +103,7 @@ AO_Table->POST(pe, me);</entry>
|
||||
<!--${AOs::Philo::SM::hungry::DONE}-->
|
||||
<tran trig="DONE">
|
||||
<action>/* DONE must be for other Philos than this one */
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));</action>
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this));</action>
|
||||
<tran_glyph conn="2,36,3,-1,14">
|
||||
<action box="0,-2,14,2"/>
|
||||
</tran_glyph>
|
||||
@ -114,11 +114,11 @@ Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));</action>
|
||||
</state>
|
||||
<!--${AOs::Philo::SM::eating}-->
|
||||
<state name="eating">
|
||||
<entry>me->m_timeEvt.armX(eat_time(), 0U);</entry>
|
||||
<entry>m_timeEvt.armX(eat_time(), 0U);</entry>
|
||||
<exit>TableEvt *pe = Q_NEW(TableEvt, DONE_SIG);
|
||||
pe->philoNum = PHILO_ID(me);
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
(void)me->m_timeEvt.disarm();</exit>
|
||||
pe->philoNum = PHILO_ID(this);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
(void)m_timeEvt.disarm();</exit>
|
||||
<!--${AOs::Philo::SM::eating::TIMEOUT}-->
|
||||
<tran trig="TIMEOUT" target="../../1">
|
||||
<tran_glyph conn="2,51,3,1,22,-41,-5">
|
||||
@ -127,8 +127,8 @@ QP::QF::PUBLISH(pe, me);
|
||||
</tran>
|
||||
<!--${AOs::Philo::SM::eating::EAT, DONE}-->
|
||||
<tran trig="EAT, DONE">
|
||||
<action>/* EAT or DONE must be for other Philos than this one */
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));</action>
|
||||
<action>// EAT or DONE must be for other Philos than this one
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this));</action>
|
||||
<tran_glyph conn="2,55,3,-1,13">
|
||||
<action box="0,-2,14,2"/>
|
||||
</tran_glyph>
|
||||
@ -157,19 +157,19 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||
}</code>
|
||||
</operation>
|
||||
<!--${AOs::Table::SM}-->
|
||||
<statechart properties="QS_FUN_DICT">
|
||||
<statechart properties="0x02">
|
||||
<!--${AOs::Table::SM::initial}-->
|
||||
<initial target="../1/2">
|
||||
<action>(void)e; // suppress the compiler warning about unused parameter
|
||||
|
||||
me->subscribe(DONE_SIG);
|
||||
me->subscribe(PAUSE_SIG);
|
||||
me->subscribe(SERVE_SIG);
|
||||
me->subscribe(TEST_SIG);
|
||||
subscribe(DONE_SIG);
|
||||
subscribe(PAUSE_SIG);
|
||||
subscribe(SERVE_SIG);
|
||||
subscribe(TEST_SIG);
|
||||
|
||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||
me->m_fork[n] = FREE;
|
||||
me->m_isHungry[n] = false;
|
||||
m_fork[n] = FREE;
|
||||
m_isHungry[n] = false;
|
||||
BSP::displayPhilStat(n, THINKING);
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@ QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
||||
|
||||
// signals just for this AO...
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, me);</action>
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||
<initial_glyph conn="3,3,5,1,45,18,-10">
|
||||
<action box="0,-2,6,2"/>
|
||||
</initial_glyph>
|
||||
@ -204,16 +204,16 @@ QS_SIG_DICTIONARY(HUNGRY_SIG, me);</action>
|
||||
<!--${AOs::Table::SM::active::serving}-->
|
||||
<state name="serving">
|
||||
<entry brief="give pending permitions to eat">for (uint8_t n = 0U; n < N_PHILO; ++n) { // give permissions to eat...
|
||||
if (me->m_isHungry[n]
|
||||
&& (me->m_fork[LEFT(n)] == FREE)
|
||||
&& (me->m_fork[n] == FREE))
|
||||
if (m_isHungry[n]
|
||||
&& (m_fork[LEFT(n)] == FREE)
|
||||
&& (m_fork[n] == FREE))
|
||||
{
|
||||
me->m_fork[LEFT(n)] = USED;
|
||||
me->m_fork[n] = USED;
|
||||
m_fork[LEFT(n)] = USED;
|
||||
m_fork[n] = USED;
|
||||
TableEvt *te = Q_NEW(TableEvt, EAT_SIG);
|
||||
te->philoNum = n;
|
||||
QP::QF::PUBLISH(te, me);
|
||||
me->m_isHungry[n] = false;
|
||||
QP::QF::PUBLISH(te, this);
|
||||
m_isHungry[n] = false;
|
||||
BSP::displayPhilStat(n, EATING);
|
||||
}
|
||||
}</entry>
|
||||
@ -221,18 +221,18 @@ QS_SIG_DICTIONARY(HUNGRY_SIG, me);</action>
|
||||
<tran trig="HUNGRY">
|
||||
<action>uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// phil ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
|
||||
BSP::displayPhilStat(n, HUNGRY);
|
||||
uint8_t m = LEFT(n);</action>
|
||||
<!--${AOs::Table::SM::active::serving::HUNGRY::[bothfree]}-->
|
||||
<choice>
|
||||
<guard brief="both free">(me->m_fork[m] == FREE) && (me->m_fork[n] == FREE)</guard>
|
||||
<action>me->m_fork[m] = USED;
|
||||
me->m_fork[n] = USED;
|
||||
<guard brief="both free">(m_fork[m] == FREE) && (m_fork[n] == FREE)</guard>
|
||||
<action>m_fork[m] = USED;
|
||||
m_fork[n] = USED;
|
||||
TableEvt *pe = Q_NEW(TableEvt, EAT_SIG);
|
||||
pe->philoNum = n;
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
BSP::displayPhilStat(n, EATING);</action>
|
||||
<choice_glyph conn="19,26,5,-1,10">
|
||||
<action box="1,0,10,2"/>
|
||||
@ -241,7 +241,7 @@ BSP::displayPhilStat(n, EATING);</action>
|
||||
<!--${AOs::Table::SM::active::serving::HUNGRY::[else]}-->
|
||||
<choice>
|
||||
<guard>else</guard>
|
||||
<action>me->m_isHungry[n] = true;</action>
|
||||
<action>m_isHungry[n] = true;</action>
|
||||
<choice_glyph conn="19,26,4,-1,5,10">
|
||||
<action box="1,5,6,2"/>
|
||||
</choice_glyph>
|
||||
@ -254,35 +254,35 @@ BSP::displayPhilStat(n, EATING);</action>
|
||||
<tran trig="DONE">
|
||||
<action>uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// phil ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
|
||||
BSP::displayPhilStat(n, THINKING);
|
||||
uint8_t m = LEFT(n);
|
||||
// both forks of Phil[n] must be used
|
||||
Q_ASSERT((me->m_fork[n] == USED) && (me->m_fork[m] == USED));
|
||||
Q_ASSERT((m_fork[n] == USED) && (m_fork[m] == USED));
|
||||
|
||||
me->m_fork[m] = FREE;
|
||||
me->m_fork[n] = FREE;
|
||||
m_fork[m] = FREE;
|
||||
m_fork[n] = FREE;
|
||||
m = RIGHT(n); // check the right neighbor
|
||||
|
||||
if (me->m_isHungry[m] && (me->m_fork[m] == FREE)) {
|
||||
me->m_fork[n] = USED;
|
||||
me->m_fork[m] = USED;
|
||||
me->m_isHungry[m] = false;
|
||||
if (m_isHungry[m] && (m_fork[m] == FREE)) {
|
||||
m_fork[n] = USED;
|
||||
m_fork[m] = USED;
|
||||
m_isHungry[m] = false;
|
||||
TableEvt *pe = Q_NEW(TableEvt, EAT_SIG);
|
||||
pe->philoNum = m;
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
BSP::displayPhilStat(m, EATING);
|
||||
}
|
||||
m = LEFT(n); // check the left neighbor
|
||||
n = LEFT(m); // left fork of the left neighbor
|
||||
if (me->m_isHungry[m] && (me->m_fork[n] == FREE)) {
|
||||
me->m_fork[m] = USED;
|
||||
me->m_fork[n] = USED;
|
||||
me->m_isHungry[m] = false;
|
||||
if (m_isHungry[m] && (m_fork[n] == FREE)) {
|
||||
m_fork[m] = USED;
|
||||
m_fork[n] = USED;
|
||||
m_isHungry[m] = false;
|
||||
TableEvt *pe = Q_NEW(TableEvt, EAT_SIG);
|
||||
pe->philoNum = m;
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
BSP::displayPhilStat(m, EATING);
|
||||
}</action>
|
||||
<tran_glyph conn="4,34,3,-1,15">
|
||||
@ -320,8 +320,8 @@ if (me->m_isHungry[m] && (me->m_fork[n] == FREE)) {
|
||||
<tran trig="HUNGRY">
|
||||
<action>uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// philo ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
me->m_isHungry[n] = true;
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
m_isHungry[n] = true;
|
||||
BSP::displayPhilStat(n, HUNGRY);</action>
|
||||
<tran_glyph conn="4,60,3,-1,15">
|
||||
<action box="0,-2,6,2"/>
|
||||
@ -331,15 +331,15 @@ BSP::displayPhilStat(n, HUNGRY);</action>
|
||||
<tran trig="DONE">
|
||||
<action>uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// phil ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
|
||||
BSP::displayPhilStat(n, THINKING);
|
||||
uint8_t m = LEFT(n);
|
||||
/* both forks of Phil[n] must be used */
|
||||
Q_ASSERT((me->m_fork[n] == USED) && (me->m_fork[m] == USED));
|
||||
Q_ASSERT((m_fork[n] == USED) && (m_fork[m] == USED));
|
||||
|
||||
me->m_fork[m] = FREE;
|
||||
me->m_fork[n] = FREE;</action>
|
||||
m_fork[m] = FREE;
|
||||
m_fork[n] = FREE;</action>
|
||||
<tran_glyph conn="4,63,3,-1,15">
|
||||
<action box="0,-2,6,2"/>
|
||||
</tran_glyph>
|
||||
@ -431,9 +431,9 @@ inline QP::QTimeEvtCtr eat_time() {
|
||||
+ BSP::TICKS_PER_SEC);
|
||||
}
|
||||
|
||||
// helper function to provide the ID of Philo "me"
|
||||
inline uint8_t PHILO_ID(Philo const * const me) {
|
||||
return static_cast<uint8_t>(me - l_philo);
|
||||
// helper function to provide the ID of Philo
|
||||
inline uint8_t PHILO_ID(Philo const * const philo) {
|
||||
return static_cast<uint8_t>(philo - l_philo);
|
||||
}
|
||||
|
||||
enum InternalSignals { // internal signals
|
||||
|
@ -1,9 +1,9 @@
|
||||
//$file${.::philo.cpp} #######################################################
|
||||
//$file${.::philo.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: dpp.qm
|
||||
// File: ${.::philo.cpp}
|
||||
//
|
||||
// This code has been generated by QM 4.3.1 (https://www.state-machine.com/qm).
|
||||
// This code has been generated by QM 4.5.0 (https://www.state-machine.com/qm).
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//
|
||||
// This program is open source software: you can redistribute it and/or
|
||||
@ -15,7 +15,7 @@
|
||||
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
// for more details.
|
||||
//
|
||||
//$endhead${.::philo.cpp} ####################################################
|
||||
//$endhead${.::philo.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#include "qpcpp.h"
|
||||
#include "dpp.h"
|
||||
#include "bsp.h"
|
||||
@ -23,7 +23,7 @@
|
||||
Q_DEFINE_THIS_FILE
|
||||
|
||||
// Active object class -------------------------------------------------------
|
||||
//$declare${AOs::Philo} ######################################################
|
||||
//$declare${AOs::Philo} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
//${AOs::Philo} ..............................................................
|
||||
@ -35,14 +35,14 @@ public:
|
||||
Philo();
|
||||
|
||||
protected:
|
||||
static QP::QState initial(Philo * const me, QP::QEvt const * const e);
|
||||
static QP::QState thinking(Philo * const me, QP::QEvt const * const e);
|
||||
static QP::QState hungry(Philo * const me, QP::QEvt const * const e);
|
||||
static QP::QState eating(Philo * const me, QP::QEvt const * const e);
|
||||
Q_STATE_DECL(initial);
|
||||
Q_STATE_DECL(thinking);
|
||||
Q_STATE_DECL(hungry);
|
||||
Q_STATE_DECL(eating);
|
||||
};
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${AOs::Philo} ######################################################
|
||||
//$enddecl${AOs::Philo} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
namespace DPP {
|
||||
|
||||
@ -61,9 +61,9 @@ inline QP::QTimeEvtCtr eat_time() {
|
||||
+ BSP::TICKS_PER_SEC);
|
||||
}
|
||||
|
||||
// helper function to provide the ID of Philo "me"
|
||||
inline uint8_t PHILO_ID(Philo const * const me) {
|
||||
return static_cast<uint8_t>(me - l_philo);
|
||||
// helper function to provide the ID of Philo
|
||||
inline uint8_t PHILO_ID(Philo const * const philo) {
|
||||
return static_cast<uint8_t>(philo - l_philo);
|
||||
}
|
||||
|
||||
enum InternalSignals { // internal signals
|
||||
@ -82,12 +82,13 @@ QP::QActive * const AO_Philo[N_PHILO] = { // "opaque" pointers to Philo AO
|
||||
} // namespace DPP
|
||||
|
||||
// Philo definition ----------------------------------------------------------
|
||||
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
// Check for the minimum required QP version
|
||||
#if (QP_VERSION < 630U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||
#error qpcpp version 6.3.0 or higher required
|
||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||
#error qpcpp version 6.5.0 or higher required
|
||||
#endif
|
||||
|
||||
//$define${AOs::Philo} #######################################################
|
||||
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//$define${AOs::Philo} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
//${AOs::Philo} ..............................................................
|
||||
@ -98,13 +99,13 @@ Philo::Philo()
|
||||
{}
|
||||
|
||||
//${AOs::Philo::SM} ..........................................................
|
||||
QP::QState Philo::initial(Philo * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Philo, initial) {
|
||||
//${AOs::Philo::SM::initial}
|
||||
static bool registered = false; // starts off with 0, per C-standard
|
||||
(void)e; // suppress the compiler warning about unused parameter
|
||||
|
||||
me->subscribe(EAT_SIG);
|
||||
me->subscribe(TEST_SIG);
|
||||
subscribe(EAT_SIG);
|
||||
subscribe(TEST_SIG);
|
||||
|
||||
if (!registered) {
|
||||
registered = true;
|
||||
@ -121,122 +122,122 @@ QP::QState Philo::initial(Philo * const me, QP::QEvt const * const e) {
|
||||
QS_FUN_DICTIONARY(&eating);
|
||||
}
|
||||
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, me); // signal for each Philos
|
||||
QS_SIG_DICTIONARY(TIMEOUT_SIG, me); // signal for each Philos
|
||||
return Q_TRAN(&thinking);
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this); // signal for each Philos
|
||||
QS_SIG_DICTIONARY(TIMEOUT_SIG, this); // signal for each Philos
|
||||
return tran(&thinking);
|
||||
}
|
||||
//${AOs::Philo::SM::thinking} ................................................
|
||||
QP::QState Philo::thinking(Philo * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Philo, thinking) {
|
||||
QP::QState status_;
|
||||
switch (e->sig) {
|
||||
//${AOs::Philo::SM::thinking}
|
||||
case Q_ENTRY_SIG: {
|
||||
me->m_timeEvt.armX(think_time(), 0U);
|
||||
status_ = Q_HANDLED();
|
||||
m_timeEvt.armX(think_time(), 0U);
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::thinking}
|
||||
case Q_EXIT_SIG: {
|
||||
(void)me->m_timeEvt.disarm();
|
||||
status_ = Q_HANDLED();
|
||||
(void)m_timeEvt.disarm();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::thinking::TIMEOUT}
|
||||
case TIMEOUT_SIG: {
|
||||
status_ = Q_TRAN(&hungry);
|
||||
status_ = tran(&hungry);
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::thinking::EAT, DONE}
|
||||
case EAT_SIG: // intentionally fall through
|
||||
case DONE_SIG: {
|
||||
/* EAT or DONE must be for other Philos than this one */
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));
|
||||
status_ = Q_HANDLED();
|
||||
// EAT or DONE must be for other Philos than this one
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this));
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::thinking::TEST}
|
||||
case TEST_SIG: {
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
status_ = Q_SUPER(&top);
|
||||
status_ = super(&top);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return status_;
|
||||
}
|
||||
//${AOs::Philo::SM::hungry} ..................................................
|
||||
QP::QState Philo::hungry(Philo * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Philo, hungry) {
|
||||
QP::QState status_;
|
||||
switch (e->sig) {
|
||||
//${AOs::Philo::SM::hungry}
|
||||
case Q_ENTRY_SIG: {
|
||||
TableEvt *pe = Q_NEW(TableEvt, HUNGRY_SIG);
|
||||
pe->philoNum = PHILO_ID(me);
|
||||
AO_Table->POST(pe, me);
|
||||
status_ = Q_HANDLED();
|
||||
pe->philoNum = PHILO_ID(this);
|
||||
AO_Table->POST(pe, this);
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::hungry::EAT}
|
||||
case EAT_SIG: {
|
||||
//${AOs::Philo::SM::hungry::EAT::[Q_EVT_CAST(TableEvt)->philoNum=~}
|
||||
if (Q_EVT_CAST(TableEvt)->philoNum == PHILO_ID(me)) {
|
||||
status_ = Q_TRAN(&eating);
|
||||
if (Q_EVT_CAST(TableEvt)->philoNum == PHILO_ID(this)) {
|
||||
status_ = tran(&eating);
|
||||
}
|
||||
else {
|
||||
status_ = Q_UNHANDLED();
|
||||
status_ = Q_RET_UNHANDLED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::hungry::DONE}
|
||||
case DONE_SIG: {
|
||||
/* DONE must be for other Philos than this one */
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));
|
||||
status_ = Q_HANDLED();
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this));
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
status_ = Q_SUPER(&top);
|
||||
status_ = super(&top);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return status_;
|
||||
}
|
||||
//${AOs::Philo::SM::eating} ..................................................
|
||||
QP::QState Philo::eating(Philo * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Philo, eating) {
|
||||
QP::QState status_;
|
||||
switch (e->sig) {
|
||||
//${AOs::Philo::SM::eating}
|
||||
case Q_ENTRY_SIG: {
|
||||
me->m_timeEvt.armX(eat_time(), 0U);
|
||||
status_ = Q_HANDLED();
|
||||
m_timeEvt.armX(eat_time(), 0U);
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::eating}
|
||||
case Q_EXIT_SIG: {
|
||||
TableEvt *pe = Q_NEW(TableEvt, DONE_SIG);
|
||||
pe->philoNum = PHILO_ID(me);
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
(void)me->m_timeEvt.disarm();
|
||||
status_ = Q_HANDLED();
|
||||
pe->philoNum = PHILO_ID(this);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
(void)m_timeEvt.disarm();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::eating::TIMEOUT}
|
||||
case TIMEOUT_SIG: {
|
||||
status_ = Q_TRAN(&thinking);
|
||||
status_ = tran(&thinking);
|
||||
break;
|
||||
}
|
||||
//${AOs::Philo::SM::eating::EAT, DONE}
|
||||
case EAT_SIG: // intentionally fall through
|
||||
case DONE_SIG: {
|
||||
/* EAT or DONE must be for other Philos than this one */
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));
|
||||
status_ = Q_HANDLED();
|
||||
// EAT or DONE must be for other Philos than this one
|
||||
Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this));
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
status_ = Q_SUPER(&top);
|
||||
status_ = super(&top);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -244,4 +245,4 @@ QP::QState Philo::eating(Philo * const me, QP::QEvt const * const e) {
|
||||
}
|
||||
|
||||
} // namespace DPP
|
||||
//$enddef${AOs::Philo} #######################################################
|
||||
//$enddef${AOs::Philo} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -236,7 +236,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -237,7 +237,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -241,7 +241,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QXK kernel, GNU-ARM + RTTI
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -241,7 +241,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS) -lsupc++
|
||||
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
//$file${.::table.cpp} #######################################################
|
||||
//$file${.::table.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: dpp.qm
|
||||
// File: ${.::table.cpp}
|
||||
//
|
||||
// This code has been generated by QM 4.3.1 (https://www.state-machine.com/qm).
|
||||
// This code has been generated by QM 4.5.0 (https://www.state-machine.com/qm).
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//
|
||||
// This program is open source software: you can redistribute it and/or
|
||||
@ -15,7 +15,7 @@
|
||||
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
// for more details.
|
||||
//
|
||||
//$endhead${.::table.cpp} ####################################################
|
||||
//$endhead${.::table.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#include "qpcpp.h"
|
||||
#include "dpp.h"
|
||||
#include "bsp.h"
|
||||
@ -23,7 +23,7 @@
|
||||
Q_DEFINE_THIS_FILE
|
||||
|
||||
// Active object class -------------------------------------------------------
|
||||
//$declare${AOs::Table} ######################################################
|
||||
//$declare${AOs::Table} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
//${AOs::Table} ..............................................................
|
||||
@ -36,14 +36,14 @@ public:
|
||||
Table();
|
||||
|
||||
protected:
|
||||
static QP::QState initial(Table * const me, QP::QEvt const * const e);
|
||||
static QP::QState active(Table * const me, QP::QEvt const * const e);
|
||||
static QP::QState serving(Table * const me, QP::QEvt const * const e);
|
||||
static QP::QState paused(Table * const me, QP::QEvt const * const e);
|
||||
Q_STATE_DECL(initial);
|
||||
Q_STATE_DECL(active);
|
||||
Q_STATE_DECL(serving);
|
||||
Q_STATE_DECL(paused);
|
||||
};
|
||||
|
||||
} // namespace DPP
|
||||
//$enddecl${AOs::Table} ######################################################
|
||||
//$enddecl${AOs::Table} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
namespace DPP {
|
||||
|
||||
@ -73,12 +73,13 @@ QP::QActive * const AO_Table = &l_table; // "opaque" AO pointer
|
||||
} // namespace DPP
|
||||
|
||||
//............................................................................
|
||||
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
// Check for the minimum required QP version
|
||||
#if (QP_VERSION < 630U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||
#error qpcpp version 6.3.0 or higher required
|
||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||
#error qpcpp version 6.5.0 or higher required
|
||||
#endif
|
||||
|
||||
//$define${AOs::Table} #######################################################
|
||||
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//$define${AOs::Table} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
namespace DPP {
|
||||
|
||||
//${AOs::Table} ..............................................................
|
||||
@ -93,18 +94,18 @@ Table::Table()
|
||||
}
|
||||
|
||||
//${AOs::Table::SM} ..........................................................
|
||||
QP::QState Table::initial(Table * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Table, initial) {
|
||||
//${AOs::Table::SM::initial}
|
||||
(void)e; // suppress the compiler warning about unused parameter
|
||||
|
||||
me->subscribe(DONE_SIG);
|
||||
me->subscribe(PAUSE_SIG);
|
||||
me->subscribe(SERVE_SIG);
|
||||
me->subscribe(TEST_SIG);
|
||||
subscribe(DONE_SIG);
|
||||
subscribe(PAUSE_SIG);
|
||||
subscribe(SERVE_SIG);
|
||||
subscribe(TEST_SIG);
|
||||
|
||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||
me->m_fork[n] = FREE;
|
||||
me->m_isHungry[n] = false;
|
||||
m_fork[n] = FREE;
|
||||
m_isHungry[n] = false;
|
||||
BSP::displayPhilStat(n, THINKING);
|
||||
}
|
||||
|
||||
@ -116,81 +117,81 @@ QP::QState Table::initial(Table * const me, QP::QEvt const * const e) {
|
||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
||||
|
||||
// signals just for this AO...
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, me);
|
||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||
|
||||
QS_FUN_DICTIONARY(&active);
|
||||
QS_FUN_DICTIONARY(&serving);
|
||||
QS_FUN_DICTIONARY(&paused);
|
||||
|
||||
return Q_TRAN(&serving);
|
||||
return tran(&serving);
|
||||
}
|
||||
//${AOs::Table::SM::active} ..................................................
|
||||
QP::QState Table::active(Table * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Table, active) {
|
||||
QP::QState status_;
|
||||
switch (e->sig) {
|
||||
//${AOs::Table::SM::active::TEST}
|
||||
case TEST_SIG: {
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::EAT}
|
||||
case EAT_SIG: {
|
||||
Q_ERROR();
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
status_ = Q_SUPER(&top);
|
||||
status_ = super(&top);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return status_;
|
||||
}
|
||||
//${AOs::Table::SM::active::serving} .........................................
|
||||
QP::QState Table::serving(Table * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Table, serving) {
|
||||
QP::QState status_;
|
||||
switch (e->sig) {
|
||||
//${AOs::Table::SM::active::serving}
|
||||
case Q_ENTRY_SIG: {
|
||||
for (uint8_t n = 0U; n < N_PHILO; ++n) { // give permissions to eat...
|
||||
if (me->m_isHungry[n]
|
||||
&& (me->m_fork[LEFT(n)] == FREE)
|
||||
&& (me->m_fork[n] == FREE))
|
||||
if (m_isHungry[n]
|
||||
&& (m_fork[LEFT(n)] == FREE)
|
||||
&& (m_fork[n] == FREE))
|
||||
{
|
||||
me->m_fork[LEFT(n)] = USED;
|
||||
me->m_fork[n] = USED;
|
||||
m_fork[LEFT(n)] = USED;
|
||||
m_fork[n] = USED;
|
||||
TableEvt *te = Q_NEW(TableEvt, EAT_SIG);
|
||||
te->philoNum = n;
|
||||
QP::QF::PUBLISH(te, me);
|
||||
me->m_isHungry[n] = false;
|
||||
QP::QF::PUBLISH(te, this);
|
||||
m_isHungry[n] = false;
|
||||
BSP::displayPhilStat(n, EATING);
|
||||
}
|
||||
}
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::serving::HUNGRY}
|
||||
case HUNGRY_SIG: {
|
||||
uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// phil ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
|
||||
BSP::displayPhilStat(n, HUNGRY);
|
||||
uint8_t m = LEFT(n);
|
||||
//${AOs::Table::SM::active::serving::HUNGRY::[bothfree]}
|
||||
if ((me->m_fork[m] == FREE) && (me->m_fork[n] == FREE)) {
|
||||
me->m_fork[m] = USED;
|
||||
me->m_fork[n] = USED;
|
||||
if ((m_fork[m] == FREE) && (m_fork[n] == FREE)) {
|
||||
m_fork[m] = USED;
|
||||
m_fork[n] = USED;
|
||||
TableEvt *pe = Q_NEW(TableEvt, EAT_SIG);
|
||||
pe->philoNum = n;
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
BSP::displayPhilStat(n, EATING);
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
}
|
||||
//${AOs::Table::SM::active::serving::HUNGRY::[else]}
|
||||
else {
|
||||
me->m_isHungry[n] = true;
|
||||
status_ = Q_HANDLED();
|
||||
m_isHungry[n] = true;
|
||||
status_ = Q_RET_HANDLED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -198,107 +199,107 @@ QP::QState Table::serving(Table * const me, QP::QEvt const * const e) {
|
||||
case DONE_SIG: {
|
||||
uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// phil ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
|
||||
BSP::displayPhilStat(n, THINKING);
|
||||
uint8_t m = LEFT(n);
|
||||
// both forks of Phil[n] must be used
|
||||
Q_ASSERT((me->m_fork[n] == USED) && (me->m_fork[m] == USED));
|
||||
Q_ASSERT((m_fork[n] == USED) && (m_fork[m] == USED));
|
||||
|
||||
me->m_fork[m] = FREE;
|
||||
me->m_fork[n] = FREE;
|
||||
m_fork[m] = FREE;
|
||||
m_fork[n] = FREE;
|
||||
m = RIGHT(n); // check the right neighbor
|
||||
|
||||
if (me->m_isHungry[m] && (me->m_fork[m] == FREE)) {
|
||||
me->m_fork[n] = USED;
|
||||
me->m_fork[m] = USED;
|
||||
me->m_isHungry[m] = false;
|
||||
if (m_isHungry[m] && (m_fork[m] == FREE)) {
|
||||
m_fork[n] = USED;
|
||||
m_fork[m] = USED;
|
||||
m_isHungry[m] = false;
|
||||
TableEvt *pe = Q_NEW(TableEvt, EAT_SIG);
|
||||
pe->philoNum = m;
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
BSP::displayPhilStat(m, EATING);
|
||||
}
|
||||
m = LEFT(n); // check the left neighbor
|
||||
n = LEFT(m); // left fork of the left neighbor
|
||||
if (me->m_isHungry[m] && (me->m_fork[n] == FREE)) {
|
||||
me->m_fork[m] = USED;
|
||||
me->m_fork[n] = USED;
|
||||
me->m_isHungry[m] = false;
|
||||
if (m_isHungry[m] && (m_fork[n] == FREE)) {
|
||||
m_fork[m] = USED;
|
||||
m_fork[n] = USED;
|
||||
m_isHungry[m] = false;
|
||||
TableEvt *pe = Q_NEW(TableEvt, EAT_SIG);
|
||||
pe->philoNum = m;
|
||||
QP::QF::PUBLISH(pe, me);
|
||||
QP::QF::PUBLISH(pe, this);
|
||||
BSP::displayPhilStat(m, EATING);
|
||||
}
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::serving::EAT}
|
||||
case EAT_SIG: {
|
||||
Q_ERROR();
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::serving::PAUSE}
|
||||
case PAUSE_SIG: {
|
||||
status_ = Q_TRAN(&paused);
|
||||
status_ = tran(&paused);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
status_ = Q_SUPER(&active);
|
||||
status_ = super(&active);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return status_;
|
||||
}
|
||||
//${AOs::Table::SM::active::paused} ..........................................
|
||||
QP::QState Table::paused(Table * const me, QP::QEvt const * const e) {
|
||||
Q_STATE_DEF(Table, paused) {
|
||||
QP::QState status_;
|
||||
switch (e->sig) {
|
||||
//${AOs::Table::SM::active::paused}
|
||||
case Q_ENTRY_SIG: {
|
||||
BSP::displayPaused(1U);
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::paused}
|
||||
case Q_EXIT_SIG: {
|
||||
BSP::displayPaused(0U);
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::paused::SERVE}
|
||||
case SERVE_SIG: {
|
||||
status_ = Q_TRAN(&serving);
|
||||
status_ = tran(&serving);
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::paused::HUNGRY}
|
||||
case HUNGRY_SIG: {
|
||||
uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// philo ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
me->m_isHungry[n] = true;
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
m_isHungry[n] = true;
|
||||
BSP::displayPhilStat(n, HUNGRY);
|
||||
status_ = Q_HANDLED();
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
//${AOs::Table::SM::active::paused::DONE}
|
||||
case DONE_SIG: {
|
||||
uint8_t n = Q_EVT_CAST(TableEvt)->philoNum;
|
||||
// phil ID must be in range and he must be not hungry
|
||||
Q_ASSERT((n < N_PHILO) && (!me->m_isHungry[n]));
|
||||
Q_ASSERT((n < N_PHILO) && (!m_isHungry[n]));
|
||||
|
||||
BSP::displayPhilStat(n, THINKING);
|
||||
uint8_t m = LEFT(n);
|
||||
/* both forks of Phil[n] must be used */
|
||||
Q_ASSERT((me->m_fork[n] == USED) && (me->m_fork[m] == USED));
|
||||
Q_ASSERT((m_fork[n] == USED) && (m_fork[m] == USED));
|
||||
|
||||
me->m_fork[m] = FREE;
|
||||
me->m_fork[n] = FREE;
|
||||
status_ = Q_HANDLED();
|
||||
m_fork[m] = FREE;
|
||||
m_fork[n] = FREE;
|
||||
status_ = Q_RET_HANDLED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
status_ = Q_SUPER(&active);
|
||||
status_ = super(&active);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -306,4 +307,4 @@ QP::QState Table::paused(Table * const me, QP::QEvt const * const e) {
|
||||
}
|
||||
|
||||
} // namespace DPP
|
||||
//$enddef${AOs::Table} #######################################################
|
||||
//$enddef${AOs::Table} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -236,7 +236,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on mbed-LPC1768, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on mbed-LPC1768, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on NUCLEO-H743ZI, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -246,7 +246,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F746G-Discovery, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -246,7 +246,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on NUCLEO-H743ZI, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -250,7 +250,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32 NUCLEO-L053R8, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32 NUCLEO-L053R8, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on NUCLEO-L053R8, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -236,7 +236,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32 NUCLEO-L152RE, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32 NUCLEO-L152RE, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F4-Discovery, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -237,7 +237,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F4-Discovery, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -237,7 +237,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F4-Discovery, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -241,7 +241,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F746G-Discovery, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -245,7 +245,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for DPP on STM32F746G-Discovery, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -245,7 +245,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F746G-Discovery, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -250,7 +250,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -246,7 +246,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EMF32-SLSTK3401A, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -246,7 +246,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-23
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2010 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-23
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -232,7 +232,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, QXK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-23
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -235,7 +235,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, FreeRTOS kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -242,7 +242,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on NUCLEO-H743ZI, FreeRTOS, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -255,7 +255,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on STM32F746G-Discovery, FreeRTOS, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -255,7 +255,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on NUCLEO-H743ZI, FreeRTOS, GNU-ARM
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-03-22
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -255,7 +255,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++, lwIP on EK-LM3S6965, QK kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -239,7 +239,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++, lwIP on EK-LM3S6965, QV kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -239,7 +239,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for EMF32, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -218,7 +218,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on TM4C123, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -216,7 +216,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for EMF32, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -220,7 +220,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for TM4C123, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -218,7 +218,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for TM4C123, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -215,7 +215,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for TM4C123, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -215,7 +215,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for TM4C123, QUTEST, GNU-ARM
|
||||
# Last Updated for Version: 6.4.0
|
||||
# Date of the Last Update: 2019-02-24
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
@ -215,7 +215,7 @@ CPPFLAGS = -c -g $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb -Wall \
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
ASM_OBJS := $(patsubst %.s,%.o, $(notdir $(ASM_SRCS)))
|
||||
|
@ -1,13 +1,13 @@
|
||||
##############################################################################
|
||||
# Product: Makefile for QP/C++ on EK-TM4C123GXL, uC/OS-II kernel, GNU-ARM
|
||||
# Last Updated for Version: 6.3.8
|
||||
# Date of the Last Update: 2018-12-26
|
||||
# Last Updated for Version: 6.5.0
|
||||
# Date of the Last Update: 2019-04-15
|
||||
#
|
||||
# Q u a n t u m L e a P s
|
||||
# ------------------------
|
||||
# Modern Embedded Software
|
||||
#
|
||||
# Copyright (C) 2005-2018 Quantum Leaps, LLC. All rights reserved.
|
||||
# Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
|
||||
#
|
||||
# This program is open source software: you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as published
|
||||
@ -247,7 +247,7 @@ endif # ......................................................................
|
||||
|
||||
|
||||
LINKFLAGS = -T$(LD_SCRIPT) $(ARM_CPU) $(ARM_FPU) $(FLOAT_ABI) -mthumb \
|
||||
-specs=nosys.specs \
|
||||
-specs=nosys.specs -specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(OUTPUT).map,--cref,--gc-sections $(LIB_DIRS)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user