Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Open
AlexLanzano wants to merge 1 commit into
wolfSSL:master from
AlexLanzano:wolfHAL-integration
Open

Add generic wolfHAL Ethernet port with STM32H563ZI Nucleo board support #97
AlexLanzano wants to merge 1 commit into
wolfSSL:master from
AlexLanzano:wolfHAL-integration

Conversation

@AlexLanzano

@AlexLanzano AlexLanzano commented Apr 7, 2026
edited
Loading

Copy link
Copy Markdown
Member

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

Copilot AI 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.

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.

Comment thread src/port/wolfHAL/main.c
Comment thread src/port/wolfHAL/boards/stm32h563zi_nucleo/syscalls.c Outdated
Comment thread src/port/wolfHAL/boards/stm32h563zi_nucleo/board.c Outdated
Comment thread src/port/wolfHAL/Makefile
Comment thread src/port/wolfHAL/main.c Outdated
Copilot AI review requested due to automatic review settings April 7, 2026 16:38

Copilot AI 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.

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.

Comment thread src/port/wolfHAL/boards/stm32h563zi_nucleo/board.mk
Comment thread src/port/wolfHAL/boards/stm32h563zi_nucleo/board.c Outdated
Comment thread src/port/wolfHAL/boards/stm32h563zi_nucleo/board.h
Comment thread src/port/wolfHAL/README.md Outdated
@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

Copilot AI 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.

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.

Comment thread src/port/wolfHAL/main.c
Comment thread src/port/wolfHAL/boards/stm32h563zi_nucleo/board.c Outdated
Comment thread src/port/wolfHAL/Makefile Outdated

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can wolfHAL be less intrusive? Or show what an update of the existing STM32H5 wolfIP port look for the H5? Have you compare code size between the two (existing and this)? I'd almost like to see instead a proper update to a wolfHAL version of the drivers. Not src/port/wolfHAL but src/port/stm32h5 optionally using the wolfHAL to compare.

AlexLanzano commented May 5, 2026
edited
Loading

Copy link
Copy Markdown
Member Author

Can wolfHAL be less intrusive? Or show what an update of the existing STM32H5 wolfIP port look for the H5? Have you compare code size between the two (existing and this)? I'd almost like to see instead a proper update to a wolfHAL version of the drivers. Not src/port/wolfHAL but src/port/stm32h5 optionally using the wolfHAL to compare.

@dgarske The nice thing about having this in a separate src/port/wolfHAL is that we can maintain a generic application and layer on things like FreeRTOS, MQTT, TLS client/servers without having to re-implement this in each port.

Having this generic wolfHAL port structure makes it much easier to port existing platforms in wolfHAL to wolfip. You just add a new entry in boards/ that contains all the platform specific config instead of spinning up a new src/port/ dir and then having to re-implement all the same application level code.

I can move all of this out of src/port/wolfHAL and into src/port/stm32h5 but this would lose a lot of the nice things that wolfHAL provides IMO

Also, I'll get this size comparison between the existing H5 port and the wolfHAL port soon

@AlexLanzano AlexLanzano force-pushed the wolfHAL-integration branch 2 times, most recently from 9009c88 to 3974801 Compare June 4, 2026 23:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot Copilot left review comments
@danielinux danielinux Awaiting requested review from danielinux
@dgarske dgarske Awaiting requested review from dgarske

Requested changes must be addressed to merge this pull request.

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /