From 5e74f17084778dc526471d4839ebf564c3b18b5d Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 13 Apr 2015 12:01:48 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7887 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- doc/hal/Doxyfile_chm | 2 +- doc/hal/Doxyfile_html | 2 +- doc/nil/Doxyfile_chm | 2 +- doc/nil/Doxyfile_html | 2 +- doc/rt/Doxyfile_chm | 2 +- doc/rt/Doxyfile_html | 2 +- doc/rt/reports/STM32F407-168-GCC-FPU.txt | 112 +++++++++--------- doc/rt/reports/STM32F407-168-GCC.txt | 103 ++++++++-------- os/hal/include/hal.h | 2 +- os/nil/include/nil.h | 2 +- os/rt/include/ch.h | 2 +- ...32F4xx-ADC (OpenOCD, Flash and Run).launch | 2 +- ...32F4xx-CAN (OpenOCD, Flash and Run).launch | 52 ++++++++ testhal/STM32/STM32F4xx/DMA_STORM/Makefile | 2 +- ...-DMA_STORM (OpenOCD, Flash and Run).launch | 52 ++++++++ testhal/STM32/STM32F4xx/DMA_STORM/main.c | 43 +++++-- 16 files changed, 260 insertions(+), 124 deletions(-) create mode 100644 testhal/STM32/STM32F4xx/CAN/debug/STM32F4xx-CAN (OpenOCD, Flash and Run).launch create mode 100644 testhal/STM32/STM32F4xx/DMA_STORM/debug/STM32F4xx-DMA_STORM (OpenOCD, Flash and Run).launch 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,