🛠 Capes historiques : capemanager, EEPROM d'identification et pièges des broches
Objectifs
Comprendre l'écosystème cape qui a fait la réputation de la BBB : deux nappes 46 broches, empilables sur 4 niveaux, chaque cape portant une EEPROM d'identification (adresses I2C 0x54 à 0x57) lue au boot pour configurer le pinmux. Vous manipulerez le capemanager historique (/sys/devices/platform/bone_capemanager/slots) des anciennes images, son équivalent moderne configfs, et les trois pièges matériels du SRM : broches SYSBOOT sur P8, eMMC sur les broches GPMC, back-powering du framer HDMI.
Matériel
- 1 BeagleBone Black (les révisions A6/A6A ont corrigé des glitchs de reset et un défaut de boot 1 fois sur 20 — utile à savoir sur l'occasion)
- 1 cape officielle ou une cape maison sur breadboard
- Paquets device-tree-compiler
Code complet
# 1. Lire l'EEPROM d'une cape branchée (bus I2C2, adresses 0x54-0x57)
sudo i2cdump -y 2 0x54 b # nom et pinmux de la cape en ASCII
# 2. Images anciennes (capemanager U-Boot) : lister et activer un slot
cat /sys/devices/platform/bone_capemanager/slots
dtc -O dtb -o macape-00A0.dtbo -b 0 -@ macape.dts
sudo cp macape-00A0.dtbo /lib/firmware/
echo macape:00A0 | sudo tee /sys/devices/platform/bone_capemanager/slots
# 3. Images modernes : configfs (le capemanager a disparu des noyaux récents)
sudo mkdir -p /sys/kernel/config/device-tree/overlays/macape
cat macape-00A0.dtbo | sudo tee /sys/kernel/config/device-tree/overlays/macape/dtbo
ls /sys/kernel/config/device-tree/overlays/
# 4. Traces de lecture de l'EEPROM au boot
sudo dmesg | grep -iE "cape|eeprom|slot"
Vérification attendue
Avec une cape officielle, dmesg affiche le nom du capedriver chargé automatiquement (lecture de l'EEPROM). Un overlay maison apparaît dans slots (ancienne image) ou dans configfs (image récente), et le périphérique qu'il décrit devient visible sous /sys/devices/platform ou /sys/bus.
Erreurs fréquentes
- Piloter P8_27 à P8_46 depuis une cape : ce sont les broches SYSBOOT (bus LCD et entrées du framer HDMI) ; un signal présent avant la montée de SYS_RESETn change l'ordre de boot et la carte ne démarre plus (SRM ch.8).
- Utiliser les broches GPMC partagées avec l'eMMC : 10 broches de P8 sont captées par l'eMMC ; sans la maintenir en reset, le bus est inaccessible.
- Alimenter une cape 5 V depuis l'USB de la carte : en alimentation USB, le rail VDD_5V des nappes est ABSENT (seul SYS_5V dérivé du PMIC existe) et l'USB est limité à 500 mA.
- Chercher bone_capemanager sur un noyau récent : il n'existe plus, passer à configfs ou aux overlays embarqués.
- Back-powering : injecter du 5 V sur les broches du framer HDMI éteint le alimente à rebours et peut endommager la carte (avertissement SRM ch.7).
Autres tutoriels pour cette carte
- Premier boot de la BeagleBone Black avec un seul câble mini-USB
- Comprendre les triggers en pilotant les 4 LED utilisateur
- Bouton et LED avec Adafruit_BBIO, la bibliothèque historique
- Lire l'ADC 12 bits sans griller le SoC : la règle des 1,8 V
- Ajouter une horloge temps réel sur le bus I2C des capes
- Micro-HDMI : exploiter les limites d'affichage de la BBB
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash