Hinweis: Ich bin seit Mitte September 2015 Raspberry, Raspbian und Linux-Neuling. Ich beschreibe hier, wie ich mein System konfiguriert habe und wie ich denke, dass die Zusammenhänge sind. Das muss nicht immer richtig sein und wird viele Lücken lassen. Sinn dieser Dokumentation ist es nicht, ein Raspbian-Tutorial zu schreiben, sondern eine Option zu besitzen, ein "versautes" System wieder herzurichten oder neu aufzusetzen.
Die folgenden Angaben beruhen auf der Raspbian-Version 2015-09-25, basierend auf "Debian Jessie", im Paket von NOOBS 1.4.2 auf einem Raspberry Pi 2 Modell B.
Software entwickeln auf und für den Raspberry Pi.
Inhaltsverzeichnis
1. Java installierenBei der NOOBS 1.4.2 Version wird ein aktuelles Java Version 1.8 mit installiert. Hier muss nichts weiter gemacht werden. Ggf. sollte man dies noch einmal überprüfen:
01: $ java -version
02: java version "1.8.0"
03: Java(TM) SE Runtime Environment (build 1.8.0-b132)
04: Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)
05: $ javac -version
06: javac 1.8.0
Sind mehrere Java-Versionen installiert, kann die gültige mit
sudo update-alternatives --config java
ausgewählt werden:
$ sudo update-alternatives --config java
Es gibt 2 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen).
Auswahl Pfad Priorität Status
------------------------------------------------------------
0 /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java 1063 automatischer Modus
1 /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java 1063 manueller Modus
* 2 /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/bin/java 318 manueller Modus
Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 1
update-alternatives: /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java wird verwendet,
um /usr/bin/java (java) im manuellen Modus bereitzustellen
ACHTUNG: javac muss separat konfiguriert werden!
sudo update-alternatives --config javac
Eclipse installiert man mit folgender Anweisung:
sudo apt-get install eclipse
Die Installation dauert eine Weile, weil viel herunter geladen werden muss. Hierbei werden auch eine Reihe von Development Kits und sogenannten Perspectives gleich mit installiert, u.a. auch die für Java.
Sicherheitshalber kann man noch einmal separat verlangen, dass das Java-Development-Kit herunter geladen wird. Bei mir wurde nichts nachinstalliert.
sudo apt-get install eclipse-jdt
Durch die Installation wurde eine ältere Java-Version als Standard festgelegt.
$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-1~deb8u1+rpi1)
OpenJDK Zero VM (build 24.79-b02, mixed mode)
Dies kann man jedoch anpassen:
$ sudo update-alternatives --config java
Es gibt 2 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen).
Auswahl Pfad Priorität Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java 1063 automatischer Modus
1 /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java 1063 manueller Modus
2 /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/bin/java 318 manueller Modus
Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 2
update-alternatives: /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/bin/java wird verwendet,
um /usr/bin/java (java) im manuellen Modus bereitzustellen
$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)
Das gleiche dann noch einmal mit javac.
Danach steht Eclipse im garfischen Desktop unter Menü -> Entwicklung -> Eclipse zur Verfügung:
Beim Start muss man ein wenig Geduld haben. Es dauert ein wenig, bis nach dem Anklicken etwas passiert. Als erstes zunächst das Verzeichnis für den Workspace abgefragt. Hier kann man gleich anhaken, dass dieser Workspace im Folgenden standardmäßig genutzt werden soll.
Es erscheint die "Welcome"-Seite. Hier muss man noch die passende Perspektive öffnen um mit Java loslegen zu können.
Danach erscheint die Java-Perspektive von Eclipse:
Zum Test sollte "Hello World" in der Raspberry-Version ausprobiert werden. Beim Anlegen des ersten Java-Projekts, muss man darauf achten, dass die korrekte JRE-Version eingestellt wird. Am besten nimmt man die Standardeinstellung, die auf die Version 1.8 hinausläuft (s.o.).
Java-Projekt HalloPi anlegen: Menü File -> New -> Java Project
Klasse HalloPi anlegen: Menü File -> New -> Class:
Es wird automatisch eine Code-Vorlage für eine Java-Klasse erstellt:Danach muss man nur noch die Ausgabe-Anweisung
System.out.println("Hallo Pi");
eingegeben werden (1). Wenn dann das Programm gestartet wird (2) erscheint an Position (3) die Ausgabe "Hallo Pi".
Das Pi4J-Projekt ermöglicht unter Java die Verwendung der GPIO-Pins, dem UART, des I2C-Bus und der SPI-Schnittstelle. Es bietet ein bequem zu benutzendes, objektorientiertes I/O-API und I Bibliotheken für Java-Programmierer, um auf die volle I/O-Fähigkeiten der Raspberry Pi Plattform zugreifen zu können. Dieses Projekt abstrahiert die Low-Level Native-Integration und das Interrupt-Monitoring.
Pi4J basiert und und benötig die WiringPi-Bibliothek von Gordon Henderson. Diese muss zuerst installiert werden.
WiringPi benötigt für seine Ausführung root-Rechte. Zum Schluss wird deshalb gezeigt, wie man von Eclipse aus, Java-Programme mit root-Rechten starten kann, ohne das Eclipse selbst root-Rechte besitzt.
WiringPi ist eine C-Bibliothek für Rapsbian und bietet I/O-Funktionen, die denen des Arduino-Wiring-Systems entsprechen. Auf der Homepage findet man sowohl eine ausführliche Installationsanleitung und als eine vollständige Referenz.
Die Installation ist recht einfach. Die folgende Beschreibung geht davon aus, dass man als User "Pi" angemeldet ist und sich im Verzeichnis /home/pi befindet.
WiringPi wird in GIT gehostet und kann von dort herunter geladen werden. Ist GIT noch nicht installiert, kann dies über die folgende Anweisung geschehen:
sudo apt-get install git-core
Die Quellen von WiringPi herunteladen:
git clone git://git.drogon.net/wiringPi
Installieren und Kompilieren aus dem /home/pi/wiringPi heraus:
./build
Test der Funktionsfähigkeit:
$ gpio -v
gpio version: 2.29
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Model 2, Revision: 1.1, Memory: 1024MB, Maker: Sony [OV]
Device tree is enabled.
This Raspberry Pi supports user-level GPIO access.
-> See the man-page for more details
$ gpio readall
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | |
| 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
Die Installation ist sehr einfach und bedarf nur einer Anweisung:
curl -s get.pi4j.com | sudo bash
Nach erfolgreicher Installation teilt das Installationsscript mit, wo die Dateien gelandet sind:
...
The Pi4J JAR files are located at:
/opt/pi4j/lib
Example Java programs are located at:
/opt/pi4j/examples
You can compile the examples using this script:
sudo /opt/pi4j/examples/build
Please see http://www.pi4j.com for more information.
Versucht man in Eclipse ein der Beispielprogramme aus der IDE heraus zu starten, erhält man folgende Fehlermeldung:
WiringPi muss root-Rechte besitzen! Man kann kann natürlich Eclipse mit root-Rechten starten, aber das ist recht gefährlich.
Mit folgendem Verfahren kann kann man erreichen, das die auszuführenden Programme mit root-Rechten gestartet werden können. Gefunden habe ich die Anleitung hierzu bei stackoverflow in einem Post mit dem Titel "How do I run my application as superuser from Eclipse? ". Leider ist sie für eine andere Java-Version. In diesem Abschnitt die übersetzte Version für JRE 1.8.
Das Ganze funktioniert wie folgt:
Um sich lange Pfad-Angaben zu sparen, wechselt man besten in den Pfad, in dem sich java befindet.
cd /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/bin
java umbenennen in java.ori.
sudo mv java java.ori
Eine neue Datei java erstellen mit folgendem Inhalt ...
#!/bin/bash
# file: /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/bin/java
# descr: Starter for jdk. Runs jdk as root when
# cmd-line-arg "--run-as-root" is specified.
#
jre="/usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/bin/java.ori"
run_as_root=false
args=
# Filter command-line argument
for arg in "$@"
do
case "$arg" in
--run-as-root) run_as_root=true
;;
*) args="$args $arg"
;;
esac
done
# Remove leading whitespaces
args=$(echo $args | sed -e 's/^[ \t]*//')
if $run_as_root
then
echo "WARNING: Running as root!"
echo executing "$jre $args"
sudo $jre $args
else
$jre $args
fi
oder von Ullis Roboter Seite herunter laden:
sudo wget http://ullisroboterseite.de/java
Die Datei ausführbar machen:
sudo chmod 0755 java
Eclipse starten, zu Window->Preferences->Java->Installed JREs wechseln und den bestehenden Eintrag duplizieren:
Im sich öffnenden Dialog folgende Spezifikationen für die neue Runtime machen:
Name: "root-jdk-8-oracle-arm-vfp-hflt" (Jeder beliebige andere Name tut es auch)
Default Argument: "--run-as-root"
Nun existieren zwei JRE-Definitionen. Die angehakte ist übrigens die "Workspace default JRE".
Wenn nun ein neues Projekt gestartet wird, muss man die passende JRE aussuchen:
Beim angelegten Projekt muss die Pi4J-Bibliothek noch in den Build Path eingetragen werden:
Es müssen alle vier .jar Dateien aus dem Verzeichnis /opt/pi4j/lib hinzugefügt werden.
Startet man nun das Projekt, dann läuft's ...
Anm.: Der "Xlib"-Fehler ist ein Problem mit der Monitor-Auflösung.
Bestehendes Projekt anpassen
Ein bestehendes Projekt passt man wie folgt an. Projekt markieren und das Eigenschaften-Fenster ("Properties" im Kontext-Menü) öffnen.
Doppelkick auf die JRE-Zeile führt zu einem weiteren Dialog, mit der man die JRE einstellen kann:
Fertig ....