Skip to content

feat(bsp): add STM32F767ZI-Nucleo board enablement verified by ThreadX demo#13

Merged
fdesbiens merged 3 commits into
eclipse-threadx:devfrom
alieissa-commits:feature/stm32f767-board-enablement
Jun 7, 2026
Merged

feat(bsp): add STM32F767ZI-Nucleo board enablement verified by ThreadX demo#13
fdesbiens merged 3 commits into
eclipse-threadx:devfrom
alieissa-commits:feature/stm32f767-board-enablement

Conversation

@alieissa-commits

Copy link
Copy Markdown
Contributor

Pull Request Description

Overview

This pull request establishes a fully isolated, portable, and self-contained Board Support Package (BSP) for the STMicroelectronics STM32F767ZI-Nucleo-144 board under the STMicroelectronics/STM32F767ZI-Nucleo/ directory.

Following a modular design strategy, all build configurations, compiler flags, and target-specific drivers are completely localized. This isolates the platform from other targets, carries zero risk of namespace or library conflicts, and keeps the root workspace clean.

To verify the integration, a 4-thread real-time kernel multitasking application is implemented and fully validated.


Key Features

  1. Isolated CMake Compilation Toolchain:

    • Localized Cortex-M7 CMake toolchain config (arm-gcc-cortex-m7.cmake) with double-precision hardware Floating Point Unit (FPU) optimizations.
    • Portable CMake discovery modules (FindCMSIS.cmake, FindSTM32HAL.cmake) linking the official, lightweight ST peripheral drivers.
    • Automated build control script (scripts/build.ps1) supporting parallel jobs.
  2. Boot & Memory Configuration:

    • Physical linker mapping script (STM32F767ZITx_FLASH.ld) defining boundary zones for Flash (2MB) and SRAM (320KB).
    • Customized low-level context assembly (tx_initialize_low_level.S) mapping the ThreadX RTOS kernel to run at a system clock frequency of 216 MHz.
    • Standard vector interrupt tables (startup_stm32f767xx.s) and clock configs.
  3. Peripheral Driver Adaptations:

    • Console Redirection: Configured USART3 (PD8/PD9) to redirect standard C printf outputs directly to the ST-LINK Virtual COM port.
    • Ethernet Transceiver Setup: Implemented low-level MAC initializations and DMA descriptor table allocations in SRAM for the Microchip LAN8742A PHY.
  4. 4-Thread Verification RTOS Demo:

    • Thread 1 (Status Monitor): Toggles the Green LED (LD1) at 2 Hz to verify core RTOS scheduler clock ticks.
    • Thread 2 (Button Controller): Scans the user button (PC13) with debouncing and triggers the Blue LED (LD2).
    • Thread 3 (System Logger): Blocks efficiently on an RTOS Message Queue. Upon receiving a button-press packet, it prints real-time logging timestamps to the terminal.
    • Thread 4 (Interrupt-driven Console Input): Captures incoming serial keyboard input over USART3 and flashes the Red LED (LD3).

@alieissa-commits alieissa-commits force-pushed the feature/stm32f767-board-enablement branch from d37941d to 82621d0 Compare June 2, 2026 06:20

@fdesbiens fdesbiens left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A good start!

Please see the comments below. In particular, we must figure out the actual license for the ST code included. We should then create a NOTICE.md file at the root of the app listing the licenses applicable to the third-party code in this sample.

You can also start working on a README.md explaining what this sample / demo does and how to build / deploy the code on the target board.

@@ -0,0 +1,204 @@
/*
* Copyright (c) 2026-present Eclipse ThreadX contributors

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the upcoming Q2 release, I must correct all copyright statements that add "-present" to the current year. This is a mistake I made in the Q1 release.

Please perform a search and replace and ensure that the statement in all the files you produced is:

Copyright (c) 2026 Eclipse ThreadX contributors

Of course, if files have been generated by vendor tooling, you should respect the existing notices and add our own only if you modified the file.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello Mr. Frédéric, I have updated the Pull Request to address your feedback:

  • I created a NOTICE.md file listing the BSD 3-Clause and Apache 2.0 licenses for all third-party fetched components.
  • Untracked the lib/stm32cubef7 directory to ensure third-party drivers are not checked into Git history.
  • Added a detailed README.md onboarding guide at the root of the board directory.
  • Added the STMicroelectronics copyright lines alongside the Eclipse ThreadX contributor details in the license headers of the modified files.
  • Updated the fetch_sdk scripts to dynamically clone ST's official cmsis-core repository from GitHub to retrieve the correct, up-to-date Cortex-M7 standard headers
  • Added fetch_sdk.sh and build.sh scripts compatible with Ubuntu 24.04.

The changes are ready for your review. Please let me know what you think so I can proceed with the next issues. Thank you!

Comment thread STMicroelectronics/STM32F767ZI-Nucleo/scripts/fetch_sdk.ps1 Outdated
Comment thread STMicroelectronics/STM32F767ZI-Nucleo/scripts/build.ps1 Outdated

@fdesbiens fdesbiens left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great. Well done.

@fdesbiens fdesbiens merged commit ed74c2a into eclipse-threadx:dev Jun 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants