Domanda

Sto facendo ricerche per una società come uno stage. Ho avuto qualche problema nell'utilizzo di Mono, l'implementazione cross-platform della piattaforma .Net. La mia azienda progetta hardware e sotware.

La mia conoscenza di utilizzo di Linux embedded è molto limitata. La mia azienda dove sto facendo il mio tirocinio è davvero NET mentalità. Ma i nuovi sviluppi di mono, si chiede se possono indirizzare linux per i piccoli progetti, anche di evitare l'alto costo di licenza per le persone per le quali progettano il software e l'hardware.

I già guardato a ciò che può fare mono (e non può ancora fare). Ora raggiungo la questione incorporato. Sto un pò perso nella storia nel modo in cui un Linux embedded è costruito.

Ho visto alcune storie dove hanno appena preso alcune librerie standard di Linux per rendere il Linux embedded sull'hardware. Ho anche visto che esiste particolari distribuzioni Linux come uClinux (aka µClinux). Allora, qual è la differenza, o è solo lo stesso. Che cosa significa l'aspetto processo, come in genere quando voglio usare Linux embedded su un deivce bersaglio?

OK, che la parte mono, in modo sostanzialmente voglio essere in grado di eseguire C # in linux embedded. Qui la maggior parte usano uClinux, io sono in grado di utilizzare mono per questo? Ho guardato alcune specifiche, e non hanno Memory Management Unit (MMU).

Quindi, in pratica mi preoccupa che nessuno MMU. Dal momento che modo il garbage collector reagire?

Spero che non ho dato un sovraccarico di domande,

Saluti, e ti ringrazio già per la lettura di esso,

Benjamin

È stato utile?

Soluzione

Il garbage collector non dipende da una MMU, anche se può essere più efficace se presente.

Al momento approfittiamo per generare eccezioni riferimento null senza controlli: su uClinux sarà necessario abilitare i controlli espliciti (il codice è già lì, ha solo bisogno di essere attivato). Altre persone hanno riferito utilizzando mono su uClinux, anche se ci sono probabilmente alcune modifiche necessarie alle fonti qua e là dal momento che non abbiamo mai testarlo su quella piattaforma (ovviamente sto parlando di uclinux su un'architettura di CPU che già sosteniamo, come ARM, è non ha specificato).

Per quanto riguarda gli altri commenti, AOT e mkbundle sono in gran parte irrilevanti per quello che ti serve. Che cosa si vuole veramente è quello di ridurre l'impronta mono per adattarsi a ciò che il vostro dispositivo consente, vedi http: // www .mono-project.com / Small_footprint per maggiori informazioni.

Se è stato me prendere la decisione, ho sempre scegliere un Linux ARM regolare nel corso uclinux per l'esecuzione di un software complesso come mono o qualsiasi programma è necessario eseguire il mono.

Altri suggerimenti

Se i dispositivi non hanno una MMU, forse si potrebbe desiderare di utilizzare l'open-source di Microsoft .NET Micro Framework . E 'molto più limitate rispetto .NET / Mono, ed è un interprete, non un JIT, ma può essere eseguito su molto hardware più limitate.

Mono può essere limitato come si vuole che sia. Se si utilizza un dispositivo che non ha MMU, mi piacerebbe guardare in Davanti a compilation tempo .

mkbundle può anche funzionare bene, ma non sono sicuro che sia può fare a meno di una MMU. Detto questo, se si sta utilizzando AOT, si sta andando ad essere utilizzando mkbundle primo a tirare in tutte le dipendenze.

Se la vostra azienda vuole indirizzare tavole Linux embedded via MONO, e tutto ciò che è necessario è quello di trasferire qualche applicazione che gira già sul computer desktop di Windows, allora si avrà probabilmente molto piccoli problemi. Ma se si vuole parlare con alcuni IO, I2C, SPI, 1-Wire e altre periferiche, si avrà un problema per loro accesso tramite MONO e probabilmente si dovrà fare qualche traduttore (scritto probabilmente nel GCC), che sarà un gateway tra l'hardware reale e l'applicazione MONO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top