Mal som problém s príkazom gpio na Raspberry Pi 4. Kontrola jeho verzie
pomocou gpio -v vyprodukovala nasledujúci výstup:
gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Unknown17, Revision: 04, Memory: 0MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 4 Model B Rev 1.4
* This Raspberry Pi supports user-level GPIO access
Nedokázalo rozpoznať dosku, čo je vidieť z Type: Unknown17. Ďalší problém
bol, že verzia zostávala na 2.50 a odmietala sa aktualizovať vyššie ani po
úplnej aktualizácii:
sudo apt update && sudo apt full-upgrade
Začal som to riešiť, pretože pokus o čítanie stavu GPIO bol neúspešný:
gpio readall
A výsledkom bola nasledujúca chyba:
Oops - unable to determine board type... model: 17
Nie som si istý, čo číslo 17 momentálne znamená, ale zhoduje sa s neznámym typom dosky uvedeným vyššie.
Manuálna aktualizácia #
Jedným zo spôsobov riešenia situácie je manuálna aktualizácia balíčka:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
Teraz môžeme z gpio -v dostať zmysluplnejší výstup:
gpio version: 2.52
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 4B, Revision: 04, Memory: 8192MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 4 Model B Rev 1.4
* This Raspberry Pi supports user-level GPIO access.
Verzia bola aktualizovaná, typ je teraz rozpoznaný a pamäť je tiež správne zobrazená.
Kontrola stavu GPIO #
Získanie stavu GPIO cez gpio readall tiež funguje:

Kvôli SEO a úplnosti je tabuľka nižšie rozdelená aj na ľavú a pravú sekciu.
Ľavá strana #
| BCM | wPi | Name | Mode | V | Physical |
|---|---|---|---|---|---|
| 3.3v | 1 | ||||
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 |
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 |
| 0v | 9 | ||||
| 17 | 0 | GPIO. 0 | IN | 0 | 11 |
| 27 | 2 | GPIO. 2 | IN | 0 | 13 |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 |
| 3.3v | 17 | ||||
| 10 | 12 | MOSI | ALT0 | 0 | 19 |
| 9 | 13 | MISO | ALT0 | 0 | 21 |
| 11 | 14 | SCLK | ALT0 | 0 | 23 |
| 0v | 25 | ||||
| 0 | 30 | SDA.0 | IN | 1 | 27 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 |
| 6 | 22 | GPIO.22 | IN | 1 | 31 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 |
| 19 | 24 | GPIO.24 | IN | 0 | 35 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 |
| 0v | 39 |
Pravá strana #
| Physical | V | Mode | Name | wPi | BCM |
|---|---|---|---|---|---|
| 2 | 5v | ||||
| 4 | 5v | ||||
| 6 | 0v | ||||
| 8 | 1 | ALT5 | TxD | 15 | 14 |
| 10 | 1 | ALT5 | RxD | 16 | 15 |
| 12 | 0 | IN | GPIO. 1 | 1 | 18 |
| 14 | 0v | ||||
| 16 | 1 | OUT | GPIO. 4 | 4 | 23 |
| 18 | 1 | OUT | GPIO. 5 | 5 | 24 |
| 20 | 0v | ||||
| 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 24 | 1 | OUT | CE0 | 10 | 8 |
| 26 | 1 | OUT | CE1 | 11 | 7 |
| 28 | 1 | IN | SCL.0 | 31 | 1 |
| 30 | 0v | ||||
| 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 34 | 0v | ||||
| 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 38 | 0 | IN | GPIO.28 | 28 | 20 |
| 40 | 0 | IN | GPIO.29 | 29 | 21 |
Stále však existuje jeden problém.
Alternatívna funkcia pre GPIO #
Pokus o zmenu alternatívnej funkcie pinu:
sudo pigs m 17 3
Zlyhá s chybou socket connect failed. Ale to sa dá ľahko vyriešiť
reštartovaním démona pigpio, aby mohol načítať aktualizované súbory:
sudo systemctl restart pigpiod.service
Spustenie sudo pigs m 17 3 nevyprodukuje žiadnu chybu. Overenie stavu
možno urobiť napríklad takto:
gpio readall | grep -e BCM -e ALT3 -e + | head -5
Áno, dosť obtiažne, viem. Nepodarilo sa mi nájsť spôsob, ako spustiť
gpio readall pre jeden pin. Vyššie uvedené vypíše nasledovné:

Namiesto IN je teraz režim pinu 17 ALT3, čo znamená RTS0.
Poznámka pre ArchLinux ARM #
V prípade, že sa ocitnete na ArchLinux ARM a potrebujete manipulovať s
GPIO, malo by to byť menej problematické. ArchLinux ARM má zabudovaný ďalší
repozitár nazvaný alarm, čo je skratka pre, správne ste uhádli, ArchLinux
ARM. Tento repozitár je predvolene povolený a nachádza sa medzi oficiálnymi
repozitármi, v Archu nazvanými core, extra, community a multilib,
kde posledný z nich je potrebné najprv povoliť.
Získanie softvéru súvisiaceho s GPIO je dosiahnuteľné takto:
yay gpio
Výsledok je ľahko pochopiteľný z nasledujúcej snímky obrazovky:

Repozitár alarm je prítomný medzi relevantnými výsledkami ako
community/gpio-utils, alarm/wiringpi alebo aur/pigpio.
Toto je 94. príspevok #100daystooffload.