Raspberry Pi 4 B GPIO boot dan shutdown

Sep 18 2020

Saya telah melakukan beberapa penelitian tentang tombol daya untuk Raspberry Pi, tetapi saya mengalami kesulitan menemukan informasi. Saat ini, saya memiliki tombol yang berfungsi pada GPIO5, dan ketika saya menghubungkannya ke pin GND yang berlawanan, Pi melakukan boot. Saya menambahkan saluran dtoverlay=gpio-shutdownke my /boot/config.txt, sehingga saya bisa mematikan dengan koneksi ini juga. Namun, saya memiliki beberapa pertanyaan yang sulit saya jawab.

  • Apakah shutdown dimulai dengan menghubungkan pin GPIO3 dan pin GND dianggap sebagai shutdown yang aman? Akankah sistem menyelesaikan penulisan ke memori, dll, seperti halnya dengan sudo shutdown?
  • Saya tahu bahwa saya dapat mengubah pin untuk mematikan, dengan mengubahnya dtoverlay=gpio-shutdownmenjadi dtoverlay=gpio-shutdown,gpio-pin=X, tetapi adakah cara untuk mengubah pin untuk boot juga? Mengingat GPIO3 biasanya digunakan untuk I2C.

Jawaban

1 Seamus Sep 19 2020 at 00:27

Saya tidak tahu jawaban lengkap untuk semua pertanyaan Anda, jadi ini adalah jawaban parsial .

Q1:

Apakah shutdown dimulai dengan menghubungkan pin GPIO3 dan pin GND dianggap sebagai shutdown yang aman?

Saya ingat pernah mendengar masalah yang terkait dengan penggunaan GPIO untuk mematikan, tetapi beberapa informasi terbaru menunjukkan bahwa fitur ini berfungsi sebagaimana mestinya jika sistem dikonfigurasi dengan benar - yaitu jika dikonfigurasi dengan benar, mematikannya "aman". Tentu saja cara bebas perangkat keras untuk mematikan RPi adalah dari layar atau CLI melalui sudo shutdown, sudo haltatau sudo poweroff.

Q2:

Saya tahu bahwa saya dapat mengubah pin untuk shutdown, dengan mengubah dtoverlay = gpio-shutdown menjadi dtoverlay = gpio-shutdown, gpio-pin = X, tetapi adakah cara untuk mengganti pin untuk boot juga?

Anda tidak perlu menggunakan pin GPIO untuk memulai kembali RPi dari keadaan mati. The dokumentasi menyatakan:

WAKE_ON_GPIO

Jika 1 maka 'sudo halt' akan berjalan dalam mode daya yang lebih rendah hingga GPIO3 atau GLOBAL_EN disingkat ke ground.

Default: 1 (0 dalam versi asli bootloader 2019-05-10) Versi: Semua

POWER_OFF_ON_HALT

Jika 1 dan WAKE_ON_GPIO = 0 maka matikan semua output PMIC saat berhenti. Ini adalah status daya serendah mungkin untuk penghentian tetapi dapat menyebabkan masalah dengan beberapa HAT karena 5V masih menyala. GLOBAL_EN harus disingkat menjadi ground untuk boot.

Default: 0 Versi: 2019-07-15

Interpretasi saya dari dokumentasi di atas adalah ini: Menyingkat singkat GLOBAL_ENke ground akan memulai kembali / mem-boot ulang RPi terlepas dari bagaimana WAKE_ON_GPIOdan POWER_OFF_ON_HALTdiatur. The GLOBAL_ENsimpul ditampilkan dalam foto di bawah ini:

Milliways Sep 19 2020 at 00:25

Operasi dijelaskan dalam /boot/overlays/README

Ini cukup aman, saya memilikinya di semua Pi saya jika saya perlu mematikan Pi tanpa kepala (atau yang tanpa keyboard terpasang), meskipun Pi saya jarang dimatikan, kecuali saya menambahkan perangkat keras.

Saya menggunakan dtoverlay=gpio-shutdown,gpio_pin=21agar saya dapat mematikan dengan menjembatani 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)