Odp: GPIO w UniElec u7621-06
Pewnie tak. Co powinienem zmienić?
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → GPIO w UniElec u7621-06
Strony Poprzednia 1 2 3 4 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
Pewnie tak. Co powinienem zmienić?
Przecież to ty wiesz co chcesz osiągnąć a nie my? Mam dziwne wrażenie że pogubiłeś się we własnym wątku.
Tak, masz rację. Chciałbym ustawić wszystkie występujące PINy w GPIO, abym mógł ustawiać i odczytywać z nich stan.
Więc to zrób. Masz pinmuxy przestawić na gpio.
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";
};
};
};
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).
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";
};
};
};
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.
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?
Bo ja wiem co masz na 4 czy 30 pinowym
Znów - masz płytkę to sprawdź co tam jest i co chcesz zostawić a czego nie.
Tylko jak? Brak schematu i miernikiem za dużo nie zdziałam, większość linii pewnie wchodzi bezpośrednio do procesora.
Eh, ty naprawdę się gubisz. Królik podał w drugim poście co jest na złączach wyprowadzone. Więc co chcesz jeszcze szukać?
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 ?
Część jest od jtaga, część jest od rgmii2/ethernetu.
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ć?
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.
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...
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?
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";
};System skompilowany, przetestowany - GPIO działa
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ć?
Dla mdio to będzie "mdio". Dla jtaga nie pamiętam czemu nie działa.
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:
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).
Jest jeszcze gpio-hog z mainline kernela.
1.
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.
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
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.
Strony Poprzednia 1 2 3 4 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → GPIO w UniElec u7621-06
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc