È possibile (e fattibile) eseguire applicazioni .NET su Raspberry Pi con Mono ?
In tal caso, quanto bene corrono? È possibile utilizzare una GUI di base o le scarse prestazioni la limitano realisticamente alle applicazioni della riga di comando?
È possibile (e fattibile) eseguire applicazioni .NET su Raspberry Pi con Mono ?
In tal caso, quanto bene corrono? È possibile utilizzare una GUI di base o le scarse prestazioni la limitano realisticamente alle applicazioni della riga di comando?
Risposte:
C'è una domanda StackOverflow abbastanza simile a questa, Mono su Raspberry Pi . Tuttavia, attraverso le mie ricerche, non sono stato in grado di trovare nulla di specifico per .NET, ma piuttosto solo C #.
È possibile installare il runtime usando APT su una distro Debian eseguendo:
$ sudo apt-get install mono-runtime
Puoi anche (supponendo che tu abbia una sorta di GUI come LXDE) installare un IDE Mono lento con:
$ sudo apt-get install monodevelop
Per Arch Linux ARM è necessario installare il runtime tramite Pacman , in questo modo:
$ sudo pacman -S mono
L'IDE Mono può essere installato in modo simile:
$ sudo pacman -S monodevelop
Contrariamente alla credenza popolare, il codice compilato VB.NET funziona bene su Raspberry Pi, almeno sotto Debian. apt-get installa mono-vbnc e quindi esegui il tuo VB exe come argomento per mono, ad esempio mono yourexe.exe
Non ho fatto alcun benchmark delle prestazioni in quanto non sto scrivendo un'app ad alte prestazioni, ma finora sembra andare bene.
Il codice .NET che utilizza le librerie .NET Framework non può essere eseguito su Raspberry Pi poiché richiede l'esecuzione di una versione compatibile con ARM di NETMF o CLR . A partire da ora, Microsoft non ha ancora rilasciato Windows su ARM (WoA). Fare riferimento a Experiment 19 per Microsoft Research CLR funziona su ARM.
Tuttavia, è possibile eseguire il codice .NET (senza riferimento o utilizzare le librerie .NET Framework) utilizzando Mono poiché Mono ha un CLR per dispositivi ARM.
Vedere anche Creazione di Windows per l'architettura del processore ARM per informazioni su Windows su ARM (WoA).
Ho un'applicazione .NET da riga di comando per lavorare con Mono. L'app sta fondamentalmente facendo qualcosa di simile al port forwarding, prendendo i dati ricevuti tramite l'UART seriale e inoltrandoli su TCP / IP. Utilizza le classi SerialPort, TcpListener, TcpClient e Socket .NET, con solo piccole modifiche necessarie al codice di gestione di SerialPort. Sto usando il sistema operativo Debian soft float.
In termini di prestazioni, la prima cosa che mi sono imbattuto sono stati alcuni rallentamenti significativi in alcuni codici di debugging / trace che stavano formattando una matrice di byte in una stringa per scopi di registrazione. Era 50 volte più lento rispetto all'esecuzione su un PC.
Quindi consiglierei di scrivere alcuni test delle unità di prestazione quando si esegue il porting di codice esistente su RPi.
Per i test unitari, NUnit funziona perfettamente su RPi ...
Per installare NUnit:
sudo apt-get install nunit
Correre:
nunit-console appUnderTest.exe