diff --git a/doc/hal/Doxyfile_chm b/doc/hal/Doxyfile_chm
index c210bc1a7..7b0732fe8 100644
--- a/doc/hal/Doxyfile_chm
+++ b/doc/hal/Doxyfile_chm
@@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/HAL
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 3.0.0p2
+PROJECT_NUMBER = 3.0.0p3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/hal/Doxyfile_html b/doc/hal/Doxyfile_html
index 380704433..dee7d16d0 100644
--- a/doc/hal/Doxyfile_html
+++ b/doc/hal/Doxyfile_html
@@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/HAL
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 3.0.0p2
+PROJECT_NUMBER = 3.0.0p3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/nil/Doxyfile_chm b/doc/nil/Doxyfile_chm
index 009952375..9662a5ce7 100644
--- a/doc/nil/Doxyfile_chm
+++ b/doc/nil/Doxyfile_chm
@@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/NIL
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.0.0p2
+PROJECT_NUMBER = 1.0.0p3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/nil/Doxyfile_html b/doc/nil/Doxyfile_html
index 898212951..9f51b686b 100644
--- a/doc/nil/Doxyfile_html
+++ b/doc/nil/Doxyfile_html
@@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/NIL
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.0.0p2
+PROJECT_NUMBER = 1.0.0p3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/rt/Doxyfile_chm b/doc/rt/Doxyfile_chm
index 0398ccb38..12084c837 100644
--- a/doc/rt/Doxyfile_chm
+++ b/doc/rt/Doxyfile_chm
@@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/RT
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 3.0.0p2
+PROJECT_NUMBER = 3.0.0p3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/rt/Doxyfile_html b/doc/rt/Doxyfile_html
index 617075282..54a04224b 100644
--- a/doc/rt/Doxyfile_html
+++ b/doc/rt/Doxyfile_html
@@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/RT
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 3.0.0p2
+PROJECT_NUMBER = 3.0.0p3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/doc/rt/reports/STM32F407-168-GCC-FPU.txt b/doc/rt/reports/STM32F407-168-GCC-FPU.txt
index e1b872fe2..03b3ee842 100644
--- a/doc/rt/reports/STM32F407-168-GCC-FPU.txt
+++ b/doc/rt/reports/STM32F407-168-GCC-FPU.txt
@@ -1,14 +1,9 @@
-***************************************************************************
-Options: -O2 -fomit-frame-pointer -falign-functions=16
-Settings: SYSCLK=168, ACR=0x705 (5 wait states)
-***************************************************************************
-
*** ChibiOS/RT test suite
***
-*** Kernel: 3.0.0dev
-*** Compiled: Dec 11 2014 - 16:29:11
-*** Compiler: GCC 4.7.3 20130312 (release) [ARM/embedded-4_7-branch revision 196615]
+*** Kernel: 3.0.0
+*** Compiled: Apr 13 2015 - 10:56:19
+*** Compiler: GCC 4.7.4 20140401 (release) [ARM/embedded-4_7-branch revision 209195]
*** Architecture: ARMv7-ME
*** Core Variant: Cortex-M4F
*** Port Info: Advanced kernel mode
@@ -16,133 +11,142 @@ Settings: SYSCLK=168, ACR=0x705 (5 wait states)
*** Test Board: STMicroelectronics STM32F4-Discovery
----------------------------------------------------------------------------
---- Test Case 1.1 (Threads, enqueuing test #1)
+--- Test Case 1.1 (System, critical zones)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 1.2 (Threads, enqueuing test #2)
+--- Test Case 1.2 (System, interrupts handling)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 1.3 (Threads, priority change)
+--- Test Case 1.3 (System, integrity)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 1.4 (Threads, delays)
+--- Test Case 2.1 (Threads, enqueuing test #1)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.1 (Semaphores, enqueuing)
+--- Test Case 2.2 (Threads, enqueuing test #2)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.2 (Semaphores, timeout)
+--- Test Case 2.3 (Threads, priority change)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.3 (Semaphores, atomic signal-wait)
+--- Test Case 2.4 (Threads, delays)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.4 (Binary Semaphores, functionality)
+--- Test Case 3.1 (Semaphores, enqueuing)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.1 (Mutexes, priority enqueuing test)
+--- Test Case 3.2 (Semaphores, timeout)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.2 (Mutexes, priority return)
+--- Test Case 3.3 (Semaphores, atomic signal-wait)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.3 (Mutexes, status)
+--- Test Case 3.4 (Binary Semaphores, functionality)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.4 (CondVar, signal test)
+--- Test Case 4.1 (Mutexes, priority enqueuing test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.5 (CondVar, broadcast test)
+--- Test Case 4.2 (Mutexes, priority return)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.6 (CondVar, boost test)
+--- Test Case 4.3 (Mutexes, status)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 4.1 (Messages, loop)
+--- Test Case 4.4 (CondVar, signal test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 5.1 (Mailboxes, queuing and timeouts)
+--- Test Case 4.5 (CondVar, broadcast test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 6.1 (Events, registration and dispatch)
+--- Test Case 4.6 (CondVar, boost test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 6.2 (Events, wait and broadcast)
+--- Test Case 5.1 (Messages, loop)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 6.3 (Events, timeouts)
+--- Test Case 6.1 (Mailboxes, queuing and timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 7.1 (Heap, allocation and fragmentation test)
+--- Test Case 7.1 (Events, registration and dispatch)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 8.1 (Memory Pools, queue/dequeue)
+--- Test Case 7.2 (Events, wait and broadcast)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 9.1 (Dynamic APIs, threads creation from heap)
+--- Test Case 7.3 (Events, timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
+--- Test Case 8.1 (Heap, allocation and fragmentation test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 9.3 (Dynamic APIs, registry and references)
+--- Test Case 9.1 (Memory Pools, queue/dequeue)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 10.1 (Queues, input queues)
+--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 10.2 (Queues, output queues)
+--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.1 (Benchmark, messages #1)
---- Score : 604310 msgs/S, 1208620 ctxswc/S
+--- Test Case 10.3 (Dynamic APIs, registry and references)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.2 (Benchmark, messages #2)
+--- Test Case 11.1 (Queues, input queues)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
+--- Test Case 11.2 (Queues, output queues)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
+--- Test Case 12.1 (Benchmark, messages #1)
+--- Score : 604311 msgs/S, 1208622 ctxswc/S
+--- Result: SUCCESS
+----------------------------------------------------------------------------
+--- Test Case 12.2 (Benchmark, messages #2)
--- Score : 513757 msgs/S, 1027514 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.3 (Benchmark, messages #3)
+--- Test Case 12.3 (Benchmark, messages #3)
--- Score : 513757 msgs/S, 1027514 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.4 (Benchmark, context switch)
+--- Test Case 12.4 (Benchmark, context switch)
--- Score : 1686320 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.5 (Benchmark, threads, full cycle)
---- Score : 394363 threads/S
+--- Test Case 12.5 (Benchmark, threads, full cycle)
+--- Score : 397159 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.6 (Benchmark, threads, create only)
---- Score : 543685 threads/S
+--- Test Case 12.6 (Benchmark, threads, create only)
+--- Score : 549015 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
+--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
--- Score : 166172 reschedules/S, 997032 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.8 (Benchmark, round robin context switching)
---- Score : 1197856 ctxswc/S
+--- Test Case 12.8 (Benchmark, round robin context switching)
+--- Score : 1197852 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.9 (Benchmark, I/O Queues throughput)
+--- Test Case 12.9 (Benchmark, I/O Queues throughput)
--- Score : 1873164 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.10 (Benchmark, virtual timers set/reset)
---- Score : 1322832 timers/S
+--- Test Case 12.10 (Benchmark, virtual timers set/reset)
+--- Score : 341352 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.11 (Benchmark, semaphores wait/signal)
---- Score : 3199988 wait+signal/S
+--- Test Case 12.11 (Benchmark, semaphores wait/signal)
+--- Score : 3199984 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.12 (Benchmark, mutexes lock/unlock)
---- Score : 1856348 lock+unlock/S
+--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
+--- Score : 1856344 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.13 (Benchmark, RAM footprint)
+--- Test Case 12.13 (Benchmark, RAM footprint)
--- System: 472 bytes
--- Thread: 68 bytes
--- Timer : 20 bytes
diff --git a/doc/rt/reports/STM32F407-168-GCC.txt b/doc/rt/reports/STM32F407-168-GCC.txt
index 7e38f9edc..e362ec0f4 100644
--- a/doc/rt/reports/STM32F407-168-GCC.txt
+++ b/doc/rt/reports/STM32F407-168-GCC.txt
@@ -1,12 +1,8 @@
-***************************************************************************
-Options: -O2 -fomit-frame-pointer -falign-functions=16
-Settings: SYSCLK=168, ACR=0x705 (5 wait states)
-***************************************************************************
*** ChibiOS/RT test suite
***
-*** Kernel: 3.0.0dev
-*** Compiled: Mar 23 2015 - 11:26:02
+*** Kernel: 3.0.0
+*** Compiled: Apr 13 2015 - 10:53:28
*** Compiler: GCC 4.7.4 20140401 (release) [ARM/embedded-4_7-branch revision 209195]
*** Architecture: ARMv7-ME
*** Core Variant: Cortex-M4
@@ -15,133 +11,142 @@ Settings: SYSCLK=168, ACR=0x705 (5 wait states)
*** Test Board: STMicroelectronics STM32F4-Discovery
----------------------------------------------------------------------------
---- Test Case 1.1 (Threads, enqueuing test #1)
+--- Test Case 1.1 (System, critical zones)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 1.2 (Threads, enqueuing test #2)
+--- Test Case 1.2 (System, interrupts handling)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 1.3 (Threads, priority change)
+--- Test Case 1.3 (System, integrity)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 1.4 (Threads, delays)
+--- Test Case 2.1 (Threads, enqueuing test #1)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.1 (Semaphores, enqueuing)
+--- Test Case 2.2 (Threads, enqueuing test #2)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.2 (Semaphores, timeout)
+--- Test Case 2.3 (Threads, priority change)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.3 (Semaphores, atomic signal-wait)
+--- Test Case 2.4 (Threads, delays)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 2.4 (Binary Semaphores, functionality)
+--- Test Case 3.1 (Semaphores, enqueuing)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.1 (Mutexes, priority enqueuing test)
+--- Test Case 3.2 (Semaphores, timeout)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.2 (Mutexes, priority return)
+--- Test Case 3.3 (Semaphores, atomic signal-wait)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.3 (Mutexes, status)
+--- Test Case 3.4 (Binary Semaphores, functionality)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.4 (CondVar, signal test)
+--- Test Case 4.1 (Mutexes, priority enqueuing test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.5 (CondVar, broadcast test)
+--- Test Case 4.2 (Mutexes, priority return)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 3.6 (CondVar, boost test)
+--- Test Case 4.3 (Mutexes, status)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 4.1 (Messages, loop)
+--- Test Case 4.4 (CondVar, signal test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 5.1 (Mailboxes, queuing and timeouts)
+--- Test Case 4.5 (CondVar, broadcast test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 6.1 (Events, registration and dispatch)
+--- Test Case 4.6 (CondVar, boost test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 6.2 (Events, wait and broadcast)
+--- Test Case 5.1 (Messages, loop)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 6.3 (Events, timeouts)
+--- Test Case 6.1 (Mailboxes, queuing and timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 7.1 (Heap, allocation and fragmentation test)
+--- Test Case 7.1 (Events, registration and dispatch)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 8.1 (Memory Pools, queue/dequeue)
+--- Test Case 7.2 (Events, wait and broadcast)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 9.1 (Dynamic APIs, threads creation from heap)
+--- Test Case 7.3 (Events, timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
+--- Test Case 8.1 (Heap, allocation and fragmentation test)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 9.3 (Dynamic APIs, registry and references)
+--- Test Case 9.1 (Memory Pools, queue/dequeue)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 10.1 (Queues, input queues)
+--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 10.2 (Queues, output queues)
+--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.1 (Benchmark, messages #1)
---- Score : 799994 msgs/S, 1599988 ctxswc/S
+--- Test Case 10.3 (Dynamic APIs, registry and references)
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.2 (Benchmark, messages #2)
+--- Test Case 11.1 (Queues, input queues)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
+--- Test Case 11.2 (Queues, output queues)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
+--- Test Case 12.1 (Benchmark, messages #1)
+--- Score : 799993 msgs/S, 1599986 ctxswc/S
+--- Result: SUCCESS
+----------------------------------------------------------------------------
+--- Test Case 12.2 (Benchmark, messages #2)
--- Score : 648644 msgs/S, 1297288 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.3 (Benchmark, messages #3)
+--- Test Case 12.3 (Benchmark, messages #3)
--- Score : 648644 msgs/S, 1297288 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.4 (Benchmark, context switch)
+--- Test Case 12.4 (Benchmark, context switch)
--- Score : 2559992 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.5 (Benchmark, threads, full cycle)
---- Score : 467963 threads/S
+--- Test Case 12.5 (Benchmark, threads, full cycle)
+--- Score : 471906 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.6 (Benchmark, threads, create only)
---- Score : 691353 threads/S
+--- Test Case 12.6 (Benchmark, threads, create only)
+--- Score : 699995 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
+--- Test Case 12.7 (Benchmark, mass reschedule, 5 threads)
--- Score : 208178 reschedules/S, 1249068 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.8 (Benchmark, round robin context switching)
+--- Test Case 12.8 (Benchmark, round robin context switching)
--- Score : 1581160 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.9 (Benchmark, I/O Queues throughput)
+--- Test Case 12.9 (Benchmark, I/O Queues throughput)
--- Score : 1873164 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.10 (Benchmark, virtual timers set/reset)
---- Score : 1322828 timers/S
+--- Test Case 12.10 (Benchmark, virtual timers set/reset)
+--- Score : 341078 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.11 (Benchmark, semaphores wait/signal)
+--- Test Case 12.11 (Benchmark, semaphores wait/signal)
--- Score : 3199988 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.12 (Benchmark, mutexes lock/unlock)
+--- Test Case 12.12 (Benchmark, mutexes lock/unlock)
--- Score : 1856348 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.13 (Benchmark, RAM footprint)
+--- Test Case 12.13 (Benchmark, RAM footprint)
--- System: 336 bytes
--- Thread: 68 bytes
--- Timer : 20 bytes
diff --git a/os/hal/include/hal.h b/os/hal/include/hal.h
index 029f05dfa..1fe9c7468 100644
--- a/os/hal/include/hal.h
+++ b/os/hal/include/hal.h
@@ -101,7 +101,7 @@
/**
* @brief HAL version string.
*/
-#define HAL_VERSION "3.0.0p2"
+#define HAL_VERSION "3.0.0p3"
/**
* @brief HAL version major number.
diff --git a/os/nil/include/nil.h b/os/nil/include/nil.h
index eb92b2e22..6c5558cd0 100644
--- a/os/nil/include/nil.h
+++ b/os/nil/include/nil.h
@@ -61,7 +61,7 @@ typedef struct nil_thread thread_t;
/**
* @brief Kernel version string.
*/
-#define CH_KERNEL_VERSION "1.0.0p2"
+#define CH_KERNEL_VERSION "1.0.0p3"
/**
* @brief Kernel version major number.
diff --git a/os/rt/include/ch.h b/os/rt/include/ch.h
index 155734ff4..a525ac553 100644
--- a/os/rt/include/ch.h
+++ b/os/rt/include/ch.h
@@ -48,7 +48,7 @@
/**
* @brief Kernel version string.
*/
-#define CH_KERNEL_VERSION "3.0.0p2"
+#define CH_KERNEL_VERSION "3.0.0p3"
/**
* @brief Kernel version major number.
diff --git a/testhal/STM32/STM32F4xx/ADC/debug/STM32F4xx-ADC (OpenOCD, Flash and Run).launch b/testhal/STM32/STM32F4xx/ADC/debug/STM32F4xx-ADC (OpenOCD, Flash and Run).launch
index cb2e577e4..d0509f760 100644
--- a/testhal/STM32/STM32F4xx/ADC/debug/STM32F4xx-ADC (OpenOCD, Flash and Run).launch
+++ b/testhal/STM32/STM32F4xx/ADC/debug/STM32F4xx-ADC (OpenOCD, Flash and Run).launch
@@ -33,7 +33,7 @@
-
+
diff --git a/testhal/STM32/STM32F4xx/CAN/debug/STM32F4xx-CAN (OpenOCD, Flash and Run).launch b/testhal/STM32/STM32F4xx/CAN/debug/STM32F4xx-CAN (OpenOCD, Flash and Run).launch
new file mode 100644
index 000000000..0ebd9f41e
--- /dev/null
+++ b/testhal/STM32/STM32F4xx/CAN/debug/STM32F4xx-CAN (OpenOCD, Flash and Run).launch
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testhal/STM32/STM32F4xx/DMA_STORM/Makefile b/testhal/STM32/STM32F4xx/DMA_STORM/Makefile
index 3fec9da36..2a762abc4 100644
--- a/testhal/STM32/STM32F4xx/DMA_STORM/Makefile
+++ b/testhal/STM32/STM32F4xx/DMA_STORM/Makefile
@@ -5,7 +5,7 @@
# Compiler options here.
ifeq ($(USE_OPT),)
- USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
+ USE_OPT = -O0 -ggdb -fomit-frame-pointer -falign-functions=16
endif
# C specific options here (added to USE_OPT).
diff --git a/testhal/STM32/STM32F4xx/DMA_STORM/debug/STM32F4xx-DMA_STORM (OpenOCD, Flash and Run).launch b/testhal/STM32/STM32F4xx/DMA_STORM/debug/STM32F4xx-DMA_STORM (OpenOCD, Flash and Run).launch
new file mode 100644
index 000000000..04762475f
--- /dev/null
+++ b/testhal/STM32/STM32F4xx/DMA_STORM/debug/STM32F4xx-DMA_STORM (OpenOCD, Flash and Run).launch
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testhal/STM32/STM32F4xx/DMA_STORM/main.c b/testhal/STM32/STM32F4xx/DMA_STORM/main.c
index d119613f9..7bfc7b2c0 100644
--- a/testhal/STM32/STM32F4xx/DMA_STORM/main.c
+++ b/testhal/STM32/STM32F4xx/DMA_STORM/main.c
@@ -19,9 +19,23 @@
#include "ch.h"
#include "hal.h"
+/**
+ * DMA operation timeout failure handler.
+ */
+static void tmo(void *p) {
+
+ chSysHalt((const char *)p);
+}
+
+/*--------------------------------------------------------------------------*/
+/* ADC related code. */
+/*--------------------------------------------------------------------------*/
+
#define ADC_GRP2_NUM_CHANNELS 8
#define ADC_GRP2_BUF_DEPTH 16
+static virtual_timer_t adcvt;
+
static adcsample_t samples2[ADC_GRP2_NUM_CHANNELS * ADC_GRP2_BUF_DEPTH];
static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
@@ -29,6 +43,10 @@ static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
(void)adcp;
(void)buffer;
(void)n;
+
+ chSysLockFromISR();
+ chVTSetI(&adcvt, MS2ST(10), tmo, (void *)"ADC timeout");
+ chSysUnlockFromISR();
}
static void adcerrorcallback(ADCDriver *adcp, adcerror_t err) {
@@ -60,6 +78,10 @@ static const ADCConversionGroup adcgrpcfg2 = {
ADC_SQR3_SQ2_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11)
};
+/*--------------------------------------------------------------------------*/
+/* SPI related code. */
+/*--------------------------------------------------------------------------*/
+
/*
* Maximum speed SPI configuration (21MHz, CPHA=0, CPOL=0, MSb first).
*/
@@ -70,12 +92,6 @@ static const SPIConfig hs_spicfg = {
0
};
-static void tmo(void *p) {
-
- (void)p;
- chSysHalt("timeout");
-}
-
/*
* SPI thread.
*/
@@ -89,6 +105,8 @@ static THD_FUNCTION(spi_thread, p) {
uint8_t txbuf[256];
uint8_t rxbuf[256];
+ chRegSetThreadName("SPI overlord");
+
chVTObjectInit(&vt);
/* Prepare transmit pattern.*/
@@ -99,7 +117,7 @@ static THD_FUNCTION(spi_thread, p) {
while (true) {
/* Starts a VT working as watchdog to catch a malfunction in the SPI
driver.*/
- chVTSet(&vt, MS2ST(10), tmo, NULL);
+ chVTSet(&vt, MS2ST(10), tmo, (void *)"SPI timeout");
spiExchange(spip, sizeof(txbuf), txbuf, rxbuf);
@@ -108,9 +126,13 @@ static THD_FUNCTION(spi_thread, p) {
}
}
+/*--------------------------------------------------------------------------*/
+/* Application code. */
+/*--------------------------------------------------------------------------*/
+
/*
* This is a periodic thread that does absolutely nothing except flashing
- * a LED.
+ * a LED. If the application fails then the LED stops flashing.
*/
static THD_WORKING_AREA(waThread1, 128);
static THD_FUNCTION(Thread1, arg) {
@@ -148,7 +170,8 @@ int main(void) {
adcStart(&ADCD1, NULL);
adcSTM32EnableTSVREFE();
- /* Starts an ADC continuous conversion.*/
+ /* Starts an ADC continuous conversion and its watchdog virtual timer.*/
+ chVTSet(&adcvt, MS2ST(10), tmo, (void *)"ADC timeout");
adcStartConversion(&ADCD1, &adcgrpcfg2, samples2, ADC_GRP2_BUF_DEPTH);
/* Activating SPI drivers.*/
@@ -180,7 +203,7 @@ int main(void) {
/* Starts a VT working as watchdog to catch a malfunction in the DMA
driver.*/
- chVTSet(&vt, MS2ST(10), tmo, NULL);
+ chVTSet(&vt, MS2ST(10), tmo, (void *)"copy timeout");
/* Copy pattern 1.*/
dmaStartMemCopy(STM32_DMA2_STREAM6,