Avvio e arresto GPIO di Raspberry Pi 4 B

Sep 18 2020

Ho fatto alcune ricerche sui pulsanti di accensione per il Raspberry Pi, ma ho difficoltà a trovare informazioni. In questo momento, ho un pulsante che funziona su GPIO5 e quando lo collego al pin GND opposto, il Pi si avvia. Ho aggiunto la linea dtoverlay=gpio-shutdownal mio /boot/config.txt, in modo da poter chiudere anche con questa connessione. Tuttavia, ho un paio di domande a cui ho difficoltà a trovare una risposta.

  • L'arresto viene avviato collegando il pin GPIO3 e il pin GND considerato uno spegnimento sicuro? Il sistema finirà di scrivere in memoria, ecc., Proprio come con sudo shutdown?
  • So che posso cambiare il pin per lo spegnimento, passando dtoverlay=gpio-shutdowna dtoverlay=gpio-shutdown,gpio-pin=X, ma c'è un modo per cambiare anche il pin per l'avvio? Considerando che GPIO3 è normalmente utilizzato per I2C.

Risposte

1 Seamus Sep 19 2020 at 00:27

Non conosco la risposta completa a tutte le tue domande, quindi questa è una risposta parziale .

Q1:

L'arresto viene avviato collegando il pin GPIO3 e il pin GND considerato uno spegnimento sicuro?

Ricordo di aver sentito di problemi associati all'uso di GPIO per l'arresto, ma alcune informazioni recenti suggeriscono che questa funzione funziona come dovrebbe se il sistema è configurato correttamente, cioè se configurato correttamente, l'arresto è "sicuro". Ovviamente il modo senza hardware per spegnere l'RPI è dallo schermo o dalla CLI tramite sudo shutdown, sudo halto sudo poweroff.

Q2:

So che posso cambiare il pin per l'arresto, cambiando dtoverlay = gpio-shutdown in dtoverlay = gpio-shutdown, gpio-pin = X, ma c'è un modo per cambiare anche il pin per l'avvio?

Non è necessario utilizzare un pin GPIO per riavviare RPi da uno stato di arresto. La documentazione afferma:

WAKE_ON_GPIO

Se 1, 'sudo halt' verrà eseguito in una modalità di alimentazione inferiore fino a quando GPIO3 o GLOBAL_EN non vengono cortocircuitati a massa.

Predefinito: 1 (0 nella versione originale del bootloader 2019-05-10) Versione: tutti

POWER_OFF_ON_HALT

Se 1 e WAKE_ON_GPIO = 0, disattivare tutte le uscite PMIC in arresto. Questo è lo stato di alimentazione più basso possibile per l'arresto, ma potrebbe causare problemi con alcuni HAT perché 5V sarà ancora acceso. GLOBAL_EN deve essere cortocircuitato a terra per l'avvio.

Predefinito: 0 Versione: 2019-07-15

La mia interpretazione della documentazione di cui sopra è questa: un breve cortocircuito GLOBAL_ENa massa riavvierà / riavvierà l'RPi indipendentemente da come WAKE_ON_GPIOe POWER_OFF_ON_HALTsono impostati. Il GLOBAL_ENnodo è mostrato nella foto sotto:

Milliways Sep 19 2020 at 00:25

L'operazione è spiegata in /boot/overlays/README

È abbastanza sicuro, ce l'ho su tutto il mio Pi nel caso in cui avessi bisogno di spegnere un Pi headless (o uno senza tastiera collegata), anche se il mio Pi raramente si spegne, a meno che non sto aggiungendo hardware.

Lo uso in dtoverlay=gpio-shutdown,gpio_pin=21modo da poterlo spegnere collegando i pin 39/40

Name:   gpio-shutdown
Info:   Initiates a shutdown when GPIO pin changes. The given GPIO pin
        is configured as an input key that generates KEY_POWER events.

…

        This overlay only handles shutdown. After shutdown, the system
        can be powered up again by driving GPIO3 low. The default
        configuration uses GPIO3 with a pullup, so if you connect a
        button between GPIO3 and GND (pin 5 and 6 on the 40-pin header),
        you get a shutdown and power-up button. Please note that
        Raspberry Pi 1 Model B rev 1 uses GPIO1 instead of GPIO3.
Load:   dtoverlay=gpio-shutdown,<param>=<val>
Params: gpio_pin                GPIO pin to trigger on (default 3)
                                For Raspberry Pi 1 Model B rev 1 set this
                                explicitly to value 1, e.g.:

                                    dtoverlay=gpio-shutdown,gpio_pin=1

        active_low              When this is 1 (active low), a falling
                                edge generates a key down event and a
                                rising edge generates a key up event.
                                When this is 0 (active high), this is
                                reversed. The default is 1 (active low).

        gpio_pull               Desired pull-up/down state (off, down, up)
                                Default is "up".

                                Note that the default pin (GPIO3) has an
                                external pullup. Same applies for GPIO1
                                on Raspberry Pi 1 Model B rev 1.

        debounce                Specify the debounce interval in milliseconds
                                (default 100)