ADXL345 als Input-Device
1 Vorgeplänkel
Beschleunigungssensoren (ADXL345) sind ja nahezu alltags-tauglich und begleiten mittlerweile fast jedermann im Smartphone oder Tablet. Interessant sind sie daher auch für eigene Spielerreien. Da ich noch ein eBay-Modul rumliegen hatte und sowohl für den Beschleunigungssensor als auch für das Raspberry Pi einen halbwegs sinnvollen Zweck finden wollte, dachte ich mir ich verheirate die beiden miteinander.
Überrascht war ich als ich sah, dass Analog Devices wohl recht aktiv in der Dokumentation und Entwicklung von Gerätetreibern unter Linux (device drivers) ist und es ein nahezu fertiges Kochrezept für das Raspberry Pi gibt.
2 Einrichten der Entwicklungsumgebung
# Arbeitsverzeichnis erzeugen
mkdir RaspberryPi
cd RaspberryPi
# Entwicklungstools klonen
git clone https://github.com/raspberrypi/tools.git
# Kernelquellen klonen
git clone https://github.com/raspberrypi/linux.git
3 Anwenden des/der Patchfiles
Leider funktionieren die Patch-Files aus dem Analog Devices-Wiki nicht mehr mit der aktuellen Version. Daher habe ich die Änderungen manuell übernommen. Zunächst benötigen wir die Änderungen, welche ich als Patch (Ausgabe von diff) zum Download bereitgestellt habe. Somit ist es nicht notwendig die Änderungen bzgl. des aktuellen Stands vom Kernel-Repository per Hand einzupflegen. Das geht natürlich auch, aber warum mehr Arbeit als nötig aufhalsen. Hat man das Repo ausgecheckt und das Patch-File im aktuellen Ordner (linux), so folgt das normale „Applying“ via Git.
git apply path/file.patch
4 Kompilieren des Kernels und der Module
# Exportieren der relevanten Informationen zum Übersetzen
export PATH=PFAD_ZU_TOOLS_ORDNER/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
# Konfigurieren
make bcmrpi_defconfig
# Starten des Kompilierens
make
5 Übernehmen des Kernels und der Module
cp arch/arm/boot/zImage /PFAD_ZUR_FAT_PARTITION_SDKARTE/kernel.img
sudo ARCH=arm make modules_install INSTALL_MOD_PATH=/media/10b4c001-2137-4418-b29e-57b7d15a6cbc</pre>