1 (edytowany przez MiG25 2020-03-21 13:30:54)

Temat: QCA4531 Obsługa przycisków

Mam płytkę na procesorze QCA4531 ( sterownik pompy ciepła). udało się na niej odpalić dropbear i połączyć przez ssh do openwrt , r40838 , więc chyba jakiś BB.
płytka ma trzy przyciski , które reagują na GPIO0 , GPIO1 i GPIO16 ( ten jest w stanie wysokim , naciśniecie przycisku zmienia na niski).
W logu jest wpis "Button Hotplug driver version 0.4.1 .." , ale mimo to metodą na hotplug ,ani na nic w  rc.buttons nie reagują.
Można coś na szybko zrobić ,żeby zmienić ten stan ?

2

Odp: QCA4531 Obsługa przycisków

Nie. Jeżeli one nie są oprogramowanie to na "szybko" tego nie zrobisz, poza cyklicznym sprawdzaniem stanu gpio.

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

3

Odp: QCA4531 Obsługa przycisków

A jakaś zamiana tych oprogramowanych nie wchodzi w grę ?

4

Odp: QCA4531 Obsługa przycisków

Zmień soft na urządzeniu po prostu.

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

5

Odp: QCA4531 Obsługa przycisków

Musiałbym mieć zdaje się osobno plik kernela osobno rootfs , takiego softu raczej dla tego procesora nie ma dostępnego , a zeby samemu go skompilować to nie dam rady.

6

Odp: QCA4531 Obsługa przycisków

Więc nie masz innego wyjścia jak napisanie skryptu który w kółko odpytuje gpio po prostu.

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

7

Odp: QCA4531 Obsługa przycisków

Ok, od czegoś trzeba zacząć. Może jakaś podpowiedź , jak wgrać nowy soft na takie coś:

Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.670000] 9 cmdlinepart partitions found on MTD device spi0.0
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.680000] Creating 9 MTD partitions on "spi0.0":
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.680000] 0x000000000000-0x000000040000 : "u-boot"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.690000] 0x000000040000-0x000000050000 : "u-boot-env"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.690000] 0x000000050000-0x0000006a0000 : "rootfs1"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.700000] 0x0000006a0000-0x000000cf0000 : "rootfs"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.710000] mtd: device 3 (rootfs) set to be root filesystem
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.710000] 1 squashfs-split partitions found on MTD device rootfs
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.720000] 0x000000c60000-0x000000cf0000 : "rootfs_data"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.730000] 0x000000cf0000-0x000000d00000 : "apl"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.730000] 0x000000d00000-0x000000d10000 : "config"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.740000] 0x000000d10000-0x000000e80000 : "kernel1"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.750000] 0x000000e80000-0x000000ff0000 : "kernel2"
Sun Mar 22 07:58:25 2020 kern.notice kernel: [    0.750000] 0x000000ff0000-0x000001000000 : "art"
Sun Mar 22 07:58:25 2020 kern.info kernel: [    0.780000] libphy: ag71xx_mdio: probed

sysupgrade zdaje się szuka mtd "firmware".

8

Odp: QCA4531 Obsługa przycisków

rootfs i kernel 1 cię pewnie interesuje. kernel2 i rootfs1 to zapasowa partycja, niektóre routery tak mają.
apl  i config zawiera pewnie dane systemowe, art wiadomo co to jest.

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

9

Odp: QCA4531 Obsługa przycisków

No tak , i stąd potrzebuję dwóch plików , jeden dla rootfs i drugi dla kernel1... Nigdzie takich gotowych nie znajduję.

Tak, ten sprzęt ma zapasową partycję , wiem jak ją przełączyć ( trzeba zmodyfikować wpisy w bootloaderze) , ale może orientujesz się , czy sam bootloader może mieć wybór startu partycji ? ( próbowałem różnych kombinacji tych przycisków). Może masz doświadczenie z innych...

10

Odp: QCA4531 Obsługa przycisków

Albo uboot ładuje obraz z określonego adresu i go uruchamia, albo uboot wie że ma uruchomić obraz z partycji o określonej nazwie, ładuje go i uruchamia. Tak czy siak będziesz to miał w zmiennych uboota.

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

11

Odp: QCA4531 Obsługa przycisków

No i tak jest, ( adres startu się zmienia , oraz same nazwy partycji ,żeby zmienić "stronę" ).Natomiast chciałbym mieć wybór podczas startu uboota z ktorej by startowal ( ale to juz pewnie pobożne życzenia).

12

Odp: QCA4531 Obsługa przycisków

Uboot się o to nie zapyta bo nie masz jak odpowiedzieć na pytanie smile

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

13

Odp: QCA4531 Obsługa przycisków

Jakaś kombinacja przycisków najprościej smile
Swoją drogą po co takie zapasowe partycje jak i tak się ich nie przełączy bez ingerencji  startu tej pierwszej?

14

Odp: QCA4531 Obsługa przycisków

Nie zmienisz uboota żeby tak działał. Musiał być zmienić kod źródłowy i przekompilować/podmienić uboota.

Skąd wiesz że tak nie działa? Bo ładuje pierwszą i jak mu się nie uda to odwołuje się do drugiej?

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

15 (edytowany przez MiG25 2020-03-22 12:53:37)

Odp: QCA4531 Obsługa przycisków

bo wgrałem coś na siłę do aktualnego rootfs smile i było tylko w logu dużo błędów smile
Poza tym w printenv w uboot nie znajduję dwóch równoległych wpisów dla bootm i podziału tych partycji.

16

Odp: QCA4531 Obsługa przycisków

Możesz tego nie widzieć, uboot może mieć to w sobie. Uboot nie jest uniwersalny, jest to dedykowany kompilat dla danej płytki.

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

17

Odp: QCA4531 Obsługa przycisków

Widzę tylko aktualne w printenv , te co po upgrade i flashowaniu wpisuje skrypt do upgrade ,więc wnioskuję ,że tylko on te "stony" przestawia:

      1)
        echo "set to side 2"
        bootm_str="bootm ${KERNEL2_BOOTM}"
        bootargs_str="board=CUS531 console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),${MTD_SZ_ROOTFS1}k(rootfs1),${MTD_SZ_ROOTFS2}k(rootfs),${MTD_SZ_APL}k(apl),${MTD_SZ_CONFIG}k(config),${MTD_SZ_KERNEL1}k(kernel1),${MTD_SZ_KERNEL2}k(kernel2),64k(art) rootfstype=squashfs,jffs2 noinitrd"
        fw_setenv bootcmd $bootm_str
        fw_setenv bootargs $bootargs_str
        ;;
        2)
        echo "set to side 1"
        bootm_str="bootm ${KERNEL1_BOOTM}"
        bootargs_str="board=CUS531 console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),${MTD_SZ_ROOTFS1}k(rootfs),${MTD_SZ_ROOTFS2}k(rootfs2),${MTD_SZ_APL}k(apl),${MTD_SZ_CONFIG}k(config),${MTD_SZ_KERNEL1}k(kernel1),${MTD_SZ_KERNEL2}k(kernel2),64k(art) rootfstype=squashfs,jffs2 noinitrd"
        fw_setenv bootcmd $bootm_str
        fw_setenv bootargs $bootargs_str
        ;;
        *)
        echo "switch_boot_side: unexpected. curboot=$VAR_CURBOOT"
        exit 1
        ;;

18

Odp: QCA4531 Obsługa przycisków

Mam pliki aktualizujące od producenta ,openwrt-ar71xx-generic-cus531-16M-rootfs-squashfs.bin i openwrt-ar71xx-generic-cus531-16M-kernel.bin , co w nich wyedytować , żeby znaleść plik uruchamiany tylko za pierwszym razem ( chcę ściągnąć i zainstalować dropboxa i go uruchomić, ustawić  hasło ). Czy takie rzeczy tylko podczas kompilacji ?

19

Odp: QCA4531 Obsługa przycisków

Musiał byś rozpakować openwrt-ar71xx-generic-cus531-16M-rootfs-squashfs.bin (zrobić unsquashfs na nim), zmienić to co chcesz  (w /etc/uci-defaults są te wykonywane jeden jedyny raz) i złożyć obraz ponownie. Pewnie nie wiem jak, więc musisz się posiłkować tym co  robi openwrt i złożyć to ponownie.

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

20

Odp: QCA4531 Obsługa przycisków

Ta platforma przypomina gl.inet gl-ar300m, korzystając z podobnego uboota (przynajmniej board tak się samo przedstawia).

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

21

Odp: QCA4531 Obsługa przycisków

Są różnice: Tu jest QCA4531 i 64MB RAM ,jest tylko jeden port Ethernet wykrywany jako eth1 ( choć w systemie eth0 też się pokazuje).GL-ar300m ma  QCA9531 i 128MB RAM.
Tutaj do USB od razu podłączony jest konwerter TTL na PL2303 ( znaczy takie sterowniki się do niego ładują). To służy do komunikacji z Pompą Ciepła.
No i nie wiem czy też tak jest podzielony flash.
Być może bootloader by pasował , bo wygląda na standardowy , ale jeśli nie miałby obsługi zmiany "strony" lub awaryjnego wgrywania plików ,to nie ma co sibie zawracać głowy.

22

Odp: QCA4531 Obsługa przycisków

"podobny" Ty masz dedykowany soft do sterowania, więc nawet podmiana na generyczne openwrt było by strzałem w stopę bo  musiał byś wszystko ręcznie obsłużyć.

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

23 (edytowany przez MiG25 2020-03-26 08:37:36)

Odp: QCA4531 Obsługa przycisków

Ja ten soft do obsługi tej pompy to skopiowałem z tego ustrojstwa i uruchomiłem na wr1043nd v1 z podłączonym do USB konwerterem smile
Było to dość dawno , i być może nowsze wersje już na to nie pozwolą ,więc teoretycznie możnaby było na takie zabawy sobie pozwolić, tylko po co , jak być może zaraz aktualizacja będzie.

24 (edytowany przez MiG25 2020-05-03 08:45:55)

Odp: QCA4531 Obsługa przycisków

Cezary napisał/a:

Więc nie masz innego wyjścia jak napisanie skryptu który w kółko odpytuje gpio po prostu.

Napisałem skrypt , z niekończącą się pętlą while: do ....Generalnie zabawa z diodami po naciśnięciu jedneo przycisku , dwóch , a jak naciśnie się trzy to reboot.Stany przycisków to ciągle odpytywanie w sposób"cat /sys/kernel/debug/gpio"
W miarę to działa , ale pytanie ,czy taki skrypt nie będzie powodował wycieków pamięci ? Podobno skrypty napisane w ten sposób to powodują ?

25

Odp: QCA4531 Obsługa przycisków

Jeżeli programy które używasz w skrypcie nie mają wycieków pamięci to sam skrypt tez nie będzie miał.
Podobno krowy nie dają mleka jeżeli w pobliżu jest maszt sieci komórkowej, też tak słyszałem smile

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