Raspberry Pi Standard Pin Konfiguration
Diese Funktion ist für fortgeschrittene Benutzer gedacht.
Ab dem 15. Juli 2014 unterstützt die Raspberry Pi-Firmware benutzerdefinierte Standard-Pin-Konfigurationen über eine vom Benutzer bereitgestellte Gerätebaum-Blob-Datei.Um herauszufinden, ob Ihre Firmware aktuell genug ist, führen Sie sie bitte ausvcgencmd version.
Aktionen an Gerätepins während der Startsequenz
Während der Startsequenz durchlaufen die GPIO-Pins verschiedene Aktionen.
- Einschalten - Pins standardmäßig für Eingänge mit Standardzügen;Die Standardzüge für jeden Pin sind imDatenblatt beschrieben
- Einstellung durch das Bootrom
- Einstellung durchbootcode.bin
- Einstellung vondt-blob.bin(diese Seite)
- Einstellung mit dem GPIO-Befehl inconfig.txt(siehehier)
- Zusätzliche Firmware-Pins (zB UARTS)
- Kernel / Gerätebaum
Bei einem Soft-Reset gilt das gleiche Verfahren, mit Ausnahme der Standard-Pulls, die nur bei einem Power-On-Reset angewendet werden.
Beachten Sie, dass es einige Sekunden dauern kann, bis Sie von Stufe 1 zu Stufe 4 gelangen. Während dieser Zeit befinden sich die GPIO-Pins möglicherweise nicht in dem Zustand, den angeschlossene Peripheriegeräte erwarten (wie indtblob.binoderdefiniertconfig.txt).Da verschiedene GPIO-Pins unterschiedliche Standardzüge haben, sollten Siefür Ihr Peripheriegeräteinen der folgendenSchritte ausführen:
- Wählen Sie einen GPIO-Pins, der standardmäßig nach dem Zurücksetzen des Peripheriegeräts gezogen wird
- Verzögern Sie den Start des Peripheriegeräts, bis Stufe 4/5 erreicht ist
- Fügen Sie einen geeigneten Pull-Up / Down-Widerstand hinzu
Bereitstellen eines benutzerdefinierten Gerätebaum-Blobs
Um eine Device Tree-Quelldatei (.dts) in eine Device Tree-Blob (.dtb) -Datei zu kompilieren, muss der Device Tree-Compiler durch Ausführen installiert werdensudo apt install device-tree-compiler.DerdtcBefehl kann dann wie folgt verwendet werden:
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts
HINWEIS:Bei NOOBS-Installationen sollte die DTB-Datei stattdessen auf der Wiederherstellungspartition abgelegt werden.
Ebenso kann eine.dtbDatei bei Bedarf wieder in eine.dtsDateikonvertiertwerden.
dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin
Abschnitte des dt-Blobs
Mitdt-blob.binwird der Binär-Blob (VideoCore) beim Booten konfiguriert.Es wird derzeit nicht vom Linux-Kernel verwendet, aber ein Kernelabschnitt wird zu einem späteren Zeitpunkt hinzugefügt, wenn wir den Raspberry Pi-Kernel neu konfigurieren, um einen dt-Blob für die Konfiguration zu verwenden.Der dt-blob kann alle Versionen des Raspberry Pi, einschließlich des Compute-Moduls, so konfigurieren, dass die alternativen Einstellungen verwendet werden.Die folgenden Abschnitte sind im dt-blob gültig:
videocore
Dieser Abschnitt enthält alle VideoCore-Blob-Informationen.Alle nachfolgenden Abschnitte müssen diesem Abschnitt beigefügt sein.
pins_*
Es gibt eine Reihe separaterpins_*Abschnitte, die auf bestimmten Raspberry Pi-Modellen basieren, nämlich:
pins_rev1Rev1 Pin-Setup.Es gibt einige Unterschiede aufgrund der verschobenen I2C-Pins.
pins_rev2Rev2 Pin Setup.Dies beinhaltet die zusätzlichen Codec-Pins auf P5.
pins_bplus1Modell B +Version1.1, einschließlich des vollständigen 40-Pin-Steckers.
pins_bplus2Modell B +Version1.2, wobei die Stifte mit geringem Stromverbrauch und LAN-Lauf ausgetauscht werden.
pins_aplusModell A + ohne Ethernet.
pins_2b1Pi 2 Modell B rev 1.0;steuert das SMPS über I2C0.
pins_2b2Pi 2 Modell B rev 1.1;steuert das SMPS über die Software I2C auf 42 und 43.
pins_3b1Pi 3 Modell B rev 1.0
pins_3b2Pi 3 Modell B rev 1.2
pins_3bplusPi 3 Modell B +
pins_3aplusPi 3 Modell A +
pins_pi0Der Pi Zero
pins_pi0wDer Pi Zero W.
pins_cmDasRechenmodul.Die Standardeinstellung hierfür ist die Standardeinstellung für den Chip. Daher ist sie eine nützliche Informationsquelle zu Standard-Pull-Ups / Downs auf dem Chip.
pins_cm3DasComputermodulVersion 3
Jederpins_*Abschnitt kannpin_configundpin_definesAbschnitteenthalten.
pin_config
In diesempin_configAbschnitt werden die einzelnen Pins konfiguriert.Jedes Element in diesem Abschnitt muss ein benannter Pin-Abschnitt sein, z. B.pin@p32GPIO32.Es gibt einen speziellen Abschnittpin@default, der die Standardeinstellungen für alles enthält, was im Abschnitt pin_config nicht speziell benannt ist.
pin@pinname
Dieser Abschnitt kann eine beliebige Kombination der folgenden Elemente enthalten:
- polarity
- active_high
- active_low
- termination
- pull_up
- pull_down
- no_pulling
- startup_state
- active
- inactive
- function
- input
- output
- sdcard
- i2c0
- i2c1
- spi
- spi1
- spi2
- smi
- dpi
- pcm
- pwm
- uart0
- uart1
- gp_clk
- emmc
- arm_jtag
- drive_strength_mADie Antriebsstärke wird verwendet, um eine Stärke für die Stifte einzustellen.Bitte beachten Sie, dass Sie nur eine einzige Laufwerksstärke für die Bank angeben können.<8> und <16> sind gültige Werte.
pin_defines
In diesem Abschnitt werden bestimmte VideoCore-Funktionen für bestimmte Pins festgelegt.Auf diese Weise kann der Benutzer den Aktivierungsstift für die Stromversorgung der Kamera an einen anderen Ort verschieben oder die Position des HDMI-Hotplugs verschieben: Dinge, die Linux nicht steuert.Bitte beziehen Sie sich auf die Beispiel-DTS-Datei unten.
Uhrenkonfiguration
Es ist möglich, die Konfiguration der Uhren über diese Schnittstelle zu ändern, obwohl es schwierig sein kann, die Ergebnisse vorherzusagen!Die Konfiguration des Taktsystems ist sehr komplex.Es gibt fünf separate PLLs, und jede hat ihre eigene feste (oder im Fall von PLLC variable) VCO-Frequenz.Jeder VCO hat dann eine Anzahl verschiedener Kanäle, die mit einer anderen Aufteilung der VCO-Frequenz eingerichtet werden können.Jedes der Taktziele kann so konfiguriert werden, dass es von einem der Taktkanäle kommt, obwohl die Zuordnung von Quelle zu Ziel eingeschränkt....
/*<![CDATA[*/ (function () { var scriptURL = 'https://sdks.shopifycdn.com/buy-button/latest/buy-button-storefront.min.js'; if (window.ShopifyBuy) { if (window.ShopifyBuy.UI) { ShopifyBuyInit(); } else { loadScript(); } } else { loadScript(); } function loadScript() { var script = document.createElement('script'); script.async = true; script.src = scriptURL; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script); script.onload = ShopifyBuyInit; } function ShopifyBuyInit() { var client = ShopifyBuy.buildClient({ domain: 'cyberrypi-shop.myshopify.com', storefrontAccessToken: '79155a420be4451f7dbe44202cb8e898', }); ShopifyBuy.UI.onReady(client).then(function (ui) { ui.createComponent('product', { id: '6602853613746', node: document.getElementById('product-component-1635000908174'), moneyFormat: '%E2%82%AC%7B%7Bamount_with_comma_separator%7D%7D', options: { "product": { "styles": { "product": { "@media (min-width: 601px)": { "max-width": "calc(25% - 20px)", "margin-left": "20px", "margin-bottom": "50px" } } }, "contents": { "button": false, "buttonWithQuantity": true }, "text": { "button": "Add to cart" } }, "productSet": { "styles": { "products": { "@media (min-width: 601px)": { "margin-left": "-20px" } } } }, "modalProduct": { "contents": { "img": false, "imgWithCarousel": true, "button": false, "buttonWithQuantity": true }, "styles": { "product": { "@media (min-width: 601px)": { "max-width": "100%", "margin-left": "0px", "margin-bottom": "0px" } } }, "text": { "button": "Add to cart" } }, "option": {}, "cart": { "text": { "title": "Wagen", "total": "Zwischensumme", "empty": "Ihr Warenkorb ist leer.", "notice": "Versand- und Rabattcodes werden an der Kasse hinzugefügt.", "button": "Auschecken", "noteDescription": "Besondere Hinweise für Verkäufer" }, "contents": { "note": true } }, "toggle": {} }, }); }); } })(); /*]]>*/