Skip to content

Add generic wolfHAL Ethernet port with STM32H563ZI Nucleo board support#97

Open
AlexLanzano wants to merge 1 commit intowolfSSL:masterfrom
AlexLanzano:wolfHAL-integration
Open

Add generic wolfHAL Ethernet port with STM32H563ZI Nucleo board support#97
AlexLanzano wants to merge 1 commit intowolfSSL:masterfrom
AlexLanzano:wolfHAL-integration

Conversation

@AlexLanzano
Copy link
Copy Markdown
Member

@AlexLanzano AlexLanzano commented Apr 7, 2026

Summary

  • Add a generic wolfIP port that bridges to wolfHAL's whal_Eth / whal_EthPhy API — any board with a wolfHAL Ethernet driver can use wolfIP with no platform-specific port code
  • Include STM32H563ZI Nucleo-144 as the first reference board (boards/stm32h563zi_nucleo)
  • Port waits for PHY link negotiation, starts the MAC with correct speed/duplex, and wires wolfIP_ll_dev poll/send to
    whal_Eth_Recv/whal_Eth_Send

Structure

src/port/wolfHAL/
├── Makefile, main.c, wolfhal_eth.c/h # Generic (board-independent)
└── boards/stm32h563zi_nucleo/ # Board-specific: clock, GPIO, ETH, UART, linker

Adding a new board requires only a boards/<name>/ directory with board.c/h, board.mk, and bare-metal startup files. The generic main.c and wolfhal_eth.c are shared across all boards.

Build

cd src/port/wolfHAL
make BOARD=stm32h563zi_nucleo

Requires arm-none-eabi-gcc and wolfHAL cloned as a sibling directory (overridable via WOLFHAL_ROOT).

Testing

I tested this by doing a ping 192.168.1.100 on my host PC. I successfully got a responses back.

Copilot AI review requested due to automatic review settings April 7, 2026 16:01
@AlexLanzano AlexLanzano marked this pull request as draft April 7, 2026 16:01
@AlexLanzano
Copy link
Copy Markdown
Member Author

Need to make CI build tests...

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new src/port/wolfHAL/ port intended to let wolfIP run on any target that provides wolfHAL whal_Eth / whal_EthPhy, with STM32H563ZI Nucleo-144 as the first reference board and a standalone Makefile-based bare-metal build.

Changes:

  • Introduces a generic wolfHAL-based link-layer adapter (wolfhal_eth.c/.h) that bridges wolfIP ll_dev poll/send to whal_Eth_Recv / whal_Eth_Send and starts the MAC after PHY negotiation.
  • Adds a generic bare-metal main.c for bringing up wolfIP, configuring a static IPv4 address, and starting a TCP echo server.
  • Adds a complete STM32H563ZI Nucleo board package (startup/IVT/linker/board init/syscalls + board.mk) and a port-local build system + .gitignore.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/port/wolfHAL/wolfhal_eth.h Public API/docs for the generic wolfHAL Ethernet bridge.
src/port/wolfHAL/wolfhal_eth.c Implements wolfIP ll_dev poll/send via wolfHAL and link negotiation + MAC start.
src/port/wolfHAL/main.c Bare-metal reference app wiring board init + wolfIP + echo server.
src/port/wolfHAL/Makefile New Makefile entrypoint for BOARD-based builds.
src/port/wolfHAL/.gitignore Ignores build artifacts.
src/port/wolfHAL/boards/stm32h563zi_nucleo/board.mk Toolchain flags and board + wolfHAL driver source list.
src/port/wolfHAL/boards/stm32h563zi_nucleo/board.h Board API and exported wolfHAL device instances.
src/port/wolfHAL/boards/stm32h563zi_nucleo/board.c STM32H563ZI init: flash latency, clocks, GPIO, ETH/PHY, SysTick timer, UART.
src/port/wolfHAL/boards/stm32h563zi_nucleo/syscalls.c Newlib stubs + wolfIP hooks (incl. RNG).
src/port/wolfHAL/boards/stm32h563zi_nucleo/startup.c Minimal reset handler (data/bss init + libc init + main).
src/port/wolfHAL/boards/stm32h563zi_nucleo/ivt.c Cortex-M33 vector table.
src/port/wolfHAL/boards/stm32h563zi_nucleo/linker.ld Memory map and sections for STM32H563ZI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@AlexLanzano AlexLanzano force-pushed the wolfHAL-integration branch from b5999a2 to 015ca06 Compare April 7, 2026 16:27
Copilot AI review requested due to automatic review settings April 7, 2026 16:38
@AlexLanzano AlexLanzano force-pushed the wolfHAL-integration branch from 015ca06 to 70ac819 Compare April 7, 2026 16:38
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@AlexLanzano AlexLanzano force-pushed the wolfHAL-integration branch from 70ac819 to 6e50685 Compare April 7, 2026 17:08
@AlexLanzano AlexLanzano marked this pull request as ready for review April 7, 2026 17:20
Copilot AI review requested due to automatic review settings April 7, 2026 17:20
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@AlexLanzano AlexLanzano force-pushed the wolfHAL-integration branch from 6e50685 to fc3675e Compare April 7, 2026 18:51
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.

4 participants