Real-Time and Embedded Systems

leJOS

lejOS ist eine Java Virtual Machine für den RCX. Programme für lejOS werden an einem gewöhnlichen Linux- oder Windows-Rechner mit einem gewöhnlichen Java-Compiler erstellt. Ein Crosscompiler ist hierfür also nicht erforderlich.

Systemvoraussetzungen:

  • Linux (jedes UNIX sollte aber auch gehen) oder Win32
  • JDK 1.1 oder neuer. Bei 1.4 lejosc mit "-target 1.1" aufrufen! Das bin-Verzeichnis des JDK sollte im PATH sein.

 

Installation unter Linux:

  • leJOS von http://lejos.sourceforge.net/ herunterladen. Dann diese Datei auspacken.
  • bin-Verzeichnis von lejOS dem PATH hinzufügen.
  • "make" im lejOS-Homeverzeichnis ausführen.
  • RCXTTY auf com-device setzen, der für den Upload an den RCX benutzt wird, z. B:
    export RCXTTY=/dev/ttyS0
  • Sicherstellen, daß die nötigen Rechte vorhanden sind (lesen und schreiben)!
  • Firmware downloaden mit
    lejosfirmd

 

Beispiel für Kompilieren und Upload

Das Beispielprogramm lcdtest.java wird folgendermaßen compiliert:

Listing für Icdtest.java:

import josx.platform.rcx.*;
import java.lang.*;

class lcdtest
{
	public static void main(String[] args)
	{
		LCD.showNumber(23);
		try
		{
			Thread.sleep(1000);
		} catch (InterruptedException ie) {}
	}
}

Kompilieren:

  # Kompilieren.
  # Beim JDK 1.4.?: lejosc -target 1.1 lcdtest.java

  lejosc lcdtest.java

  # Linken und Upload geht in einem Befehl.

  lejos lcdtest

  # Jetzt die Run-Taste auf dem RCX drücken. Auf dem Display
  #  sollte für eine Sekunde eine "23" erscheinen.

 In dem Rechnerpool im Hochhaus R. 802 sind die Dateien für lejOS fertig installiert (mit 1.0.5) in /home/rtj/lejos. Dort wird folgendermaßen gearbeitet:

  export RCXTTY=/dev/ttyS0
  export PATH=/home/rtj/lejos/bin:$PATH
  lejosfirmdl
  lejosc -target 1.1 lcdtest.java
  lejos lcdtest

Einschränkungen der Virtual Machine

  • kein Garbagecollector
  • keine switch-Anweisungen möglich
  • keine Berechnungen mit long-Variablen
  • arrays sind auf 511 Objekte begrenzt
  • Einschränkungen bei instanceof (immer true bei Interfaces)
  • kein instanceof und checkcast bei Array-Klassen
  • keine Objekte vom Typ java.lang.Class
  • die meisten JDK-APIs stehen nicht zur Verfügung

 

Wichtige Links

  • Homepage von leJOS
  • API zu leJOS
  • tinyVM, eine Alternative zu lejOS. Vorgänger des lejOS, dementsprechend nicht so weit entwickelt. Wegen ihrer geringen Größe (9 kB statt 16 kB) allerdings ggf. die bessere Wahl.

 

Noch eine Anmerkung

 Zur Installation mehrerer Programme auf dem RCX einfach linken und uploaden mit:

lejos programm1, programm2, programm3, ...

Auf dem RCX mit der Prgm-Taste zwischen den Programmen umschalten.