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.

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.