Cubietruck
Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade. |
Einleitung
Das Cubieboard 3 oder der Cubietruck ist ein, dem Raspberry Pi nicht unähnlicher Einplatinencomputer, auf dem auch Debian und einige Derivate laufen.
Frühere Linuxversionen haben die Hardware des Cubietruck noch nicht vollständig unterstützt, weswegen meist ein angepasster Kernel aus dem linux-sunxi Projekt [1] zum Einsatz kam. Inzwischen unterstützt der offizielle Linuxkernel, der in diesem Zusammenhang meist „Mainline Kernel“ genannt wird, den Großteil der Hardware. Damit führt der „linux-sunxi Kernel“ nur mehr ein Schattendasein und wird auch „Legacy Kernel“ genannt, vermutlich weil er nicht in aktuellen Versionen zur Verfügung steht. In diesem Artikel geht es hauptsächlich um den bei Updates pflegeleichteren „Mainline Kernel“.
Installation von Debian
fertige Images
Am einfachsten kommt man mit einem fertigen auf den Cubietruck und den gewünschten Einsatzzweck zugeschnittenen Image zu einem laufenden Debian oder Debianderivat. Die Images haben den Vorteil, dass sie im Allgemeinen die benötigten Firmwaredateien bereits enthalten. Beispiele für solche Images sind:
- armbian: https://www.armbian.com/, armbian-Images gibt es aktuell (Stand Dezember 2017) mit
- „Mainline Kernel“ basierend auf Debian, nur für die Kommandozeile bzw. den Textmodus oder Headlessbetrieb geeignet
- „Legacy Kernel“, auf Ubuntu aufbauend, für den Desktop- und Multimediabetrieb geeignet
- und zum selbst bauen. Mit einem build-Skript [2], [3] lassen sich selbst angepasste armbian-Images erstellen.
- Cubian: http://cubian.org/
- TODO: Cubian kenne ich nicht? Gibt es sonst noch etwas erwähnenswertes?
mit dem Installer von Debian
Installationsmedium
Für die Vorbereitung eines Installationsmediums sind zwei Dateien notwendig,
- die erste enthält den hardwarespezifischen Teil des Installationsimages mit der Partitionstabelle und dem Bootloader u-boot
- und der zweite den eigentlichen Installer.
Beide Teile lassen sich hier herunterladen: http://ftp.uk.debian.org/debian/dists/stretch/main/installer-armhf/current/images/netboot/SD-card-images/ Der zweite Teil heißt »partition.img.gz« und der erste im Falle des Cubietruck »firmware.Cubietruck.img.gz«. Für die Installation werden beide Teile zu einem Image zusammengefügt und auf eine microSD-Karte geschrieben, auf der im weiteren Verlauf dann auch die Debianinstallation stattfindet. In der Annahme die Speicherkarte steht als »/dev/sdx« zur Verfügung geschieht das nach dem Herunterladen der beiden Dateien mit
root@debian:~# zcat firmware.cubietruck.img.gz partition.img.gz > /dev/sdx
Hinweis: Es ist wichtig die Gerätedatei der kompletten microSD-Karte und nicht nur die einer Partition anzugeben. Beim Schreiben des Images gehen die auf der microSD-Karte gespeicherten Daten verloren. |
die eigentliche Installation
Nun muss von der vorbereiteten Speicherkarte gebootet werden und es ist überaus hilfreich, wenn dabei ein Monitor und eine Tastatur am Cubietruck angeschlossen sind. Außerdem ist für die Installation eine Internetverbindung über die Ethernetschnittstelle notwendig. Nach dem Herstellen der Stromversorgung sollte mit ninimaler Verzögerung der Startbildschirm von u-boot erscheinen. Dort sind 2 Sekunden Zeit um den Bootvorgang zu unterbrechen und mit dem Setzen zweier Variablen in u-boot dafür zu sorgen, dass die restliche Installation am Bildschirm durchgeführt werden kann (und nicht über eine serielle Konsole).
uboot> setenv console tty1 uboot> setenv bootargs console=tty1 uboot> saveenv uboot> boot
Der letzte Befehl setzt den Bootvorgang fort und der Installer sollte auf dem Bildschirm erscheinen. Es wird automatisch alles für die weitere Installation notwendige aus dem Internet nachgeladen. Der Installer läuft danach im Hauptspeicher und die microSD-Karte von der gebootet wurde, kann bei der Installation bedenkenlos partitioniert und formatiert werden.
Von hier an läuft die Installation im wesentlichen wie auf einem normalen PC ab.
mit debootstrap
TODO: Partitionierierung und u-boot
Hardwareunterstützung
Firmwaredateien
...
gpio-Pins
im sysfs
Die gpio-Pins und LEDs lassen sich über das sysfs steuern. Die weisse LED des Cubietruck lässt sich beispielsweise mit
root@debian:~# echo 1 > /sys/class/leds/cubietruck:white:usr/brightness
root@debian:~# echo 0 > /sys/class/leds/cubietruck:white:usr/brightness
ein- bzw. ausschalten.
gpio-Pins müssen dagegen erst über das sysfs zugänglich gemacht und konfiguriert werden. ...
echo gpio3 > export echo out > direction echo 1 > value
...
WiringPi/WiringCB/WiringCT
Das (relativ langsame) sysfs lässt sich auch umgehen, zum Beispiel mit Bibliotheken wie WiringPi.
WiringPi lehnt sich an Wiring an, einer Entwicklungsumgebung für den Arduino und wurde für den Raspberry Pi geschrieben. WiringPi bietet damit eine einfache C-Bibliothek (python-Bindings) zum Ansprechen der gpio-Pins.
WiringCB ist eine Portierung auf ältere Cubieboards und wurde wiederum von einem sehr hilfsbereiten Mitglied (gkoala) des nicht mehr existierenden deutschen Cubieboard Forums auf den Cubietruck portiert und zur Verfügung gestellt.
Pakete
Die Software steht in Form eines Quellcodearchivs und drei für stretch gebauten Debianpaketen zur Verfügung:
- »wiringpi_2-1.deb«
Das Paket enthält das Kommandozeilentool »gpio« und die C Bibliothek. Dieses Paket wurde mit »dpkg-deb« gepackt, deshalb steht es nur als Binärpaket zur Verfügung. Der Quellcode steht lediglich als unverändetes Archiv zur Verfügung, das auch den Quellcode der anderen beiden Pakete enthält. - »python-wiringpi2_1.0.10-1_armhf.deb«
- »python-wiringpi2-dbgsym_1.0.10-1_armhf.deb«
Die zweiten beiden Pakete enthalten die python-Bindings und stehen sowohl als mit python-stdeb gebaute Binärpakete wie auch als Debian-Quellcodepaket zur Verfügung. Interessenten mögen sich hier oder per PN bei mir (smutbert) melden.
Beispiele zur Verwendung
Die Pakete enthalten auch einige, allerdings nicht an den Cubietruck angepasste, Beispiele. Trotzdem hier ein Beispiel zur Verwendung des Kommandozeilentools »gpio« und ein weiteres zur Verwendung mit python.
»gpio«
Mit diesem Kommandozeilenwerkzeug kann man sich sehr gut eine Übersicht über den aktuellen Zustand der gpio-Pins verschaffen
root@debian:~# gpio readall
+-----+-----+---------+------+---+--CubieTruck--+---+--+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 0v | | | 1 || 2 | | | 3.3v | | |
| | | AVCC | | | 3 || 4 | | | RESET | | |
| 0 | 8 | PC19 | IN | 0 | 5 || 6 | 0 | IN | PC21 | 9 | 1 |
| 2 | 10 | PC20 | IN | 0 | 7 || 8 | 0 | IN | PC22 | 11 | 3 |
| 4 | 12 | PB14 | IN | 0 | 9 || 10 | 0 | IN | PB16 | 13 | 5 |
| 6 | 14 | PB15 | IN | 0 | 11 || 12 | 0 | IN | PG17 | 15 | 7 |
| | | 0v | | | 13 || 14 | | | 0v | | |
| 8 | 16 | PI20 | IN | 0 | 15 || 16 | 0 | IN | PI14 | 17 | 9 |
| 10 | 18 | PI21 | IN | 0 | 17 || 18 | 0 | IN | PI15 | 19 | 11 |
| 12 | 20 | PI3PWM1 | ALT5 | 0 | 19 || 20 | 0 | IN | PB3 | 21 | 13 |
| 14 | 22 | PB2PWM0 | ALT5 | 0 | 21 || 22 | 0 | ALT5 | PB4 | 23 | 15 |
| 16 | 24 | PB18 | ALT5 | 0 | 23 || 24 | | | LINEINL | | |
| 17 | 25 | PB19 | ALT5 | 0 | 25 || 26 | | | LINEINR | | |
| | | CVBS | | | 27 || 28 | | | LRADC0 | | |
| | | 5v | | | 29 || 30 | | | LRADC1 | | |
| | | 3.3v | | | 31 || 32 | | | 3.3v | | |
| 18 | 26 | PG0 | IN | 0 | 33 || 34 | 0 | IN | PG3 | 27 | 19 |
| 20 | 28 | PG2 | IN | 0 | 35 || 36 | 0 | IN | PG1 | 29 | 21 |
| 22 | 0 | PG4 | IN | 0 | 37 || 38 | 0 | IN | PG5 | 1 | 23 |
| 24 | 2 | PG6 | IN | 0 | 39 || 40 | 0 | IN | PG7 | 3 | 25 |
| 26 | 4 | PG8 | IN | 0 | 41 || 42 | 0 | IN | PG9 | 5 | 27 |
| 28 | 6 | PG10 | IN | 0 | 43 || 44 | 0 | IN | PG11 | 7 | 29 |
| | | 0v | | | 45 || 46 | | | 0v | | |
| | | XP | | | 47 || 48 | | | TVIN0 | | |
| | | XN | | | 49 || 50 | | | TVIN1 | | |
| | | YP | | | 51 || 52 | | | TVIN2 | | |
| | | XN-BT | | | 53 || 54 | | | TVIN3 | | |
| 30 | 30 | LED gr | OUT | 0 | 55 || 56 | 0 | OUT | LED wh | 31 | 31 |
| 32 | 32 | LED or | OUT | 0 | 57 || 58 | 0 | OUT | LED bl | 33 | 33 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+--CubieTruck--+------+---------+-----+-----+
Links
weitere hilfreiche Informationen gibt es hier
- [1] http://linux-sunxi.orgi, Wiki des linux-sunxi Projekts. Interessant sind vor allem auch
- https://www.armbian.com/, armbian
- im Debianwiki: https://wiki.debian.org/InstallingDebianOn/Allwinner