ATNEL tech-forum
https://forum.atnel.pl/

[STM32] ETH + lwIP - jak zacząć?
https://forum.atnel.pl/topic19318.html
Strona 1 z 1

Autor:  mikandrzej [ 5 paź 2017, o 23:31 ]
Tytuł:  [STM32] ETH + lwIP - jak zacząć?

Witam ;)

Ostatnio męczę 3 zakupione zestawy NUCLEO, jednym z nich jest płytka Nucleo 144 w wersji F767ZI. Zawiera ona mikrokontroler STM32 z rdzeniem Cortex-M7. Na płytce znajduje się również zintegrowany moduł ethernet. Chciałbym zacząć przygodę z tym rodzajem komunikacji, aczkolwiek nie mogę się doszukac jakichkolwiek przykładów. Przynajmniej na pewno nie takich dotyczących obsługi przez biblioteki HAL generowane w CubeMX.

Udaje mi się ustawić interfejsy i zegary, ale nie mam pojęcia jak nawiązać jakąkolwiek komunikację za pomocą tego portu, a tym bardziej jak obsługiwać np stos TCP/IP.

Pytanie też się nasuwa, czy warto/czy konieczne jest używanie FreeRTOS? Nie mam z nim doświadczenia, być może warto się go nauczyć, ale chyba wolałbym na początek działać chociazby za pomocą pętli blokujących lub ręcznie obsługując przerwania.

Liczę na każde wskazówki :) pozdrawiam!
Mikołaj

Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka

Autor:  Zealota [ 6 paź 2017, o 08:48 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

Ja również dołączam się do pytania, z tym że chyba poszło nie na ten dział forum co trzeba

Autor:  MichalXY [ 6 paź 2017, o 10:29 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

https://stm32f4-discovery.net/2015/02/l ... stm32f4xx/ - co prawda jest to opis dotyczący STM32F429 ale być może jakoś nakieruje na właściwe tory ;) .

Autor:  SunRiver [ 6 paź 2017, o 12:56 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

https://github.com/cnoviello/stm32-nucleo144-f7

Autor:  mikandrzej [ 6 paź 2017, o 13:54 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

Dziękuję Wam za odnośniki. Zapoznam się z nimi w wolnym czasie :)

Jeszcze takie pytanie - czy warto używać FreeRTOS?
Projekt który planuję wykonać na STM32 to interfejs między TCP, a USART. To tak z grubsza :) reszta to obsługiwanie ramek i funkcje pośredniczące wymianie danych.

Autor:  SunRiver [ 6 paź 2017, o 16:53 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

Powiem tak ...
i tak i nie ... ale to zależy co ci jest potrzebne

Autor:  mikandrzej [ 10 paź 2017, o 18:10 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

No dobra, więc są postępy.

Udało mi się skompilować standardowy projekt wygenerowany w STM32CubeMX pod moją płytkę (Nucleo 144 F767ZI).
Płytka daje się pingować dopiero jak w pętli głównej umieszczę procedurę "MX_LWIP_Process();".
Podczas próby kompilacji pojawia mi się kilka błędów:

Obrazek

Wygląda na to, że biblioteka poszukuje stałej:
Obrazek

tymczasem Cube generuje takie stałe:
Obrazek

Tymczasowo problem rozwiązuje dodanie na początku każdego pliku z nagłówkami definicji:
Obrazek
Czyli w stałych generowanych przez Cube nie powinno być członu "NUM_".


Czy ktoś wie lub domyśla się gdzie popełniam błąd? Sprawdzałem jeszcze na innym komputerze, aby wyeliminować nieprawidłową instalacją CubeMX, problem pozostał. Wygląda, jakby CubeMX albo nie dołączało jakiegoś istotnego pliku, albo producent popełnił jakiś błąd.

Proszę o pomoc :)
Pozdrawiam:
Mikołaj

Autor:  mikandrzej [ 12 paź 2017, o 14:11 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

Udało się.

Generalnie jakby ktoś szukał przyczyny takich objawów, to nie ma błędu w bibliotece STM32, tylko jest to problem z ECLIPSE. Autor biblioteki lwIP użył różnych makr i stałe w stylu "MEM_TCP_PCB" nie są ustalane dosłownie tylko za pomocą makr #define . Tak naprawdę errory pojawiają się w edytorze Eclipse, ale kompilator radzi sobie z nimi bez problemu. Po prostu nie jest w stanie ich zindeksować.

Biblioteka działa ;)


Jak narazie mam jeszcze problem z wyciekiem pamięci, gdyż po wysłaniu kilku wiadomości do i z zestawu uruchomieniowego, transmisja się rozłącza i nie daje się nawiązać połącznenia ponownie. No, ale to już w dalszych testach :)

Autor:  Brew [ 26 mar 2018, o 15:50 ]
Tytuł:  Re: [STM32] ETH + lwIP - jak zacząć?

Jest przykładowy projekt FreeRTOS+LWIP+ETH w firmware:

Cytuj:
~/STM32Cube/Repository/STM32Cube_FW_F7_V1.11.0/Projects/STM32F767ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/


Użycie RTOS pozwala spawnować wątki. W moim projekcie komunikuję się z kilkoma urządzeniami więc to przydatne. Ten przykładowy projekt zawiera poprawną inicjalizację (GPIO, to co wygenerowałem w CubeMX miało błędy, chyba dlatego, że zmieniałem tryb z MII na RMII i ponawiałem generację), trochę musiałem poprawić pod tym kątem projekt CubeMX, a bezpośrednio użyć tego projektu z firmware nie mogłem, bo ma coś nie tak z adresami w skrypcie LD i działa tylko w trybie debug. Płytka odpowiada na pingi i działa serwer http (w swoim wątku).


Chcę wysyłać pingi. Przykład w LWIP (w pakiecie/katalogu contrib) wymaga LWIP_RAW==1 w opcjach, ale to dziwne, powinno wystarczyć samo LWIP_ICMP==1 ? Wie ktoś?

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/