BeagleBone Black: Capes verwalten

Der Capemgr

Booten Sie einen BeagleBone Black ohne angeschlossene Capes, sind dennoch bereits etliche Pins auf den Steckerleisten P8 und P9 für bestimmte Zwecke konfiguriert: Einige leiten wichtige Signalleitungen nach außen und lassen sich daher nicht multiplexen, andere konfiguriert der Standard-Device-Tree (Abbildung 2). Manche dienen der Stromversorgung, dritte verwenden die integrierten Capes des Boards, wie eMMC und HDMI.

Abbildung 2: Standard-Pinbelegung der Steckerleisten P8 und P9 des BeagleBone Black.

Das Erkennen und Identifizieren der einzelnen Capes sowie das Laden der zugehörigen Overlays übernimmt das bereits erwähnte Capemgr-Subsystem des Kernels. Mit seiner Hilfe binden Sie auch eigene Overlays in den Device Tree ein.

Als Benutzerschnittstelle im Userspace stellt Capemgr über das Sysfs-Dateisystem das Verzeichnis /sys/devices/bone_capemgr.* bereit, wobei die dort lagernde Datei slots das Interagieren mit dem Capemgr ermöglicht. Beim Laden eines Overlays weist Capemgr diesem einen eigenen "Slot" zu. Um herauszufinden, welche Slots derzeit ein Overlay enthalten, sehen Sie sich den Inhalt von slots an. Bei einem BeagleBone Black in Standardkonfiguration ohne angeschlossene Capes sieht das so aus wie in Listing 2. Abbildung 3 schlüsselt die Bedeutung der Datenfelder innerhalb der Slots auf.

Listing 2

 

$ cd /sys/devices/bone_capemgr.*
$ cat slots
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
Abbildung 3: Die Bedeutung der Datenfelder innerhalb der Capemgr-Slots.

Die ersten vier Slots mit den Nummern 0 bis 3 bleiben für angeschlossene Erweiterungs-Capes reserviert. Über die I2C-Bus-Adresse, ein Hex-Byte, fordern die Capes einen bestimmten Slot an. Bei geladenen Overlays, die nicht von einem externen Cape stammen – also beispielsweise jenen für die integrierten eMMC- und HDMI-Capes oder manuell aus dem Userspace geladenen –, lautet diese Adresse immer ff. Auf die Bus-Adresse folgt ein Statusfeld mit fünf Stellen (siehe Kasten "Slot-Statusfeld"). Die darauffolgenden Zeichenketten beschreiben die Version und den Urheber des Overlays sowie die zugehörige Hardware.

Slot-Statusfeld

Die fünf Stellen des Slot-Statusfelds stehen jeweils für einen Schritt beim Einbinden des zugehörigen Capes und enthalten entweder einen Buchstaben (Status aktiv) oder ein Minuszeichen (Status inaktiv). Bei den fünf möglichen Buchstaben können von links nach rechts auftauchen:

  • P ("probed"): Der Slot wurde auf das Vorhandensein eines Capes geprüft.
  • F ("failed"): Für den Slot wurde kein Cape erkannt.
  • O ("override"): Für den Slot wurde per Override ein Cape definiert.
  • l ("loading"): Ein Cape wird gerade in den Slot geladen.
  • L ("Loaded"): Das Laden des Capes ist abgeschlossen.

Eigene Overlays

Um ein Overlay manuell zu laden, müssen Sie es als kompilierte DTBO-Datei im Firmware-Verzeichnis des Systems ablegen. Die zum Overlay gehörende Teilenummer schreiben Sie anschließend via echo in die Datei slots. Der Capemgr versucht dann, die zur Teilenummer passende DTBO-Datei im Firmware-Ordner zu finden und zu laden. Um etwa das Overlay MY_OVERLAY-00A0.dtbo einzubinden, setzen Sie folgendes Kommando ab:

$ sudo echo MY_OVERLAY > /sys/devices/bone_capemgr.*/slots

Das Verhalten des Capemgr bei Systemstart können Sie über drei Kernel-Kommandozeilenoptionen beeinflussen, die Sie in der Konfigurationsdatei uEnv.txt des Bootloader U-Boot [5] angeben. Die erste davon, capemgr.enable_partno, erzwingt das Laden des Overlays für ein oder mehrere Capes mit spezifisch zugeordnetem Slot im Device Tree. Die zweite, capemgr.disable_partno, unterbindet explizit das Laden eines Overlays, auch wenn das zugehörige Cape vorhanden sein sollte. Die dritte Option namens capemgr.extra_override ähnelt capemgr.enable_partno, dient jedoch zum Laden von Overlays ohne speziell zugeordneten Slot. Sie ist mit Vorsicht zu genießen, denn fehlerhaft angewendet lädt sie das Overlay möglicherweise in einen falschen Slot.

Wie setzt man diese Optionen nun ein? Als Beispiel dazu sehen wir uns den Ablauf des Ladevorgangs für das integrierte HDMI-Cape des BeagleBone Black einmal näher an. Im Device Tree finden sich zwei Knoten dafür: einer für ein vollständiges Cape mit Video und Audio (BB-BONELT-HDMI) und ein zweiter ausschließlich für Videodaten (BB-BONELT-HDMIN). Für jeden der beiden gibt es ein eigenes Overlay, und Capemgr lädt auch alle zwei, da die entsprechenden Nodes das explizit vorsehen. Nutzen lässt sich aber nur eine Variante, da beide exklusiven Zugriff auf dieselbe Ressource verlangen: die Pins, die das Videosignal übertragen. Da das Overlay für das vollständige HDMI-Cape im Device Tree eine höhere Priorität hat, lädt Capemgr es zuerst. Verläuft der Ladevorgang erfolgreich, schlägt anschließend der Versuch fehl, das Nur-Video-Overlay einzubinden.

Manchmal ist es jedoch sinnvoller, statt des vollen HDMI-Overlays die Nur-Video-Variante zu verwenden: Die vier Pins (McASP0), die normalerweise das Audiosignal übermitteln, lassen sich wahlweise auch als zusätzlicher SPI-Kanal (SPI1) oder für GPIO-Signale multiplexen. Diese alternative Nutzung könnte für ein konkretes Projekt wichtiger sein als eine Audioausgabe. In diesem Fall müssen Sie Capemgr anweisen, das Video/Audio-HDMI-Overlay zu überspringen.

Das erledigen Sie mit der Kernel-Option capemgr.disable_partno (Listing 3, Zeile 1). Im Falle eines Falles lässt sich mit ihr das HDMI-Cape sogar komplett deaktivieren, indem Sie beide HDMI-Overlay-Varianten ausschließen (Zeile 2). Dadurch machen Sie nicht weniger als 24 Pins auf den Steckerleisten P8 und P9 frei, die Sie nun für eine beliebige Kombination von UARTs und GPIOs multiplexen können.

Listing 3

 

capemgr.disable_partno=BB-BONELT-HDMI
capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.