Wiznet makers

matthew

Published July 21, 2025 ©

88 UCC

9 WCC

30 VAR

0 Contests

0 Followers

0 Following

Original Link

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.

COMPONENTS
PROJECT DESCRIPTION

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.


 
Documents
  • GIthub

Comments Write