---
title: "Remora STM32F4xx PIO Port"
url: "https://maker.wiznet.io/matthew/projects/remora-stm32f4xx-pio-port/"
markdown_url: "https://maker.wiznet.io/matthew/projects/remora-stm32f4xx-pio-port/md"
type: "UCC: User Created Content"
author: "ben-jacobson"
author_url: "https://github.com/ben-jacobson/Remora-Core-F4-Port"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "ben-jacobson"
original_url: "https://github.com/ben-jacobson/Remora-Core-F4-Port"
published: "2025-07-21"
language: "en"
tags: ["W5500", "STM32"]
likes: 0
views: 3390
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Remora STM32F4xx PIO Port

> Early port of Remora motion-control firmware to STM32F4xx Nucleo boards with WIZnet W5500, built on the new Remora-Core layer for Ethernet-based LinuxCNC.

Original author: ben-jacobson (source: https://github.com/ben-jacobson/Remora-Core-F4-Port)

## Documents and links

- [GIthub](https://github.com/ben-jacobson/Remora-STM32F4xx-PIO) (code)

## Article

This repository is an in-development port of Remora real-time motion-control firmware to the STM32F4xx family using the new Remora-Core abstraction. Pairing the MCU with a WIZnet W5500 keeps Ethernet deterministic and light-weight, enabling reliable LinuxCNC control over UDP.

**Current Status:**
• JSON config loader: groundwork done (NOINIT linker section planned).
• W5500 driver: SPI-DMA code compiling; INT pin not yet used.
• Step-gen, digital I/O, analog inputs and hardware PWM scheduled for porting.
• Software PWM and encoder modules not yet migrated.
• Target boards: Nucleo-F446RE and Nucleo-F446ZE (both active).

**Default W5500 Pin-map:**
SCK PA5, MISO PA6, MOSI PA7, RST and CS set in platformio.ini; SPI_INT currently unused.

**Build & Flash Quick-start:**

`pio run -e nucleo_f446re` to compile.

`pio run -e nucleo_f446re -t upload` to flash via on-board ST-Link.

On the LinuxCNC PC compile and install `remora-eth-3.0.c` with `sudo halcompile --install remora-eth-3.0.c`.

Push your config via `tftpy` once Ethernet is active.

**Network Architecture:**
LinuxCNC PC → Ethernet switch → W5500 (100 Mbps) → Remora-Core on STM32 → Step/Dir drivers. The board finishes boot only after link-up.

**Known Limitations & Roadmap:**

No official performance benchmarks yet (max step rate, CPU load).

Ethernet IRQ and DMA paths still under validation.

Roadmap: analog inputs, encoder capture, JSON auto-config, web-based config upload.

**Lessons Learned:**
Moving to Remora-Core modularises the firmware and simplifies adding new MCUs, while the W5500 continues to off-load TCP/IP, preserving hard real-time timing.

**Future Improvements:**

Enable INT-pin-driven packet receive to cut latency.

Provide ready-made binaries once the port reaches beta.

---

Source: https://maker.wiznet.io/matthew/projects/remora-stm32f4xx-pio-port/
