2009-03-16 4 views
7

Ich suche Embedded Coding für ein Gerät, das etwa 20 MHz ist, hat 6 MB RAM, mit einem ARM32-Prozessor. Kann jemand die beste/am besten geeignete Sprache für die Programmierung eines eingebetteten Systems vorschlagen? Ich erwäge:Vorschläge für die am besten geeignete (beste) Sprache für die Programmierung eines eingebetteten Systems?

  • Lua
  • TinyPy
  • C
  • Java ME
  • C#
  • jemand
  • JavaScript

Irgendwelche Vorschläge vorgeschlagen hat? Danke

Bearbeiten - sieht aus wie C und Lua sind die Gewinner. Prost alles!

Bearbeiten - Echtzeit ist kein Problem, es ist mehr die begrenzte RAM/CPU diktieren Dinge.

Antwort

4

Ich habe used Lua on an ARM OMAP processor. Lua enge Integration mit C zum Metall ermöglicht gehen, wann immer Sie brauchen, und seine geringe Größe macht es für eine breite Palette von Plattformen geeignet. Ich entwickelte die Benutzeroberfläche für meine Firmware in Lua auf meinem Mac und brachte es dann ohne Änderungen an der Embedded-Plattform über.

Während der OMAP Prozessor bulligen war genug, um andere Sprachen wie Java oder Python zu laufen, ich wusste nicht, was ich Hardware-Targeting wurde, als ich den Code gestartet. Lua war eine sichere Wette.

4

Ich wäre versucht, mit geraden C zu gehen, aber dann schreibe ich C seit fast 30 Jahren. Lua und TinyPy erscheinen mir zu neu, experimentell; Embedded-Geräte müssen sehr robust sein.

Java ME hat gute Punkte. Ich weiß nichts über C# in einer eingebetteten Welt.

+1

Noch eine Skriptsprache könnte robuster Code aus den gleichen Gründen, die es in Serverland führt: Zeigerarithmetik und Speicherverwaltung aus der Verantwortungsliste des Programmierers entfernt . – slim

+0

Nein, es bedeutet nur, dass die Verantwortung an die Codierer der Skriptsprache weitergegeben wurde, während das Problem der dynamischen Tippfehler hinzukommt. WENN die Implementierung von Lua oder TinyPy fehlerfrei wäre, hättest du im Großen und Ganzen recht, aber sie sind furchtbar neu für mich. –

+1

Lua gibt es seit '93 (veröffentlicht im Jahr 1994) und der Motor ist Open Source. Ich würde behaupten, das ist so vertrauenswürdig wie viele Compiler für C und C++. – patros

6

C ist wahrscheinlich Ihre beste Wette für solche begrenzten CPU-Ressourcen.

+2

Vergessen Sie nicht, dass Leute in BASIC auf 2MHz 8 Bit 6502 Prozessoren mit 16K RAM vollkommen brauchbare Anwendungen geschrieben haben. Wenn Sie das letzte bisschen Leistung rausholen müssen, verwenden Sie C - aber die beschriebene Hardware schließt Interpreter nicht aus. – slim

+0

Ich stimme zu, ging nur mit der sichersten Antwort, da die OP gab keinen Hinweis darauf, was sie eigentlich mit dem Gerät tun wollte. – patros

+0

Für einen Embedded-Prozessor, mit 6 MB ist bei weitem nicht begrenzt. Zum Beispiel hat der kleinste PIC10F 16 Bytes RAM und 384 Bytes Flash. Dafür programmieren Sie in Assembler. :-) –

1

Bearbeiten: hmm. Mir ist gerade aufgefallen, dass es sich bei dem "Embedded", das Sie zu beschreiben scheinen, nicht darum handelt, eine Automatisierungssprache zu einer Anwendung hinzuzufügen, sondern eine Anwendung in eine eingebettete Plattform zu pressen. Wie andere empfehlen, überspringe eingebettete Sprachen und programmiere deine Anwendung in C, außer du benötigst sie wirklich. Es gibt fast keinen Laufzeit-Overhead für das, außer für das, was du tatsächlich benutzt.

In keiner bestimmten Reihenfolge sind Lua, JavaScript und TCL sehr gut zum Einbetten geeignet. Lua war für mich am einfachsten einzubetten. Javascript könnte der schnellste sein. Alle drei haben eine gute Handhabung für nicht vertrauenswürdigen Code, aber TCLs sind am robustesten. Zum Beispiel kann nicht vertrauenswürdiger Code nicht vertrauenswürdigen Code ausführen (wenn man davon ausgeht, dass er dies tut).

+0

Javascript - das ist eine interessante Idee! Wie wäre das? – Chris

+0

naja, ich habe vor ein paar Jahren noch nichts neueres als spidermonkey probiert, aber es ist ziemlich einfach, solange man das globale Objekt nicht überschreiben muss. Das hat mich sehr verwirrt. – SingleNegationElimination

8

Wenn Sie das Gerät von Grund auf neu aufbauen oder direkt mit Nicht-Standard-Peripheriegeräten arbeiten, ist C die einzige Möglichkeit.

Wenn Sie bereits ein Embedded-Betriebssystem haben oder eines problemlos portieren können, haben Sie möglicherweise mehr Flexibilität beim Hinzufügen einer der Skriptsprachen. C# kommt nur in WinCE in Frage, dann sind Sie auf .NET Micro beschränkt.

Darüber hinaus, „bester“ hat wenig Sinn, ohne zu beschreiben, was Ihr Gerät werden wird verwendet. Manche Sprachen unterstützen bestimmte Aufgaben besser als andere.

+3

Nicht einverstanden. http://en.wikipedia.org/wiki/NET_Micro_Framework –

+0

ARM ist nicht gerade exotisch ... es ist weit verbreitet in Embedded-Systemen, vor allem als CPU-Kern eines Systems auf einem Chip. – RBerteig

4

Es ist wichtig anzugeben, was Sie von diesem Gerät erwarten. Ist es eine Art Kontrollanwendung? Muss es Algorithmen implementieren? Was ist mit Gleitkommaunterstützung? GUIs? Ist die Leistung kritisch? Planen Sie ein Betriebssystem zu verwenden?

Die Beantwortung dieser Fragen ist eine entscheidende Voraussetzung für die Auswahl einer Programmiersprache.

Das heißt, eingebettete Systeme müssen zuverlässig sein, also würde ich mich für eine getestete Lösung entscheiden. C ist wahrscheinlich die stabilste und am besten unterstützte Option für ARM-Chips, aber YMMV hängt von Ihren spezifischen Anforderungen ab.

1

Sofern Sie kein RTOS zur Verfügung haben, das eine Vielzahl von alternativen Sprachen unterstützt, ist C oder C++ (abhängig von Ihrer Compiler-Kette) der richtige Weg.

1

Ihre Entscheidung wird höchstwahrscheinlich von den für diesen Prozessor verfügbaren Tools bestimmt.

C ist bei weitem die am meisten unterstützte Sprache für Embedded-Prozessoren, so dass Sie damit nicht weit gehen können, und es wird eine gute Erfahrung sein, wenn Sie Software für andere Chips in der Zukunft schreiben müssen.

C++ wird immer beliebter für Embedded-Systeme. Darüber hinaus hängt es von Ihren Prioritäten ab (Time-to-Market, Ressourcenverbrauch, Geschwindigkeit) und der Qualität der von Ihnen verwendeten Tools.

1

C die beste

2

C ist sicherlich die am häufigsten verwendete Sprache in eingebetteten Systemen. Es scheint auch die am meisten gesprochene Sprache im Allgemeinen http://www.langpop.com/

Verwandte Themen