Frage

Ich tue Forschung für ein Unternehmen als Praktikum. Ich hatte einige Fragen im Umgang mit Mono, die Cross-Plattform-Implementierung von .NET-Plattform. Mein Unternehmen entwickelt Hard- und sotware.

Meine Kenntnisse über Embedded Linux verwendet, ist sehr begrenzt. Meine Firma, wo ich mein Praktikum mache, ist wirklich .NET aufgeschlossen. Aber die neuen Entwicklungen von Mono-, fragen sie sich, wenn sie Linux für kleinere Projekte zielen können auch die hohen Lizenzkosten für die Menschen zu vermeiden, für die sie die Software und Hardware-Design.

Ich sehe schon in dem, was Mono tun kann (und kann noch nicht tun). Nun erreiche ich die eingebettete Frage. Ich bin ein bisschen in der Geschichte verloren, wie ein eingebettetes Linux aufgebaut ist.

sah ich einige Geschichten, in denen sie nahmen nur einige Standard-Linux-Bibliotheken die Embedded Linux auf der Hardware zu machen. Ich sah auch, dass es existiert spezielle Linux-Distributionen wie uClinux (aka µClinux). Also, was ist der Unterschied, oder ist es genau das gleiche. Was bedeutet das Aussehen Prozess wie normalerweise auf, wenn ich will Embedded Linux auf einem Ziel deivce benutzen?

OK, als der Mono Teil, so dass im Grunde mag ich in der Lage sein, C # in Embedded Linux laufen zu lassen. Hier meistens verwenden sie uclinux, bin ich in der Lage für diesen Einsatz Mono? Ich sah einige Spezifikationen, und sie haben keine Memory Management Unit (MMU).

Also im Grunde bin ich sehr besorgt darüber keine MMU. Da, wie wird der Kollektor Müll reagieren?

Ich hoffe, dass ich nicht eine Überlastung von Fragen gegeben hat,

Grüße, und ich danke Ihnen bereits zum Lesen es,

Benjamin

War es hilfreich?

Lösung

Der Garbage Collector hängt nicht von einer MMU, obwohl es effizienter sein kann, wenn es einen gibt.

Wir nehmen zur Zeit nutzen es NULL-Verweis Ausnahmen ohne Kontrollen zu generieren: auf uclinux Sie die expliziten Kontrollen ermöglichen müssen (der Code bereits vorhanden ist, es muss nur aktiviert werden). Andere Leute berichteten mono auf uclinux verwenden, obwohl es hier wahrscheinlich einige Verbesserungen erforderlich, um die Quellen sind und dort, da wir es nie auf dieser Plattform testen (natürlich spreche ich über uclinux auf einer CPU-Architektur, die wir bereits unterstützen, wie ARM, Sie nicht angeben).

Wie bei anderen Kommentare, AOT und mkbundle sind weitgehend irrelevant für das, was Sie brauchen. Was Sie wirklich wollen, ist die Mono-Fußabdruck zu passen in zu reduzieren, was Ihr Gerät ermöglicht, finden Sie unter http: // www .Mono-project.com / Small_footprint für weitere Informationen.

Wenn es wurde mir die Entscheidung, würde ich immer ein regelmäßiges ARM Linux über uclinux wählt für die Ausführung von komplexer Software wie Mono- oder was auch immer Programm, das Sie benötigen auf Mono ausgeführt werden.

Andere Tipps

Wenn Ihre Geräte nicht über eine MMU haben, vielleicht könnten Sie Microsofts Open-Source- .NET Micro Framework . Es ist viel mehr als begrenzt .NET / Mono, und es ist ein Interpreter, kein JIT, aber es kann laufen auf viel begrenzte Hardware.

Mono can be as limited as you want it to be. If you're using a device that has no MMU, I'd look into Ahead of Time compilation.

mkbundle may also work as well, but I'm not sure that it can do without an MMU. That said, if you're using AOT, you're going to be using mkbundle first to pull in all the dependencies.

If your company wants to target embedded Linux boards via MONO, and all that is needed is to transfer some application that already runs on desktop windows computer, then you will probably have very little problems. But if you want to talk to some IO, I2C, SPI, 1-Wire and other peripherals, you will have a problem to access them via MONO and you will probably have to make some translator (probably written in GCC) that will be a gateway between real hardware and your MONO application.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top