26

Odp: GPIO w UniElec u7621-06

Pewnie tak. Co powinienem zmienić?

27

Odp: GPIO w UniElec u7621-06

Przecież to ty wiesz co chcesz osiągnąć a nie my? Mam dziwne wrażenie że pogubiłeś się we własnym wątku.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

28

Odp: GPIO w UniElec u7621-06

Tak, masz rację. Chciałbym ustawić wszystkie występujące PINy w GPIO, abym mógł ustawiać i odczytywać z nich stan.

29

Odp: GPIO w UniElec u7621-06

Więc to zrób. Masz pinmuxy przestawić na gpio.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

30 (edytowany przez tinware 2020-02-26 22:52:34)

Odp: GPIO w UniElec u7621-06

W ten sposób?

https://github.com/openwrt/openwrt/blob … .dtsi#L271

pinctrl: pinctrl {
        compatible = "ralink,rt2880-pinmux";
        pinctrl-names = "default";
        pinctrl-0 = <&state_default>;

        state_default: pinctrl0 {
        };

        i2c_pins: i2c_pins {
            i2c_pins {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

         spi_pins: spi_pins {
            spi_pins {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

        uart1_pins: uart1 {
            uart1 {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

         uart2_pins: uart2 {
            uart2 {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

         uart3_pins: uart3 {
            uart3 {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

        rgmii1_pins: rgmii1 {
            rgmii1 {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

        rgmii2_pins: rgmii2 {
            rgmii2 {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

        mdio_pins: mdio {
            mdio {
                ralink,group = "gpio";
                ralink,function = "gpio";
            };
        };

        pcie_pins: pcie {
            pcie {
                ralink,group = "pcie";
                ralink,function = "pcie rst";
            };
        };

        nand_pins: nand {
            spi-nand {
                ralink,group = "spi";
                 ralink,function = "nand1";
            };

            sdhci-nand {
                ralink,group = "sdhci";
                ralink,function = "nand2";
            };
        };

        sdhci_pins: sdhci {
            sdhci {
                ralink,group = "sdhci";
                ralink,function = "sdhci";
            };
        };
    };

31

Odp: GPIO w UniElec u7621-06

Nie. Tego pliku w ogóle nie dotykaj, zapomnij o nim. W U7621-06.dtsi, lina 116: https://github.com/openwrt/openwrt/blob … .dtsi#L116

Masz podać nazwy grup które chcesz przerobić na gpio. Oczywiście wszystkich nie przerobisz (bo jest dołączenie np. do pcie czy uarta), ponad to musisz np. wyłączyć sdhci (status = "disabled" lub wywal sekcję).  Musisz tez ew włączyć banki gpio (gpio0 jest włączone, analogicznie masz zrobić gpio1 i gpio2 jeżeli uwolnisz gpio z danej grupy).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

32

Odp: GPIO w UniElec u7621-06

Dobrze, czyli tutaj:

&sdhci {
    status = "disabled";
};

Ale tutaj, nie wiem jak powinienem postąpić:

&pinctrl {
    state_default: pinctrl0 {
        gpio {
            ralink,group = "jtag", "uart2", "wdt";
            ralink,function = "gpio";
        };
    };
};

33

Odp: GPIO w UniElec u7621-06

ralink,group = "i2c", "sdhci", "jtag", "uart2", "uart3", "wdt";

itd. Przerób te grupy które chcesz. Tylko jak pisałem - części nie wyłączysz - np rgmii czy mdio jeżeli jest tam chip ethernetu, pcie jeżeli masz slot obsadzony, wyłączenie sdhci jest bez sensu bo linie są do czytnika doprowadzone więc będziesz czytnik musiał odlutować itd.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

34 (edytowany przez tinware 2020-02-26 23:15:35)

Odp: GPIO w UniElec u7621-06

Interesuje mnie maksymalne możliwe wykorzystanie 30-pinowego złącza jako GPIO.
Kartę SD chciałbym zostawić, nie chce robić szkód na innych elementach płyty, tylko zwiększyć ilość z 10PINów GPIO do maksimum.

Czy tak?

&sdhci {
    status = "okay";
};

...

&pinctrl {
    state_default: pinctrl0 {
        gpio {
            ralink,group = "i2c", "jtag", "uart2", "uart3", "wdt";
            ralink,function = "gpio";
        };
    };
};

Obok tego złącza mam złącze konsolowe 4-PIN - chciałbym, aby ono zostało jak jest - czy tak będzie?
Zmiany będą dotyczyły tylko 30-pinowego złącza? Nic innego się nie zmieni?

35

Odp: GPIO w UniElec u7621-06

Bo ja wiem co masz na 4 czy 30 pinowym smile Znów - masz płytkę to sprawdź co tam jest i co chcesz zostawić a czego nie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

36

Odp: GPIO w UniElec u7621-06

Tylko jak? Brak schematu i miernikiem za dużo nie zdziałam, większość linii pewnie wchodzi bezpośrednio do procesora.

37

Odp: GPIO w UniElec u7621-06

Eh, ty naprawdę się gubisz. Królik podał w drugim poście co jest na złączach wyprowadzone. Więc co chcesz jeszcze szukać?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

38 (edytowany przez tinware 2020-02-26 23:31:47)

Odp: GPIO w UniElec u7621-06

Chciałbym na PINach 12 (JTCLK), 15 (MDIO), 16 (MDC), 17 (GE2_TXD0), 18 (GE2_TXD1), 19 (GE2_TXD2), 20 (GE2_TXD3), 21 (GE2_TXEN), 22 (GE2_TCLK), 23 (GE2_RXD0), 24 (GE2_RXD1), 25 (GE2_RXD2), 26 (GE2_RXD3), 27 (GE2_RXDV) i 28 (GE2_RXCLK) w miarę możliwości mieć GPIO. Jak mam napisać o tym w pliku target/linux/ramips/dts/U7621-06.dtsi ?

39

Odp: GPIO w UniElec u7621-06

Część jest od jtaga, część jest od rgmii2/ethernetu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

40

Odp: GPIO w UniElec u7621-06

Skoro połowa PINów działa mi w trybie GPIO, jeden który nie działa jest od JTAGa (GPIO16/JTCLK), a cała reszta GE2 jest od Ethernetu, to w takim razie te gniazdo 30-PIN wykorzystane jest obecnie w 100%, chyba nie pozbędę się switcha, aby mieć GPIO.

Poza tym: po co producent wyprowadza coś od Ethernetu na fizycznego PINy? Do czego miałoby to służyć?

41

Odp: GPIO w UniElec u7621-06

Przeglądałeś chociaż notę tego układu?
Mt7621 ma wbudowany gigabitowy switch w brzuszku.

Ge2 to dodatkowy Ethernet z interfejsem rgmii.
Po co?
Np by móc wsadzić tam modem ADSL.

Najprawdopodobniej płyta ta powstała dla konkretnego biznesowego klienta a na aliexpress Chińczycy sprzedają to, czego więcej wyprodukowali.

Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

42

Odp: GPIO w UniElec u7621-06

Tak, przeglądałem notę tego układu.
Rozumiem, że wyjść Ge2 nie jestem w stanie wykorzystać jako GPIO, nawet kompilując swój system?


Cofnę się jeszcze do nowej płyty u7621-01...

https://ae01.alicdn.com/kf/HTB16X17aAxz61VjSZFrq6xeLFXaY/MTK-MT7621-Enterprise-bezprzewodowy-dwuzakresowy-router-wi-fi-LTE-4G-OpenWrt-Gigabit-MT7621A-chipset-karta-Sim.jpg

Czy tutaj uda mi się użyć TXD1/RXD1 oraz TXD2/RXD2 jako sygnały GPIO?
Czy jedno z nich to konsola do komunikacji z routerem?

43

Odp: GPIO w UniElec u7621-06

Dlaczego nie?

http://www.t-firefly.com/download/FireW … MT7621.pdf

Obczaj stronę 16. Spokojnie  GE2 da się zamienić na gpio. Dodaj "rgmii2" do grupy gpio i będziesz mógł z nich korzystać. Przykład:

        gpio {
            ralink,group = "i2c", "jtag", "uart2", "uart3", "wdt", "rgmii2";
            ralink,function = "gpio";
        };
Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

44

Odp: GPIO w UniElec u7621-06

System skompilowany, przetestowany - GPIO działa wink Dziękuję serdecznie za konkretny przykład.
Zauważyłem, że nie mogę ustawiać jeszcze trzech PINów: GPIO16 (JTCLK), GPIO20 (MDIO) oraz GPIO21 (MDC).
Czy mogę to jeszcze poprawić?

45

Odp: GPIO w UniElec u7621-06

Dla mdio to będzie "mdio". Dla jtaga nie pamiętam czemu nie działa.

Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

46 (edytowany przez tinware 2020-03-07 03:12:54)

Odp: GPIO w UniElec u7621-06

Dodałem jeszcze "mdio"...

        gpio {
            #ralink,group = "jtag", "uart2", "wdt";
            #ralink,group = "i2c", "jtag", "uart2", "uart3", "wdt", "rgmii2";
            ralink,group = "i2c", "jtag", "uart2", "uart3", "wdt", "mdio", "rgmii2";
            ralink,function = "gpio";
        };

...uruchomiłem kompilacje "make V=s -j1" i dalej nie mogę ustawiać jeszcze trzech PINów:
GPIO20 (MDIO), GPIO21 (MDC) i GPIO16 (JTCLK).

Zauważyłem, że na starcie te PINy mają różny stan: niektóre mają 0V, inne +3,3V, pozostałe coś po środku tego napięcia. Czy jestem w stanie ustalić jakoś ich stan początkowy inaczej niż skryptem startowym ustawiając je w output, dając logiczne zero?


W miedzy czasie dostałem datasheet od producenta:

47

Odp: GPIO w UniElec u7621-06

Tak, przez gpio-export w dts. Zobacz np. dts od newifi-d1 gdzie ma eksportowanie gpio do sterowania zasilaniem usb (funkcja nie ważna, ważne żebyś zobaczył jak to jest robione).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

48

Odp: GPIO w UniElec u7621-06

Jest jeszcze gpio-hog z mainline kernela.

Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

49 (edytowany przez tinware 2020-03-07 14:57:34)

Odp: GPIO w UniElec u7621-06

1.

Cezary napisał/a:

Tak, przez gpio-export w dts. Zobacz np. dts od newifi-d1 gdzie ma eksportowanie gpio do sterowania zasilaniem usb (funkcja nie ważna, ważne żebyś zobaczył jak to jest robione).

Czyli w pliku https://github.com/openwrt/openwrt/blob … 6m.dts#L41 - jak to powinienem dokładnie napisać?

(...)
/ {
    compatible = "unielec,u7621-06-16m", "unielec,u7621-06", "mediatek,mt7621-soc";
    model = "UniElec U7621-06 (16M flash)";

    gpio_export {
        compatible = "gpio-export";
        #size-cells = <0>;

        jakas_nazwa{
            gpio-export,name = "jakas_nazwa";
            gpio-export,output = <1>;
            gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
        };
    };
};
(...)


2.
Zauważyłem, że coś takiego jest w pliku dtsi (nie dts) -> https://github.com/openwrt/openwrt/blob … 6.dtsi#L54

(...)
    gpio-export {
        compatible = "gpio-export";
        #size-cells = <0>;

        modem_reset {
            gpio-export,name = "modem_reset";
            gpio-export,output = <1>;
            gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
        };
        jakas_nazwa{
            gpio-export,name = "jakas_nazwa";
            gpio-export,output = <1>;
            gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
        };
    };
(...)



3.

Królik napisał/a:

Jest jeszcze gpio-hog z mainline kernela.

Nie rozumiem?


4.
Jak z tymi PINami MDIO? Nie udało mi się ich uruchomić... Zauważyłem, że GPIO16 to jakiś "modem_reset", nie wiem co to jest, ale przycisk resetu jest jest pod GPIO18, nie GPIO16 - czym jest modem_reset?


5.
Jeszcze profilaktyczne pytanie: po kompilacji nagrywam najpierw kernel, potem sysupgrade z zapamiętaniem konfiguracji... Pytam, bo mam jakiś festiwal dziwnych akcji: albo router nie pamięta wprowadzanych zmian, albo podczas logowania pyta mnie o hasło do roota (w defaulcie wiadomo, że nie ma), albo mój skrypt startowy urwany jest w połowie kodu, co generuje błąd "line 44: syntax error: unexpected end of file". Checksum się zgadzał, wygląda to na jakiś uszkodzony plik .bin - wole zapytać, bo kompiluje na strasznym zabytku z jednym rdzeniem, 1GB pamięci i 15to letnim hdd

50

Odp: GPIO w UniElec u7621-06

No widzisz, 16 jest już eksportowane, więc ty tego nie robisz. Pepe2k dodał to jako modem_reset, więc pewnie jest podłączone pod linie rst w slocie minipcie. Spytaj się pepe2k.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.