Embedded è un campo LARGE che spazia da pochissime cose a cose che sono in realtà solo una macchina desktop in una scatola divertente.
Ho intenzione di andare con 3 categorie di sistemi embedded, per corrispondere con la mia esperienza, quindi farò alcune raccomandazioni.
I piccoli sistemi embedded sono gestiti da dispositivi di tipo microcontrollore. Non hanno alcun sistema operativo, programmatore, ecc. Ecc. Stai eseguendo codice in esecuzione direttamente sulla CPU e, in generale, avrai il ciclo principale che si avvia all'accensione e non esce mai. Ci sono molte opzioni per i microcontroller, che vanno da cose come il venerabile 8051 al PIC veramente piccolo e molti prodotti basati sui core ARM. Sono carini perché hai un controllo completo e diretto su ogni aspetto del funzionamento del sistema. Ovviamente, ciò significa anche che devi stare attento a cose come il tempismo e la latenza delle operazioni e quanto tempo puoi dedicare a una cosa prima di tornare al tuo ciclo principale.
I sistemi embedded medi sono cose più grandi e che avranno un SO embedded come il pSOS di Wind River (ci sono MOLTE scelte per questo, mi è capitato di aver usato pSOS una volta). Lo chiamo medium perché a questo punto NON si sta eseguendo un singolo ciclo principale e in realtà si dispone di uno scheduler. L'hardware potrebbe non essere molto diverso dalla fascia più alta del gruppo precedente, ma la presenza di un programmatore e di un'architettura di driver più formale migliora davvero la tua capacità di programmatore di fare le cose. Al rovescio della medaglia, potrebbe essere più difficile rispettare tempistiche molto strette perché è possibile introdurre facilmente più ritardi imprevisti dallo scheduler. Inoltre, bisogna fare attenzione che l'hardware funzioni in modo appropriato per il sistema operativo in uso, ad esempio non tutte le strategie di interrupt funzionano con tutti i sistemi operativi incorporati. Alla fine più grande di questo gruppo inserirò Windows CE, l'offerta integrata di Microsoft. Questo segmento si sta estinguendo in una certa misura poiché sempre più risorse di elaborazione stanno diventando disponibili per meno e meno soldi.
I grandi sistemi embedded sono ancora più grandi e gestiscono un sistema operativo che un utente desktop potrebbe riconoscere. Linux è comune qui, così come la versione embedded (o anche la normale!) Di MS Windows. C'è molto di questo in giro in campo medico (guarda un sacco di macchine ad ultrasuoni). Il vantaggio qui è che puoi eseguire un'installazione completa di Linux, con tutte le cose utili che un vero SO porta più su hardware molto piccolo e molto economico.
Ora, essendo la tua prima incursione in embedded, e dato che è medico (dove sospetto tu abbia margini per supportare budget di hardware ragionevoli), ti consiglio di usare qualche piccolo computer come un rasberry pi, un beaglebone o qualcos'altro basato su una moltitudine di core ARM là fuori. Esegui Linux su di esso e costruisci la tua app su questo. In effetti, probabilmente vorrai semplicemente lasciare il tuo dispositivo così com'è, metterlo in una scatola con il piccolo computer e comunicare via USB. Effettivamente, porta semplicemente la tua app esistente su Linux e vai.