Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
STMicro Nucleo-F401re: implemented comprehensive ThreadX RTOS monitor and primitives showcase by AmmarOkla12772 · Pull Request #45 · eclipse-threadx/samplex · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' STMicro Nucleo-F401re: implemented comprehensive ThreadX RTOS monitor and primitives showcase by AmmarOkla12772 · Pull Request #45 · eclipse-threadx/samplex · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' STMicro Nucleo-F401re: implemented comprehensive ThreadX RTOS monitor and primitives showcase by AmmarOkla12772 · Pull Request #45 · eclipse-threadx/samplex · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' STMicro Nucleo-F401re: implemented comprehensive ThreadX RTOS monitor and primitives showcase by AmmarOkla12772 · Pull Request #45 · eclipse-threadx/samplex · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' STMicro Nucleo-F401re: implemented comprehensive ThreadX RTOS monitor and primitives showcase by AmmarOkla12772 · Pull Request #45 · eclipse-threadx/samplex · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); STMicro Nucleo-F401re: implemented comprehensive ThreadX RTOS monitor and primitives showcase by AmmarOkla12772 · Pull Request #45 · eclipse-threadx/samplex · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions STMicroelectronics/NUCLEO_F401RE/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -140,25 +140,44 @@ The BSP overrides `HAL_InitTick()` to configure TIM2 as the HAL timebase and pro
## Validation Record

### Verification Environment
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1
- **ROM usage**: 11716 Bytes (2.23% of 512 KB Flash)
- **RAM usage**: 7312 Bytes (7.44% of 96 KB RAM)
- **Toolchain**: Arm GNU Toolchain 15.2.Rel1 (GCC 15.2.1)
- **Static ROM usage**: 18244 Bytes (3.48% of 512 KB Flash)
- **Static RAM usage**: 5632 Bytes (5.73% of 96 KB RAM)
- **Dynamic Stack & Buffer allocation**: Stacks (8 x 1024 bytes) and Queue buffer (40 bytes) are dynamically allocated from the `TX_BYTE_POOL` (consuming 8312 bytes total, including pool headers).
- **Board Hardware**: NUCLEO-F401RE

### Hardware Verification Checklist
- [x] **Board boots successfully**: System clock configuration correctly executes and sets SysClk to 84 MHz.
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady 1 Hz interval (toggled by blink thread).
- [x] **LED heartbeat operates correctly**: Onboard user LED LD2 (PA5) blinks at a steady rate.
- [x] **UART console operates at 115200 baud**: Diagnostic outputs are cleanly transmitted over USART2 and displayed in the terminal.
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles multi-threaded execution (Blink, Worker, and Reporter threads).
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread performance stats and uptime reports every 2 seconds:
- [x] **ThreadX scheduler runs correctly**: RTOS scheduler successfully handles 8 threads with priorities ranging from 9 to 15.
- [x] **Thread Registry & Traversal**: Monitor thread queries thread names, states, run counts, and priorities dynamically using `tx_thread_info_get()`.
- [x] **Stack High-Water Mark Profiling**: Dynamic upward memory scanning verifies stack peaks (e.g., reporter thread at 42%, other tasks at 11-14%).
- [x] **RTOS Primitives Showcase**: Verified mutex lock hand-offs under contention, queue message transfers, and event flag synchronization.
- [x] **Runtime monitor output verified on hardware**: UART serial output prints thread diagnostics table and showcase counters every 2 seconds:

```text
==========================================
Nucleo F401RE ThreadX Multithreading Demo
==========================================
[Reporter] Uptime: 0 s | Blink Thread: 0 runs | Worker Thread: 0 runs | Reporter: 1 runs
[Reporter] Uptime: 2 s | Blink Thread: 4 runs | Worker Thread: 10 runs | Reporter: 2 runs
[Reporter] Uptime: 4 s | Blink Thread: 8 runs | Worker Thread: 20 runs | Reporter: 3 runs
System Status:
------------------------------------------
Uptime: 257 s
Byte Pool Size: 88572 bytes
Allocated Memory: 8312 bytes
Free Memory: 80260 bytes
------------------------------------------

Thread Name Priority State Run Count Stack Peak (Max / Size)
----------------------------------------------------------------------------
monitor thread 9 READY 2575 120 / 1024 bytes (11%)
reporter thread 10 SLEEP 256 432 / 1024 bytes (42%)
blink thread 11 SLEEP 488 136 / 1024 bytes (13%)
event thread 12 EVENT_FLAG 488 128 / 1024 bytes (12%)
mutex thread 1 13 SLEEP 7319 144 / 1024 bytes (14%)
mutex thread 2 13 READY 7319 144 / 1024 bytes (14%)
queue sender 14 READY 1220 128 / 1024 bytes (12%)
queue receiver 15 QUEUE_SUSP 1220 128 / 1024 bytes (12%)
----------------------------------------------------------------------------
Runs: Monitor: 2576 | Reporter: 123 | Blink: 488
RTOS Showcase: Mutex Locks: 2440/2440 | Queue Msgs: 1220 | Event Wakes: 488
```


Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "board_init.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/board_init.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
5 changes: 5 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/common/console.c
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/
// Some portions generated by Codex (GPT-5).

#include "stm32f4xx_hal.h"

Expand Down
4 changes: 4 additions & 0 deletions STMicroelectronics/NUCLEO_F401RE/app/starter/cloud_config.h
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
/*
* Copyright (c) 2026 Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available
* under the terms of the MIT license which is available at
* https://opensource.org/license/mit.
*
* SPDX-License-Identifier: MIT
*/

Expand Down
Loading