Ci sono modi molti di ottenere le stesse cose e le cose poi ottenute non sono uguali
Spostare cose come interpolatore, generatore step, panificatore percorso, raccordi, etc a PC, perché questo è potente, è uno delle cose errate da non fare per vari motivi:
- I PC e relativi OS non sono deterministici (hard real-time).
- Anche usando un OS real-time i processori per PC e tutta l'infrastruttura di corredo non sono progettati per questo tipo d'uso.
- I sistemi operativi real-time di qualità costano un botto (VxWorks, QNX, etc. e danno il massimo solo con certi processori e schede fatte ad hoc).
- Le estensioni real-time di Linux non sono realmente hard real-time anche se si avvicinano, ma non lo sono.
- In un sistema OS real-time che non sia sviluppato da zero e privo di componenti di terze parti (drivers, etc) è sempre in balia di cosa fa un driver o un'estensione di terze parti.
Vince la soluzione di porre un sistema realmente hard real-time su una scheda embedded che usi componenti (processori, chip rete, etc.) che
sono nati per questo scopo e quindi a bassa latenza, stabilità, etc e non sono molti.
Arduino non lo è come non lo sono tante architetture di chip ARM ad esclusione della Cortex-R nata apposta per applicazioni hard real-time.
Quando si sviluppa con un chip adeguato per fare attività hard real-time bisogna anche usare librerie, tool che siano adeguati e non sempre
sono accessibili gratuitamente ma hanno costi elevati.
Cosa migliore in questo caso è farsi da zero un sistema operativo hard real-time di cui si conoscono fino all'intimo ogni attività e caratteristica.
Spesso per sgravare il compito del processore si delegano funzionalità ad altri chip del sistema come FPGA o chip SOC per comunicazione LAN con gli stack già implementati di modo che il processore/processori principali siano completamente liberi da ogni carico inaspettato.
Fanno cosi anche le CNC Pro dove ormai delegano la UI a Linux/Windows ma poi il core gira su processori/schede embedded cha lavorano in parallelo e si limitano a condividere i dati con la UI tramite vari sistemi di ECC.