ARM Cortex-M ports: moved ARM_ERRATUM_838869 to be unconditional in ISR exit
This commit is contained in:
MMS 2021-01-31 18:46:29 -05:00
parent 03311175c7
commit 2ad0fa37f6
35 changed files with 166 additions and 118 deletions

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EFM32-SLSTK3401A board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -148,6 +148,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = DPP::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EFM32-SLSTK3401A board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -118,12 +118,14 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void GPIO_EVEN_IRQHandler(void); // prototype
void GPIO_EVEN_IRQHandler(void) {
// for testing...
AO_Table->POST(Q_NEW(QP::QEvt, MAX_PUB_SIG), &l_GPIO_EVEN_IRQHandler);
QV_ARM_ERRATUM_838869();
}
//............................................................................
@ -139,6 +141,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = DPP::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EFM32-SLSTK3401A board, preemptive QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -155,6 +155,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = DPP::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QXK_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EK-TM4C123GXL board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -151,6 +151,7 @@ void UART0_IRQHandler(void) {
uint8_t b = static_cast<uint8_t>(UART0->DR);
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#else
void UART0_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EK-TM4C123GXL board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -151,6 +151,7 @@ void UART0_IRQHandler(void) {
uint8_t b = static_cast<uint8_t>(UART0->DR);
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#else
void UART0_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EK-TM4C123GXL board, cooperative QV kernel
// Last updated for version 6.9.2
// Last updated on 2020-12-14
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -118,6 +118,7 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void GPIOPortA_IRQHandler(void); // prototype
@ -125,6 +126,7 @@ void GPIOPortA_IRQHandler(void) {
// for testing..
DPP::AO_Table->POST(Q_NEW(QP::QEvt, DPP::MAX_PUB_SIG),
&l_GPIOPortA_IRQHandler);
QV_ARM_ERRATUM_838869();
}
//............................................................................
@ -143,6 +145,7 @@ void UART0_IRQHandler(void) {
uint8_t b = static_cast<uint8_t>(UART0->DR);
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#else
void UART0_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EK-TM4C123GXL board, preemptive QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -153,6 +153,7 @@ void UART0_IRQHandler(void) {
uint8_t b = static_cast<uint8_t>(UART0->DR);
QP::QS::rxPut(b);
}
QXK_ARM_ERRATUM_838869();
}
#else
void UART0_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, NXP mbed-LPC1768 board, coopearative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -117,6 +117,7 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void EINT0_IRQHandler(void); // prototype
@ -124,6 +125,7 @@ void EINT0_IRQHandler(void) {
// for testing..
DPP::AO_Table->POST(Q_NEW(QP::QEvt, DPP::MAX_PUB_SIG),
&l_EINT0_IRQHandler);
QV_ARM_ERRATUM_838869();
}
} // extern "C"

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, NUCLEO-H743ZI board, premptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -131,6 +131,7 @@ void USART3_IRQHandler(void) {
QP::QS::rxPut(b);
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; // clear interrupt
}
QK_ARM_ERRATUM_838869();
}
#endif // Q_SPY

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, NUCLEO-H743ZI board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -109,6 +109,7 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
@ -125,6 +126,7 @@ void USART3_IRQHandler(void) {
QP::QS::rxPut(b);
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; // clear interrupt
}
QV_ARM_ERRATUM_838869();
}
#endif // Q_SPY

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, NUCLEO-H743ZI board, dual-mode QXK kernel
// Last Updated for Version: 6.9.1
// Date of the Last Update: 2020-09-21
// Last Updated for Version: 6.9.2a
// Date of the Last Update: 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps, LLC. All rights reserved.
// Copyright (C) 2005-2021 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
@ -131,6 +131,7 @@ void USART3_IRQHandler(void) {
QP::QS::rxPut(b);
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; // clear interrupt
}
QXK_ARM_ERRATUM_838869();
}
#endif // Q_SPY

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32 NUCLEO-L053R8 board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -136,6 +136,7 @@ void USART2_IRQHandler(void) { // used in QS-RX (kernel UNAWARE interrutp)
uint32_t b = USART2->RDR;
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#endif

View File

@ -1,7 +1,7 @@
///***************************************************************************
// Product: DPP example, STM32 NUCLEO-L053R8 board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
@ -111,6 +111,7 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void EXTI0_1_IRQHandler(void); // prototype
@ -118,6 +119,7 @@ void EXTI0_1_IRQHandler(void) {
// for testing..
DPP::AO_Table->POST(Q_NEW(QP::QEvt, DPP::MAX_PUB_SIG),
&l_EXTI0_1_IRQHandler);
QV_ARM_ERRATUM_838869();
}
//............................................................................
#ifdef Q_SPY
@ -128,6 +130,7 @@ void USART2_IRQHandler(void) { // used in QS-RX (kernel UNAWARE interrutp)
uint32_t b = USART2->RDR;
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#endif

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32 NUCLEO-L053R8 board, preemptive QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -140,6 +140,7 @@ void USART2_IRQHandler(void) { // used in QS-RX (kernel UNAWARE interrupt)
uint32_t b = USART2->RDR;
QP::QS::rxPut(b);
}
QXK_ARM_ERRATUM_838869();
}
#endif

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32 NUCLEO-L152RE board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-30
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -134,6 +134,7 @@ void USART2_IRQHandler(void) { // kernel UNAWARE interrupt
uint32_t b = USART2->DR;
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#endif

View File

@ -1,7 +1,7 @@
///***************************************************************************
// Product: DPP example, STM32 NUCLEO-L152RE board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
@ -110,6 +110,7 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void EXTI0_IRQHandler(void); // prototype
@ -117,6 +118,7 @@ void EXTI0_IRQHandler(void) {
// for testing..
DPP::AO_Table->POST(Q_NEW(QP::QEvt, DPP::MAX_PUB_SIG),
&l_EXTI0_IRQHandler);
QV_ARM_ERRATUM_838869();
}
//............................................................................
#if Q_SPY
@ -126,6 +128,7 @@ void USART2_IRQHandler(void) { // kernel UNAWARE interrupt
uint32_t b = USART2->DR;
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#endif

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32 NUCLEO-L152RE board, preemptive QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -136,6 +136,7 @@ void USART2_IRQHandler(void) { // kernel UNAWARE interrupt
uint32_t b = USART2->DR;
QP::QS::rxPut(b);
}
QXK_ARM_ERRATUM_838869();
}
#endif

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32F4-Discovery board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -139,6 +139,7 @@ void USART2_IRQHandler(void) {
uint32_t b = USART2->DR;
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#else
void USART2_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32F4-Discovery board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -120,6 +120,7 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
@ -135,6 +136,7 @@ void USART2_IRQHandler(void) {
uint32_t b = USART2->DR;
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#else
void USART2_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32F4-Discovery board, dual-mode QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -139,6 +139,7 @@ void USART2_IRQHandler(void) {
uint32_t b = USART2->DR;
QP::QS::rxPut(b);
}
QXK_ARM_ERRATUM_838869();
}
#else
void USART2_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32746G-Discovery board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -135,8 +135,9 @@ void USART1_IRQHandler(void) {
if ((DPP::l_uartHandle.Instance->ISR & USART_ISR_RXNE) != 0) {
uint32_t b = DPP::l_uartHandle.Instance->RDR;
QP::QS::rxPut(b);
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; /* clear interrupt */
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; /* clear int. */
}
QK_ARM_ERRATUM_838869();
}
#endif // Q_SPY

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32746G-Discovery board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -108,12 +108,14 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
//void GPIO_EVEN_IRQHandler(void); // prototype
//void GPIO_EVEN_IRQHandler(void) {
// // for testing...
// AO_Table->POST(Q_NEW(QP::QEvt, MAX_PUB_SIG), &l_GPIO_EVEN_IRQHandler);
// QV_ARM_ERRATUM_838869();
//}
//............................................................................
@ -128,8 +130,9 @@ void USART1_IRQHandler(void) {
if ((DPP::l_uartHandle.Instance->ISR & USART_ISR_RXNE) != 0) {
uint32_t b = DPP::l_uartHandle.Instance->RDR;
QP::QS::rxPut(b);
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; /* clear interrupt */
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; /* clear int. */
}
QV_ARM_ERRATUM_838869();
}
#endif // Q_SPY

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, STM32746G-Discovery board, dual-mode QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -135,8 +135,9 @@ void USART1_IRQHandler(void) {
if ((DPP::l_uartHandle.Instance->ISR & USART_ISR_RXNE) != 0) {
uint32_t b = DPP::l_uartHandle.Instance->RDR;
QP::QS::rxPut(b);
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; /* clear interrupt */
DPP::l_uartHandle.Instance->ISR &= ~USART_ISR_RXNE; /* clear int. */
}
QXK_ARM_ERRATUM_838869();
}
#endif // Q_SPY

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: "Fly 'n' Shoot" game example, EFM32-SLSTK3401A board, QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -157,6 +157,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = GAME::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: "Fly 'n' Shoot" game example, EFM32-SLSTK3401A board, QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -127,12 +127,14 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&trigEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void GPIO_EVEN_IRQHandler(void); // prototype
void GPIO_EVEN_IRQHandler(void) {
// for testing...
AO_Tunnel->POST(Q_NEW(QP::QEvt, MAX_PUB_SIG), &l_GPIO_EVEN_IRQHandler);
QV_ARM_ERRATUM_838869();
}
//............................................................................
@ -149,6 +151,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = GAME::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
//****************************************************************************
// Product: "Low-Power" example, cooperative QV kernel
// Last Updated for Version: 6.4.0
// Date of the Last Update: 2019-02-25
// Last Updated for Version: 6.9.2a
// Date of the Last Update: 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2019 Quantum Leaps, LLC. All rights reserved.
// Copyright (C) 2005-2021 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
@ -74,11 +74,13 @@ enum {
// ISRs used in this project =================================================
void SysTick_Handler(void) {
QP::QF::TICK_X(0U, nullptr); // process time events for rate 0
QV_ARM_ERRATUM_838869();
}
//............................................................................
void Timer0A_IRQHandler(void) {
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
QP::QF::TICK_X(1U, nullptr); // process time events for rate 1
QV_ARM_ERRATUM_838869();
}
//............................................................................
void GPIOPortF_IRQHandler(void) {
@ -87,6 +89,7 @@ void GPIOPortF_IRQHandler(void) {
QP::QF::PUBLISH(&pressedEvt, &l_SysTick_Handler);
}
GPIOF->ICR = 0xFFU; // clear interrupt sources
QV_ARM_ERRATUM_838869();
}
// BSP functions =============================================================

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EFM32-SLSTK3401A board, preemptive QK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -147,6 +147,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = DPP::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QK_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EFM32-SLSTK3401A board, cooperative QV kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -117,12 +117,14 @@ void SysTick_Handler(void) {
QP::QF::PUBLISH(&serveEvt, &l_SysTick_Handler);
}
}
QV_ARM_ERRATUM_838869();
}
//............................................................................
void GPIO_EVEN_IRQHandler(void); // prototype
void GPIO_EVEN_IRQHandler(void) {
// for testing...
AO_Table->POST(Q_NEW(QP::QEvt, MAX_PUB_SIG), &l_GPIO_EVEN_IRQHandler);
QV_ARM_ERRATUM_838869();
}
//............................................................................
@ -138,6 +140,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = DPP::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QV_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -1,13 +1,13 @@
///***************************************************************************
// Product: DPP example, EFM32-SLSTK3401A board, preemptive QXK kernel
// Last updated for version 6.9.1
// Last updated on 2020-09-21
// Last updated for version 6.9.2a
// Last updated on 2021-01-31
//
// Q u a n t u m L e a P s
// ------------------------
// Modern Embedded Software
//
// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -159,6 +159,7 @@ void USART0_RX_IRQHandler(void) {
uint32_t b = DPP::l_USART0->RXDATA;
QP::QS::rxPut(b);
}
QXK_ARM_ERRATUM_838869();
}
#else
void USART0_RX_IRQHandler(void) {}

View File

@ -2,14 +2,14 @@
/// @brief QK/C++ port to ARM Cortex-M, preemptive QK kernel, ARM-CLANG toolset
/// @cond
///***************************************************************************
/// Last updated for version 6.9.1
/// Last updated on 2020-09-23
/// Last updated for version 6.9.2a
/// Last updated on 2021-01-31
///
/// Q u a n t u m L e a P s
/// ------------------------
/// Modern Embedded Software
///
/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
/// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -55,9 +55,9 @@ static inline uint32_t QK_get_IPSR(void) {
QF_INT_DISABLE(); \
if (QK_sched_() != 0U) { \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
QK_ARM_ERRATUM_838869(); \
} \
QF_INT_ENABLE(); \
QK_ARM_ERRATUM_838869(); \
} while (false)
#if (__ARM_ARCH == 6) // Cortex-M0/M0+/M1 (v6-M, v6S-M)?

View File

@ -2,14 +2,14 @@
/// @brief QK/C++ port to ARM Cortex-M, preemptive QK kernel, GNU-ARM toolset
/// @cond
///***************************************************************************
/// Last updated for version 6.9.1
/// Last updated on 2020-09-23
/// Last updated for version 6.9.2a
/// Last updated on 2021-01-31
///
/// Q u a n t u m L e a P s
/// ------------------------
/// Modern Embedded Software
///
/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
/// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -55,9 +55,9 @@ static inline uint32_t QK_get_IPSR(void) {
QF_INT_DISABLE(); \
if (QK_sched_() != 0U) { \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
QK_ARM_ERRATUM_838869(); \
} \
QF_INT_ENABLE(); \
QK_ARM_ERRATUM_838869(); \
} while (false)
#if (__ARM_ARCH == 6) // Cortex-M0/M0+/M1 (v6-M, v6S-M)?

View File

@ -2,14 +2,14 @@
/// @brief QK/C++ port to ARM Cortex-M, preemptive QK kernel, IAR-ARM toolset
/// @cond
///***************************************************************************
/// Last updated for version 6.9.1
/// Last updated on 2020-09-23
/// Last updated for version 6.9.2a
/// Last updated on 2021-01-31
///
/// Q u a n t u m L e a P s
/// ------------------------
/// Modern Embedded Software
///
/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
/// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -48,9 +48,9 @@
QF_INT_DISABLE(); \
if (QK_sched_() != 0U) { \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
QK_ARM_ERRATUM_838869(); \
} \
QF_INT_ENABLE(); \
QK_ARM_ERRATUM_838869(); \
} while (false)
#if (__ARM_ARCH == 6) // Cortex-M0/M0+/M1 (v6-M, v6S-M)?

View File

@ -2,14 +2,14 @@
/// @brief QXK/C++ port to ARM Cortex-M, ARM-CLANG toolset
/// @cond
///***************************************************************************
/// Last updated for version 6.9.1
/// Last updated on 2020-09-28
/// Last updated for version 6.9.2a
/// Last updated on 2021-01-31
///
/// Q u a n t u m L e a P s
/// ------------------------
/// Modern Embedded Software
///
/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
/// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -49,9 +49,8 @@ static inline uint32_t QXK_get_IPSR(void) {
}
// trigger the PendSV exception to pefrom the context switch
#define QXK_CONTEXT_SWITCH_() \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
QXK_ARM_ERRATUM_838869()
#define QXK_CONTEXT_SWITCH_() \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U)
// QXK ISR entry and exit
#define QXK_ISR_ENTRY() ((void)0)
@ -62,6 +61,7 @@ static inline uint32_t QXK_get_IPSR(void) {
QXK_CONTEXT_SWITCH_(); \
} \
QF_INT_ENABLE(); \
QXK_ARM_ERRATUM_838869(); \
} while (false)
#if (__ARM_ARCH == 6) // Cortex-M0/M0+/M1 (v6-M, v6S-M)?

View File

@ -2,14 +2,14 @@
/// @brief QXK/C++ port to ARM Cortex-M, GNU-ARM toolset
/// @cond
///***************************************************************************
/// Last updated for version 6.9.1
/// Last updated on 2020-09-28
/// Last updated for version 6.9.2a
/// Last updated on 2021-01-31
///
/// Q u a n t u m L e a P s
/// ------------------------
/// Modern Embedded Software
///
/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
/// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -49,9 +49,8 @@ static inline uint32_t QXK_get_IPSR(void) {
}
// trigger the PendSV exception to pefrom the context switch
#define QXK_CONTEXT_SWITCH_() \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
QXK_ARM_ERRATUM_838869()
#define QXK_CONTEXT_SWITCH_() \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U)
// QXK ISR entry and exit
#define QXK_ISR_ENTRY() ((void)0)
@ -62,6 +61,7 @@ static inline uint32_t QXK_get_IPSR(void) {
QXK_CONTEXT_SWITCH_(); \
} \
QF_INT_ENABLE(); \
QXK_ARM_ERRATUM_838869(); \
} while (false)
#if (__ARM_ARCH == 6) // Cortex-M0/M0+/M1 (v6-M, v6S-M)?

View File

@ -2,14 +2,14 @@
/// @brief QXK/C++ port to ARM Cortex-M, QXK kernel, IAR-ARM toolset
/// @cond
///***************************************************************************
/// Last updated for version 6.9.1
/// Last updated on 2020-09-28
/// Last updated for version 6.9.2a
/// Last updated on 2021-01-31
///
/// Q u a n t u m L e a P s
/// ------------------------
/// Modern Embedded Software
///
/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved.
/// Copyright (C) 2005-2021 Quantum Leaps. 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
@ -42,9 +42,8 @@
#define QXK_ISR_CONTEXT_() (__get_IPSR() != 0U)
// trigger the PendSV exception to pefrom the context switch
#define QXK_CONTEXT_SWITCH_() \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
QXK_ARM_ERRATUM_838869()
#define QXK_CONTEXT_SWITCH_() \
*Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U)
// QXK ISR entry and exit
#define QXK_ISR_ENTRY() ((void)0)
@ -55,6 +54,7 @@
QXK_CONTEXT_SWITCH_(); \
} \
QF_INT_ENABLE(); \
QXK_ARM_ERRATUM_838869(); \
} while (false)
#if (__ARM_ARCH == 6) // Cortex-M0/M0+/M1 (v6-M, v6S-M)?