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
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
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
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
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.
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
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.