Forum: Mikrocontroller und Digitale Elektronik Foxboard G20: I2C-Bus per JAVA ansteuern


von Florian L. (fdl)


Lesenswert?

Hallo Forum-Gemeinde,
wie man auch an meiner Neuanmeldung hier im Forum erahnen kann, ist dies 
mein erstes Projekt mit einem Foxboard, bzw. mein erstes eigenständiges 
Projekt mit einem Mikrocontroller überhaupt. Da ich recht fit in 
Informatik und der Programmierung mit JAVA bin, traue ich mir das 
trotzdem zu :)

Ich habe also folgende Frage: Weiß jemand von Euch wie man unter einem 
Foxboard G20 mit installiertem JAVA JRE per JAVA Code den I2C Bus 
ansteuern (schreiben und lesen) kann bzw. wo ich ein Tutorial oder 
ähnliches zu dem Thema finden kann?

Über jede helfende Antwort wäre ich sehr dankbar, da ich diesbezüglich 
leider etwas auf dem Schlauch stehe!

Viele Grüße
Florian

von licht (Gast)


Lesenswert?

Hallo Florian,
mit Java kannst Du ja nicht direkt auf die Hardware zugreifen.
Deshalb schreibst Du diese Funktionalität in C und erzeugst Dir daraus 
einen Treiber (JNI).

Die Frage ist jetzt nur:
Hat jemand sowas für das Foxboard schon geschrieben, oder musst Du's 
selbst machen.

von Florian L. (fdl)


Lesenswert?

Hallo licht,
danke für deine Antwort - das dachte ich mir schon irgendwie, dass ich 
mit JAVA nicht direkt Zugriff auf die Hardware bekommen kann. Alternativ 
zu JNI sollte aber auch JNA eine Möglichkeit sein - dann wäre nur die 
Frage wie der Native Aufruf unter Linux lauten würde. Damit wäre es ja 
dann schon eigentlich getan, denn die Auswertung würde ich ja dann in 
JAVA erledigen können...

Kennt also vielleicht jemand die nativen Linux-Funktionen zum 
ansprechend des I2C-Bus bzw. zum ansprechen beliebiger Devices?

Grüße
Florian L

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?


von L. G. (macuser)


Lesenswert?

Als ergänzung zu Nils

http://www.easysw.com/~mike/serial/serial.html#3_1

Hier ist sehr gut die iloct Klasse beschrieben, geht  aber allgemein um 
Serial Kommunikation,
ohne auf IC2 einzugehen.

von Florian L. (fdl)


Angehängte Dateien:

Lesenswert?

Hallo liebe Leute,
nachdem ich mich nun nochmal intensiv hinter das Ganze geklemmt habe, 
bin ich endlich auch fündig geworden. Mit der RXTX-Library lassen sich 
unter Linux/Ubuntu die Serielle und die Parallele Schnittstelle 
ansprechen. An einem virtuellen System hat es nach dem Kopieren der 
Bibliotheken in die richtigen Ordner letztlich funktioniert - bzw. Java 
konnte alles kompilieren. Via Schnittstelle ging nicht, da es unter 
VirtualBox keine gibt. Also habe ich nun das FoxBoard in Betrieb 
genommen und war dem Verzweifeln nahe. Laut Herstellerseite sollte ich 
mit dem Befehl
>> apt-get install default-jre
das Standard-JRE installieren können - von wegen! Quittiert wurde mir 
das mit dieser Meldung (siehe Anhang 1).
Also habe ich nach Einbindung der nötigen Repositories versucht das Sun 
JRE zu installieren - hier fehlte letztlich jedoch immer das 
sun-java6-bin package - allerdings beschrieben mehrere Online-Tutorials 
genau meine Vorgehensweise, nur mit dem Unterschied, dass es dann 
letztlich lief :{
Nächster Schritt: Donwload der BIN-Datei von java.com - die Installtion 
hat leider auch nur Fehlermeldungen ergeben (siehe Anhang 2).

Mittlerweile bin ich leicht am Verzweifeln, daher meine Frage, hat 
vielleicht jemand schonmal Java auf dem FoxBoard G20 mit Debian Lenny 
zum laufen bekommen?

Viele Grüße
Florian L

von Mork (Gast)


Lesenswert?

Das binary heisst "jre-6u27-linux-i586.bin", d.h. es ist für x86 
Prozessoren gedacht ("i586"). Auf Deinem Board ist aber ein ARM9 drauf. 
Du wirst die RXTX Lib für Dein Board also selbst kompilieren müssen.

Auf http://rxtx.qbang.org/wiki/index.php/Installation_on_Linux gibts ne 
Anleitung, versuchs mal damit.

MfG Mark

von Mork (Gast)


Lesenswert?

Sorry bin um die Uhrzeit wohl etwas neben der Spur^^, hab gedacht Du 
hättest Java schon installiert bekommen und bist jetzt an RXTX dran. 
Ändert aber trotzdem nichts daran, dass jre-6u27-linux-i586.bin auf 
Deinem Board nicht lauffächig ist.

Generell ist Java auf so einem Board natürlich möglich, das Problem 
scheint mir in Deinem fall eher beim Server zu liegen, wo die Pakete 
heruntergeladen werden. Versuchs mal mit einem anderen Mirror, z.B. 
http://ftp.de.debian.org/debian anstatt http://ftp.it.debian.org/debian. 
Also in /etc/apt/sources.list ändern und danach apt-get update 
ausführen. Dann sollte man Java direkt durch "apt-get install 
default-jre" installieren können. Auf meinem Mini2440 hat das vor ein 
paar Monaten noch funktioniert.

MfG Mark

von Florian L. (fdl)


Lesenswert?

Hallo Mork,
vielen Dank für deine Antwort - ich werde das nachher (es ist ja doch 
schon etwas später^^) ausprobieren und mich dann wieder melden. Das RXTX 
werde ich aber wahrscheinlich trotzdem selbst kompilieren müssen - die 
.so-Bibliothek dürfte sonst wahrscheinlich ja nicht laufen, oder? Naja, 
wenn JAVA läuft werde ich das ja schnell merken^^

Danke nochmal!

Viele Grüße
Florian L

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Vermutlich wäre es einfacher wenn du dir ein eigenes JNI schreibst, gibt 
es vom Hersteller des Boards keine Codebeispiele in C für den I2C?

von Florian L. (fdl)


Lesenswert?

Hallo,
nachdem ich nun das Repository geändert habe und die Systemzeit mal 
richtig eingestellt habe (die war noch im Jar 1970...^^) ließ sich das 
Default JRE installieren - dahinter verbirgt sich übrigens GNU Java. Das 
RXTX-Paket ließ sich auch installieren, da anscheinend ein ARM-Package 
vorhanden ist. Das Foxboard hat meine ich einen arm5-Prozessor - auf 
jeden Fall sagt das Debian.

Nachher werde ich dann mal testen, ob RXTX auch funktioniert - ansonsten 
muss ich wohl den Weg über JNI gehen...

Danke nochmal an alle!

Viele Grüße und einen schönen sonnigen Sonntag!
Florian L

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.