Raspberry Pi 4 B GPIO boot dan shutdown
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-shutdownmenjadidtoverlay=gpio-shutdown,gpio-pin=X, tetapi adakah cara untuk mengubah pin untuk boot juga? Mengingat GPIO3 biasanya digunakan untuk I2C.
Jawaban
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:
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)