Forum: Mikrocontroller und Digitale Elektronik Java für AVR???


von C. Lechner (Gast)


Lesenswert?

Hallo,

(für den Fall, dass meine Frage totaler Mist ist, bitte nicht schlagen
sondern den Post einfach ignorieren! :-)

gibt es eigentlich soetwas wie eine sehr primitive Java Virtual Machine
für AVR Controller in OpenSource? Sie muss natürlich nicht die
Java-Runtime-Library unterstützen ...

TIA
- C. Lechner

von thomas (Gast)


Lesenswert?

mmmh gute Frage, weiß auch nicht ob es eine JVM für AVR Controller gibt
und dann noch Open Source.

Ich glaub es ist fast nicht möglich eine JVM + Programm in so wenig
Speicher unter zubringen.
Was ich mir eher vorstellen könnte ist eine IDE in der man mit Java
programmiert und dann daraus ein Programm erzeugt wird das man in den
Chip lädt. So etwas müsste mit dem gcc möglich sein, nur bisher noch
beschränkt auf normale PC-Programme.


Aber es gibt zwei kommerzielle Sachen
1. JControl www.jcontrol.org
2. Javelin Stamp http://elmicro.com/de/javelin.html
Aber ob die AVR's benutzen weiß ich nicht

von ejd (Gast)


Lesenswert?

Es gibt eine lightweight JVM, heisst Waba, auch eine GPLed Erweiterung
davon, heisst SuperWaba. Ich kann mich noch daran erinnern, die Quellen
von SuperWaba angesehen zu haben, und es sind 3 (zugegeben, größere)
C-Dateien. Ich weiss nicht, ob das Ergebnis ins Flash eines AVRs passen
wird (obgleich ich schätze, dass zumindest der ATMega128 es schon
verkraften könnte), aber ein Versuch wäre es wert.

mfG,
                                        ejd

von Tom (Gast)


Lesenswert?

Hi Leute

Ich hab mal an der HTA Luzern (FH in der Schweiz) Java auf einem
Mikrocontroller gesehen. Hier ein Link auf eine Projektbeschreibung:
http://www.ceesar.ch/cms/upload/pdf/Paper%20Wireless%20Webserver%20HTA%20Luzern.pdf

Vielleicht hilft dir das weiter. Als Mikrocontroller wird der Freescale
MC9S08 verwendet.

FG

Tom

von ape (Gast)


Lesenswert?

Das Problem bei "richtigem" Java ist, das durch den konsequenten
Objektorientierten Ansatz ser viel RAM benötigt wird, da die Objekte ja
erst zur Laufzeit im RAM erzeugt werden. Da ist auch ein mega128 mit 4kB
SRAM ganz schnell am Ende.

von ejd (Gast)


Lesenswert?

Man muss halt bedenken, dass JVM im Grunden genommen ein Emulator ist
(Java Virtual Machine). Die Spezifikationen der JVM sind recht offen.
Schafft man die JVM auf einem AVR (zumindest ansatzweise) zu emulieren,
kann man dann weiter über irgendwelche Klassenbibliotheken nachdenken.
Ansonsten bleibt es noch hinzuzufügen, dass die JVM mit kleinsten
Speicheranorderungen, nämlich die, die bei J2ME-Speifikation eingesetzt
wird, einen Preverifier nutzt, um die langwierigen
Sicherheitsüberprüfungen nicht auf dem Target auszuführen. Da braucht
man aber doch einige Hunderte von Bytes pro Klasse.

mfG,

                                               ejd

von Tom (Gast)


Lesenswert?

@ape: Ist das bei C++ auch so? AFAIK nur wenn man Objekte mittels new
auf dem Heap erzeugt. Objekte im Stack sollten schon zur
Kompilationszeit erzeugt werden können, oder sehe ich das falsch?
Ich überlege mir gerade, ob ich auf meinem MSP430 C++ oder doch C
verwenden soll. Momentan tendiere ich Aufgrund des sauberern Codes eher
zu C++. Leider gibt es aber noch keine Implemenation der
Standard-Library für diesen uC.

Hat jemand Erfahrungen oder Empfehlungen parat?

FG & Thanks

Tom

von ape (Gast)


Lesenswert?

Naja bei Java erzeugt man ja auch jedes Objekt mit new :)
Ich hab leider keine Ahnung von C++, aber wenn die Objekte da auf dem
Stack erzeugt werden, brauchen sie ja genauso RAM (der Stack liegt ja
auch im RAM)
Ansonsten ist C++ eben wegen der fehlenden Libraries auf dem
Mikrocontroller eher schwierig und es bringt halt wegen dem sehr
kleinen RAM auch keine großen Vorteile.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.