Mein Hardwareteam plant, für ein zukünftiges Projekt einen Atmel AVR 8-Bit-Mikrocontroller zu verwenden.
Soweit ich weiß, muss es in C programmiert werden. Ich habe eine JVM für AVR gefunden, obwohl sie eingeschränkter ist als die nativen C-Bibliotheken von Atmel.
Können Sie mir einen 8-Bit-Mikrocontroller vorschlagen, der Java unterstützt?
PS. Ich kenne C nicht und bin unerfahren in der Mikroprozessorprogrammierung.
microcontroller
avr
java
sterz
quelle
quelle
big_floating_skirt
Objekt sein, das dieboat
Schnittstelle imorg.buoyant
Paket implementiert , undpole
Objekte, die ein seltsames Vererbungsmuster haben, anjava.net
das ich mich jetzt nicht erinnern kann (das aber in der UML klar beschrieben ist)?Antworten:
Wenn Sie im Bereich der Programmierung von Mikroprozessoren / Mikrocontrollern unerfahren sind, sollten Sie wahrscheinlich zuerst C lernen, damit Sie verstehen, wann und warum Java für die meisten Mikrocontroller-Projekte eine schlechte Wahl ist.
Haben Sie die Einschränkungen für die von Ihnen verlinkte JVM gelesen? Es enthält die folgenden Probleme:
Wenn Sie nicht wissen, was diese Einschränkungen bedeuten, stellen Sie sicher, dass Sie einen Plan B haben, wenn sich herausstellt, dass Sie das Projekt aufgrund der Platz- und Geschwindigkeitsbeschränkungen nicht mit Java ausführen können.
Wenn Sie immer noch mit Java arbeiten möchten, vielleicht weil Sie erwarten, dass das Gerät von vielen Leuten programmiert wird, die nur Java kennen, würde ich dringend empfehlen, größere Hardware zu erwerben, wahrscheinlich etwas, auf dem Embedded Linux ausgeführt wird. Auf dieser Seite von Oracle finden Sie einige Spezifikationen, auf die Sie zugreifen können, um die eingebettete JVM auszuführen. In den häufig gestellten Fragen (FAQ) werden mindestens 32 MB RAM und 32 MB Flash empfohlen. Das ist ungefähr das 32.000-fache des RAM und das 1.0000-fache des Flashs des AVR, den Sie betrachten. Auf der Java Embedded Intro- Seite von Oracle werden die Einschränkungen der JVM ausführlicher beschrieben. Ihr Tonfall ist, wie Sie sich vorstellen können, viel Java-freundlicher als meiner. Beachten Sie, dass diese Art von Hardware viel schwieriger zu entwerfen ist als ein 8-Bit-AVR.
Ich bin ein Student der Informatik mit einem Nebenfach Informatik. Die CS-Abteilung meiner Universität hat die Java-Kool-Hilfe getrunken, daher kennen viele Studenten des Ingenieurprogramms nur Java (was für einen Programmierer ein trauriger Zustand ist, lernen Sie zumindest Python oder C ++, wenn Sie dies nicht tun Ich möchte C lernen ...), also hat einer meiner Professoren einen C-Spickzettel für Studenten mit einem Jahr Java-Erfahrung veröffentlicht. Es sind nur 75 Seiten; Ich schlage vor, Sie lesen oder überfliegen es, bevor Sie eine Entscheidung treffen. Meiner Meinung nach ist C die effizienteste, dauerhafteste und professionellste Sprache, um ein eingebettetes Projekt zu entwickeln.
Eine weitere zu berücksichtigende Alternative ist das Arduino- Framework. Es wird eine abgespeckte Version der Wiring- Sprache verwendet, die C ++ ohne Objekte oder Header ähnelt. Es kann auf vielen AVR-Chips laufen, es ist definitiv nicht auf deren Hardware beschränkt. Es gibt Ihnen eine einfachere Lernkurve als nur direkt in C zu springen.
Abschließend
Alt-Text: Ich habe fünf Versuche unternommen, den richtigen zu finden, aber am Ende habe ich es geschafft, unsere Nacht - wenn nicht das Boot - zu retten.
quelle
Die beliebteste Programmierumgebung für den Atmel AVR ist Arduino . Die Arduino-Sprache ist eine Teilmenge von C ++.
Arduino "Skizzen" / Programme erscheinen syntaktisch sehr ähnlich zu Java. Die Wiring Sprache , die Arduino ergibt sich aus hat Implementierungen in C ++ ( Arduino ), Java ( Verarbeitung ) und Javascript ( processing.js ).
Beide Sprachen haben aufgrund ihrer gemeinsamen Abstammung in Algol68 denselben Deklarationsstil, dieselben Schleifenkonstrukte und dieselben arithmetischen Operatoren. In der Regel werden alle Objekte in Arduino global oder auf dem Stapel deklariert. Daher werden wie bei Java Mitgliedsfunktionen mit dem
.
Operator (z. B.LED.flash()
) aufgerufen .Die Sprache ist einem Java-Programmierer sehr vertraut - aber vor allem werden Arduino-Skizzen zu nativem Code kompiliert, der mit voller Geschwindigkeit und vollem Hardwarezugriff ausgeführt wird. Dies ist wichtig, um Ihren Mikrocontroller optimal nutzen zu können.
Hier ist die API .
Arduino bietet alles, was Sie brauchen, um loszulegen: kostengünstige Hardware, eine kostenlose integrierte Entwicklungsumgebung und einen Bootloader (damit Sie Code über USB / Seriell laden können).
quelle
Ich möchte klarstellen, dass ich noch nie einen benutzt habe, aber vor einem Jahr gab es den Speer. Es ist möglich, dass Parallax sie erworben hat oder so, denn jetzt taucht nur noch der "Speer-Stempel" auf. Vor Jahren gab es auch eine Firma namens Velocity Semiconductor, die (angeblich) die Kernmodule von Rabbit Semiconductor ersetzte und eine JVM in Hardware hatte, aber diese Firma ist anscheinend verschwunden. Viel Glück bei deiner Suche!
quelle
Sun Microsystems hat früher eine Plattform namens Sun Spot erstellt, die im Grunde eine eingebettete Java-Plattform war. Jetzt gibt es Sun Microsystems offensichtlich nicht mehr (Oracle hat sie gekauft), aber anscheinend können Sie immer noch Sun Spots kaufen - http://www.sunspotworld.com/products/ . Ich bin nicht besonders begeistert von der Idee, Java in einer eingebetteten Umgebung zu verwenden (falsche Abstraktionsebene für den Job imho), aber dies scheint die natürlichste eingebettete Plattform für Java zu sein. Beachten Sie die technischen Daten zu diesen Dingen - sie sind Hochleistungs-RAM mit 180 MHz / 512 KB und für 400 US-Dollar für ein Starter-Kit nicht billig.
Also werde ich ein zweiter oder dritter der Arduino Advocacy-Antwortenden auf diese Frage sein. Es gibt eine verdammt gute Community, die Sie unterstützt, wenn Sie Hilfe benötigen. Und wenn Sie Peripherie-Hardware benötigen, schauen Sie bei Google nach "Arduino Shields" und lassen Sie sich überraschen - Sie können alles tun, von Servo-Steuermotoren bis hin zu einem drahtlosen 802.11-Netzwerk mit der richtigen Kombination von Shields. Es ist nicht praktisch, C (Zeiger sagt was!?) Ohne Übungszeit zu lernen, aber Sie können in kürzester Zeit mit dem Schreiben von Arduino-Skizzen beginnen ... Sie können auch "echte" Arduino-Plattformen für etwa 30 USD und Klone (z. B. RBBB oder DorkBoard) für unter 15 US-Dollar.
quelle
Parallax macht den Javelin Stamp zu einem CoM (Computer-on-Module), auf dem eine JVM ausgeführt wird.
Es kostet 60 US-Dollar und führt unglaubliche 8.500 Java-Anweisungen pro Sekunde aus.
Auch die Platine ist rosa (Wirklich!)
quelle
Ajile-Systeme stellen eine Vielzahl nativer eingebetteter Java-Chips und Evaluierungskarten in Echtzeit her.
Sie laufen Bare-Metal-Java. Es ist sehr angenehm.
www.ajile.com machen die Chips und Bewertungsbretter.
www.systronix.com verkauft eine Vielzahl von eingebetteter Java-Hardware.
Ich habe AJ-100 von Ajile für anspruchsvolle Arbeiten verwendet. Es ist sehr schön, mit ihnen zu arbeiten. Und nein, sie sind nicht so billig wie ein AVR, aber sie verarbeiten Daten wie ein Low-End-Pentium.
Ajiles 'Chips reagieren auf Interrupts (Interrupt-Latenz) in weniger als 1 Mikrosekunde.
quelle
Meine persönliche Erfahrung ist, dass der C-Code zum Programmieren und Starten mit AVR ziemlich einfach ist. Ich komme auch aus vielen Jahren Java und nachdem ich ungefähr 2 Monate lang Arduino-Skizzen verwendet hatte, ließ ich die Umgebung fallen und entschied mich für avr-gcc-Sites wie avrfreaks machen es einfach, Antworten auf häufig auftretende Probleme zu finden. (Ich mache immer noch alles auf meinem vertrauenswürdigen Arduino Duemillenove)
Die Verwendung von Eclipse zum Kompilieren und "Bereitstellen", dh Schreiben auf den Chip, ist ebenfalls hilfreich, da ich mich nicht mit einer anderen IDE befassen muss
Ich denke, es ist tatsächlich schwieriger, sich mit Registern, 16-Bit-Registern und deren Lesen in der richtigen Reihenfolge, Interrupts, Timern und Hardware-PWM vertraut zu machen, als mit der Programmiersprache selbst.
quelle
Während ich in der Regel im Bereich "C lernen und verstehen, was Prozessoren tatsächlich tun" bin, wenn es um eingebettete Arbeit geht, sollte darauf hingewiesen werden, dass ein kleiner Armchip nicht viel teurer als ein AVR ist und fast plausibel ist Position, um einfache Aufgaben auf einem JVM zu erledigen.
quelle
NanoVM ist eine Java Virtual Machine, die für die Ausführung auf 8-Bit-AVR-Mikrocontrollern entwickelt wurde.
(von der Homepage)
quelle
Es ist nicht ganz Java - oder 8 Bit, aber es gibt einen Javascript-Interpreter für ARM-Mikrocontroller mit geringem Stromverbrauch namens Espruino .
quelle