Add NXP LPC54S018M-EVK bare-metal port with shared LPC ENET driver#101
Open
dgarske wants to merge 2 commits intowolfSSL:masterfrom
Open
Add NXP LPC54S018M-EVK bare-metal port with shared LPC ENET driver#101dgarske wants to merge 2 commits intowolfSSL:masterfrom
dgarske wants to merge 2 commits intowolfSSL:masterfrom
Conversation
First NXP platform support for wolfIP. Adds a bare-metal port for the LPCXpresso54S018M development board (Cortex-M4F, 96 MHz) with DHCP, ICMP ping, and TCP echo server over 100 Mbps Ethernet (LAN8720A PHY). The Ethernet driver is split into a shared lpc_enet/ component (Synopsys DesignWare Ethernet QoS with enhanced descriptors) and board-specific code in lpc54s018/, matching the existing stm32/stm32h563 structure for easy reuse across other NXP LPC boards. Tested: DHCP lease acquisition, ICMP ping (<1 ms), TCP echo on port 7. Co-authored-by: Aidan Garske <aidan@wolfssl.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds first NXP LPC54S018M-EVK bare-metal port for wolfIP, including a shared LPC ENET (DesignWare EQoS) driver intended to be reused across other LPC MCUs, plus board build/flash tooling and CI build coverage.
Changes:
- Introduce shared
src/port/lpc_enet/MAC/DMA + MDIO/PHY driver and a thin LPC54S018 board wrapper. - Add LPC54S018M-EVK bare-metal firmware (startup/IVT/syscalls/linker scripts) with DHCP + ping + TCP echo example.
- Add build automation: per-board Makefile/scripts and a GitHub Actions workflow to compile the LPC54S018 firmware.
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/port/lpc_enet/lpc_enet.h | Public header for shared LPC ENET driver and PHY helpers |
| src/port/lpc_enet/lpc_enet.c | Shared LPC ENET MAC/DMA + MDIO/PHY implementation |
| src/port/lpc54s018/target_ram.ld | RAM-only linker script for debugger-loaded runs |
| src/port/lpc54s018/target.ld | SPIFI flash boot linker script with reserved boot-header space |
| src/port/lpc54s018/syscalls.c | Minimal newlib syscall stubs routing _write to USART0 |
| src/port/lpc54s018/startup.c | Reset handler and data/BSS initialization |
| src/port/lpc54s018/main.c | Board init + wolfIP init + DHCP + TCP echo server |
| src/port/lpc54s018/lpc54s018_eth.h | Board-specific ENET parameters + aliases to shared driver |
| src/port/lpc54s018/ivt.c | Vector table sized to leave room for enhanced boot header |
| src/port/lpc54s018/flash_ram.sh | pyOCD SRAM load-and-run helper |
| src/port/lpc54s018/flash.sh | pyOCD SPIFI flash programming helper |
| src/port/lpc54s018/fix_checksum.py | Post-build tool to patch vector checksum and write enhanced boot header |
| src/port/lpc54s018/config.h | wolfIP configuration for this bare-metal port |
| src/port/lpc54s018/README.md | Build/flash/test documentation for the port |
| src/port/lpc54s018/Makefile | Standalone firmware build for LPC54S018 + shared ENET driver |
| Makefile | Add cppcheck suppressions for new port startup/syscalls |
| .github/workflows/stm32n6.yml | CI build job for STM32N6 port (added workflow file) |
| .github/workflows/lpc54s018.yml | CI build job for LPC54S018 port |
| .github/workflows/codespell.yml | Add “FRO” to codespell ignore list |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add NXP LPC54S018M-EVK bare-metal port with shared LPC ENET driver
First NXP platform support for wolfIP. Adds a bare-metal port for the
LPCXpresso54S018M development board (Cortex-M4F, 96 MHz) with DHCP,
ICMP ping, and TCP echo server over 100 Mbps Ethernet (LAN8720A PHY).
The Ethernet driver is split into a shared lpc_enet/ component (Synopsys
DesignWare Ethernet QoS with enhanced descriptors) and board-specific
code in lpc54s018/, matching the existing stm32/stm32h563 structure for
easy reuse across other NXP LPC boards.
Tested: DHCP lease acquisition, ICMP ping (<1 ms), TCP echo on port 7.
Example UART output:
Co-authored-by: Aidan Garske aidan@wolfssl.com