r00ti
r00ti
1
#linux #openwrt #programista15k #programowanie #embedded

Mirasy pracuję na płytce MT7628. Układ pracuje na openWRT. Potrzebuje zmienić tryb pracy jednego pinu GPIO. Według dokumentacji każdy pin może pracować w 4 trybach. Do zmiany pinu muszę pisać po rejestrach np. " devmem 0x10000064 32 0x0555555" Uprzedzam, mam w kernelu dodane /dev/mem. Mimo tego dostaje : "/bin/ash: devmem: not /bin/ash: devmem: not found". Ma ktoś pomysł jak moge zmienc tryb pinu GPIO ?
  • Najlepsze
  • Wszystkie komentarze
YuiMizuno
MT7628


@r00ti: wiele nie pomogę, ale tutaj masz przykładowy plik device tree:
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/net/wireless/mediatek%2Cmt76.txt
W źródłach kernela są źródła devicetree, które się kompiluje. Niektóre (albo nawet wszystkie?) mają parametry które mogą być modyfikowane runtime jako parametry kernela. Musisz poszukać odnośnie swojego procesora, sam wiele tego nie ruszałem.
PowerfulTransistor
PowerfulTransistor
@r00ti: może tak?

echo "out" > /sys/class/gpio/gpio666/direction
r00ti
r00ti Autor
0
@PowerfulTransistor: to jest ustawienie GPIO jako wyjście. Mi chodzi o to, że gpio może pracować jako zwyłe GPIO, albo moze być sprzęgnięte z eth albo z czymś innym. Więc najpierw musze konkretny PIN GPIO ustawić jako GPIO...
YuiMizuno
@r00ti: device tree?
r00ti
r00ti Autor
0
@YuiMizuno: tak
YuiMizuno
@r00ti: w sensie, że w device tree powinieneś móc zdefiniować który pin jest za co odpowiedzialny / aktywować konkretne peryferia
r00ti
r00ti Autor
0
@YuiMizuno: mógłbyś podesłać link przedstawiający jak to zrobić ? Jestem newbie w linuxach
Boska_Klaudia
@r00ti: "/bin/ash: devmem: not /bin/ash: devmem: not found" to trochę dziwny
komunikat, prędzej "/bin/ash: devmem: not not found". To znaczy że
albo nie masz devmem wyprowadzonego jako zewnętrzna binarka i musisz
robić "busybox devmem" albo w ogóle masz busyboxa zbudowanego bez
/dev/mem. Ostatecznie devmem jest na inną architekturę niż jest CPU
lub w ogóle nie masz busybox tylko coś innego. Do /dev/mem
Boska_Klaudia
r00ti
r00ti Autor
0
@Boska_Klaudia: używam busyboxa, przy kompilacji jadra zazanczylem /dev/mem
r00ti
r00ti Autor
0
busybox devmem


@Boska_Klaudia:

root@OpenWrt:/# busybox devmem 0x10000064 32 0x0555555
devmem: applet not found
Boska_Klaudia
@r00ti: no i to jest przyczyna, musisz albo przebudować busybox z devmem albo ręcznie użyć devmem tak jak pisałem, to nie jest trudne.
r00ti
r00ti Autor
0
@Boska_Klaudia: przebudować busybox z devmeme ? Chodzi Ci w momencie konfiguracji i przygotowywania openwrt do kompilacji, to gdzies tam w opcjach moge to znalezc ?
Boska_Klaudia
@r00ti: menuconfig w busybox, możesz zbudować z git://git.busybox.net/busybox cross-compilerem
r00ti
r00ti Autor
0
git://git.busybox.net/busybox


@Boska_Klaudia: a jak to ożenić potem z menuconfig od openwrt ?
Boska_Klaudia
a po co?
r00ti
r00ti Autor
0
@Boska_Klaudia: to czegoś nie rozumiem ? chyba jestem za głupi na to...
Buduje openWRT zgodnie z https://openwrt.org/docs/guide-developer/quickstart-build-images.
Jak zrobić to o czym Ty mówisz ?