Listing 3
dtparam=i2c1=on dtparam=i2c_arm=on
Nun aktualisieren Sie die Software auf dem RasPi und installieren die I2C-Tools (Listing 4, Zeile 1 bis 3). Anschließend nehmen Sie noch den Benutzer pi in die Gruppe i2c auf (Listing 4, Zeile 4): So benötigen Sie später nicht immer Root-Rechte, wenn Sie auf den Bus zugreifen wollen. Zu guter Letzt booten Sie den RasPi noch einmal und überprüfen dann, ob sich der BMP180 ordnungsgemäß am Bus angemeldet hat. Im Test funktionierte das auf Anhieb (Listing 5).
Listing 4
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install i2c-tools $ sudo adduser pi i2c
Listing 5
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
Messung
In den vorhergehenden Teilen dieser Reihe haben Sie bereits unterschiedliche Möglichkeiten kennengelernt, um auf I2C-Hardware zuzugreifen. Heute geht es aber um einen vollkommen neuen Ansatz: Es gibt ein Kernel-Modul für den ähnlichen Baustein BMP085, das auch mit dem BMP180 zusammenarbeitet – allerdings findet es sich nicht im Standard-Kernel. Es gilt daher, einen eigenen Kernel zu bauen, der es enthält.
Wer das schon einmal durchexerziert hat, der weiß, wie lange so etwas dauert: Es empfiehlt sich, dies nur mit einem RasPi 2 zu versuchen. Das eigentliche Bauen läuft am besten über Nacht. Als Erstes installieren Sie die Kernel-Quellen und entpacken diese (Listing 6, Zeile 1 bis 6). Je nach Bandbreite dauert das Herunterladen etwas; der Download weist einen Umfang von fast 1,2 GByte auf.
TIPP
Deutlich schneller klappt das Übersetzen eines neuen Kernels, indem Sie ihn auf einem PC unter Linux für den Raspberry Pi crosskompilieren. Lesen Sie dazu unseren Artikel in der Know-how-Rubrik dieser Ausgabe.
Listing 6
$ cd /usr/src/ $ sudo mkdir kernel $ sudo chown pi:pi kernel/ $ cd kernel $ git clone https://github.com/raspberrypi/linux.git $ cd linux $ cp /proc/config.gz ./myConfig.gz $ gunzip ./myConfig.gz $ sudo apt-get install bc libncurses-dev $ make menuconfig
Da es ein sehr mühseliges Unterfangen darstellt, die Kernel-Konfiguration von null aus selbst zu machen, ziehen Sie sich die aktuelle Konfiguration vom laufenden System und bauen darauf auf (Listing 6, Zeile 7 und 8). Bevor Sie mit dem eigentlichen Bauen starten (Zeile 10), installieren Sie noch einige Tools, damit der Prozess fehlerfrei durchläuft (Zeile 9). Danach beginnen Sie mit der Konfiguration des neuen Kernels (Abbildung 2).
Zunächst laden Sie über Load (Abbildung 3) die aktuelle Konfiguration. Danach wählen Sie den Treiber für den Sensor mit Device Drivers | Misc devices | BMP085 digital pressure sensor on I2C aus (Abbildung 4). Mit dem Asterisk (*) bestimmen Sie, dass der Treiber fest in den Kernel integriert ist; über M erzeugen Sie ein Modul. Jetzt speichern Sie die neue Konfiguration via Save in der Datei .config, damit Make sie findet (Abbildung 5). Dann beenden Sie das Programm durch die dreimalige Auswahl von Exit.

Abbildung 5: Achten Sie beim Speichern der neuen Konfiguration darauf, dass Sie diese unter dem Namen ».config« ablegen.
Anschließend beginnen Sie mit dem Bau des Kernels. Der Vorgang beschleunigt sich erheblich, wenn Sie für den Prozess alle vier Kerne des RasPi 2 nutzen: Dazu geben Sie Make die Option -j4 mit. Die 4 entspricht dabei der Anzahl der Kerne. Parameter benötigt Make in diesem Durchlauf nicht; der Prozess läuft etwa vier Stunden.
Nachdem Make den kompletten Kernel gebaut hat, verwenden Sie jetzt den Parameter modules_install, um das Boot-Image zu erstellen und die dazugehörigen Module zu installieren.
Kernel installieren
Um den neuen Kernel zu installieren, kopieren Sie ihn ins Verzeichnis /boot. Damit Sie den neuen Kernel nicht mit den gerade laufenden verwechseln, benennen Sie ihn um, etwa in kernelx.img:
$ sudo cp arch/arm/boot/Image /boot/kernelx.img
Jetzt müssen Sie dem Bootloader noch mitteilen, dass er beim nächsten Booten den selbst gebauten Kernel laden soll. Das erledigen Sie mit einem Eintrag in der Datei /boot/config.txt, indem Sie die Zeile kernel=kernelx.img am Anfang der Datei einfügen. Für diese Änderung benötigen Sie wieder Root-Rechte.








