Witam, STM32MP157 programuję z qt. Zastanawiam się teraz jak zasilić wizualizację danymi. Najprawdopodobniej do qt będę musiał podłączyć bibliotekę (najlepiej w C/C++) która pozwoli na sterowanie pinami, interfejsami SPI itd... Pytanie jaka bibliotekę mam podłączyć i czy coś trzeba skonfigurować w samym STM , przypominam że jest to STM z Linuxem .
Co.to jest czesc wizualizacyjna? O jakie zasilanie wizualizacji danymi chodzi? Dane możesz ładować np z pliku lub bazy danych. Może napisz coś więcej co chcesz osiągnąć bo na razie to niewiele wiadomo.
STMa programuję z Qt który pozwala na towrzenie cześci wizualizacyjnej i logicznej. Jednak aby dostać siędo interfejsów STMa, zapewne potrzebuję bibliotek ? Jakie to biblioteki i skąd je pobrać?
https://github.com/matthiasbock/libcan ale chyba musisz trochę się podszkolić z programowania zanim zaczniesz robić konkretne projekty.
Skąd przekonanie że mam niewystarczającą wiedzę z programowania ? :) Z STMami nie mam doświadczenia stąd ten post.
Wysłałeś mi bibliotekę do komunikacji z urządzeniem dostępnym w systemie - "can". Taki moduł to ja mam dostępny w bibliotakch qt.
Prosiłem o to aby wskazać/podpowiedzieć jak dostać się do wysterownai/odczytania GPIO w STM., jaką konkretnie biblioteką .
Zacznijmy od początku, pomijająć qt bo widzę @Adin że nie masz o tym zielonego pojęcia.
Loguję się do wskazanego STMa za pomocą SSH, piszę w konsoli program w C, jaką bibliotekę mam dołączyć aby móc sterować GPIO lub innymi interfejsami w tym STMie?
Na hoscie z którego mam narzędzie do programowania STMa powinienem zainstalować SDK
z poniższego linku i dołączyć biblioteki do mojego projektu ?
https://www.st.com/en/embedded-software/stm32mp1dev.html#get-software
@ienecode: ja bym zaczynał od zakładki "Documentation" i tam przejrzał pierwszych kilka dokumentów "Get Started and User's Guide "
I poszukał przykładu kodu, moze beda po zainstalowaniu jakiegoś narzędzia IDE czy co tam dają
Kazdy producent ma swoja filozofię
Kolejna sprawa to przemyslenie koncepcji JAK TO MA WSZYTKO DZIAŁAC
Bo jak piszesz o QT to zakładam ze to uruchamiasz na Linux PC i jakims interfejsem komunikujesz sie z STM
Musisz wybrać jakiś interfejs przemyslec protokół itp.
Qt znam , ale tylko na desktop. Teraz chciałbym poeksperymentować z embeded.
Środowisko i biblioteki Qt mam zarówno na Linux'ie, jak i na Windowsie.
Tak jak wcześniej pisałem mam projekt który na razie zawiera samo GUI, które oczywiście wgrywa się i działa na docelowym urzadzeniu tj. STM32.
Teraz muszę do mojego projektu podlinkować biblioteki aby obsługiwać peryferia w tym mikrokontrlerze.... nie bardzo wiem jakie, dlatego szukam kogoś kto ma doświadczenie z STMami i mi coś podpowie.
Czy możliwe że po zainstalowaniu STM32CubeProgrammer , gdzieś w katalogach instalacyjnych znajdę biblioteki do obsługi mojego mikrokontrolera ?
Ten STM (STM32MP157) to stosunkowo nowa linia produktów od ST. Typowy STM to jest zwykle mikrokontroler (rdzenie serii M). Tym masz płytkę której odpowiednikiem są układy serii Raspberry Pi. Nie miałem przyjemności z tą płytką, ale jeśli ST zrobiło to dość porządnie to jak wgrasz ich distro Linuxa (na razie jesteś za cienki na własne YOCTO) to powinni oferować standardowe Linuxowe interface systemowe dla i2c, spi czy gpio - więc to tylko ogólna rzecz Linuxowa, drivery działają sobie na poziomie kernela. Poszukaj sobie jak to się ogarnia lub manualni konkretnie dla STM32MP157, nie patrz na inne płytki bo to inna kategoria sprzętu.
W istocie ten proc posiada wbudowany mikrokontroler który najpewniej może przejąć część obsługi IO i pewnie nawet da się z nim gadać z poziomu Linuxa ale jego zastosowanie jest dość specyficzne - kiedy potrzebujesz mieć rzeczy RT wtedy przenosisz częśc logiki na taki kontrolerek lub nawet jakieś proste interface sprzętowe ogarniasz programowa na nim zamiast na poziomie kernela. Fajna rzecz, ale na Twoim aktualnym poziomie zrozumienia dokąd aktualnie zmierzasz - absolutnie do pominięcia.
@Herr Mannelig z tego co rozeznałem do tej pory to raczej do tej nowej linii STM z linuxem trzeba, albo można też podejść tak samo jak do typowych STM.
Co prawda logowałem się do tego STMa po SSH i rzeczywiście są dostępne urządzenia jak w standardowym komputerze /dev/ .... nie zmienia to faktu że trzeba mieć biblioteki do tego typu procesora i linkować je do swojego projektu aby "pogadać" z peryferiami. Z tego co czytałem to biblioteki te udostępniają API które pozwala w łatwy sposób obsługiwać peryferia mikrokontrolera i są to biblioteki HAL.
Pytanie do tych co programują STMy.... Biblioteki HAL są uniwersalne dla całej rodziny STM32, czy dla każdego typu są dostępne jako odrębne ?
Gdzie znaleźć te biblioteki już skompilowane z rozszerzeniem .lib, lib.a do STM32MP157 i dokumentacje do nich ?
@Hello_im Figher Jeśli chodzi o system jest dostarcozny przez qt.
Podsumowując aby programować STMy z linuxem peryferia obsługuje się z userspace linuxa.
Natomiast jeśli skorzystamy z innego modulu tj: Qt-for-MCU , kóry jest przeznaczony dla rodziny STMów bez Linux'a. To do projektu qt nalezy już dodać biblioteki z APi umożliwiającym komunikację z peryferiami. Pytanie gdzie znaleźc biblioteki dla tego procesroa : STM32H750B-DK z rozszerzeniem .lib, lib.a?
ienecode napisał(a):
@Herr Mannelig z tego co rozeznałem do tej pory to raczej do tej nowej linii STM z linuxem trzeba, albo można też podejść tak samo jak do typowych STM.
Co prawda logowałem się do tego STMa po SSH i rzeczywiście są dostępne urządzenia jak w standardowym komputerze /dev/ .... nie zmienia to faktu że trzeba mieć biblioteki do tego typu procesora i linkować je do swojego projektu aby "pogadać" z peryferiami. Z tego co czytałem to biblioteki te udostępniają API które pozwala w łatwy sposób obsługiwać peryferia mikrokontrolera i są to biblioteki HAL.
Pytanie do tych co programują STMy.... Biblioteki HAL są uniwersalne dla całej rodziny STM32, czy dla każdego typu są dostępne jako odrębne ?
Gdzie znaleźć te biblioteki już skompilowane z rozszerzeniem .lib, lib.a do STM32MP157 i dokumentacje do nich ?
Nie rozumiesz. Wszystkie inne STMy to jest bare metal. Ty tutaj programujesz na poziomie Linuxa. Nie mieszaj sobie rzeczy. Twoja płytka to nie jest mikrokontroler. ST pewnie dostarcza prekompilowane SDK być może wrappując rzeczy z userspace Linuxa.
Szukam info w sieci i znalazłem jeszcze to że STM32MP1 jest tak zaprojektowany że ma dwa rdzenie: Cortex-A7 i Cortex-M4.
Chodzi o to że zazwyczaj praktykuje się podejście że na tym pierwszy tworzymy GUI (tak jak ja stworzyłem GUI w Qt) , natomiast na drugim rdzeniu obsługę peryferii. Podejscie jest jak na standardowym STMie za pomoca np. STm32 Cube programmer.
Dane jakie chcemy wyświetlać w GUI pakujemy i między rdzeniami przesyłamy przez IPC - np wirtualny UART ..
Masz taki zestaw uruchomieniwy:
STM32MP157C-DK2
STM32MP157C-EV1 ?
Tutaj przykłady na github
https://github.com/STMicroelectronics/STM32CubeMP1/tree/master/Projects
i tam głębiej są przykłady na wszystkie interfejsy
@Marius.Maximus tak zgadza się co przesyłasz . to są przykłady na sam rdzeń Cortex-M4. Ja zakładając temat zapytałem zbyt ogólnie , tz o podejscie do budowy kompleksowej aplikacji tz GUI z obsługą peryferii. Wyjaśnienie w poście wyżej jak trzeba podeść do tej rodziny STM.
ienecode napisał(a):
Szukam info w sieci i znalazłem jeszcze to że STM32MP1 jest tak zaprojektowany że ma dwa rdzenie: Cortex-A7 i Cortex-M4.
Chodzi o to że zazwyczaj praktykuje się podejście że na tym pierwszy tworzymy GUI (tak jak ja stworzyłem GUI w Qt) , natomiast na drugim rdzeniu obsługę peryferii. Podejscie jest jak na standardowym STMie za pomoca np. STm32 Cube programmer.
Dane jakie chcemy wyświetlać w GUI pakujemy i między rdzeniami przesyłamy przez IPC - np wirtualny UART ..
Nie, robi się tak w bardzo specyficznych przypadkach gdy potrzebujesz zależności czasu rzeczywistego. Do wysłania danych po i2c, spi czy wystawienia gpio wystarczy obsługa od strony Linuxa i nie trzeba nic komplikować. Tym bardziej, że wszystkie powszechne interface mają akurat implementację sprzętową.
Gdybyś miał peryferia gadające po niestandardowym protokole po GPIo to byś to implementował na M-ce lub potrzebował specyficznych zależności czasowych w stylu twardej gwarancji, np.po otrzymani komendy po spi nie później niż po 5ms wystawisz odpowiedź, a przy okazji musisz zrobić jakieś rzeczy na Linuxie. Wtedy gdy Linux się spóźni na poziomie MCU traktujesz to jako porażkę zadania i wysterowujesz na mikrokontrolerze adekwatnie wyjścia do faila zachowując zależności czasowe, To są scenariusze gdy tej M-ki się używa.
Duzo się rozjasniło. Dzięki.
Pytanie, dlaczego w peryferiach nie ma magistrali CAN :
https://wiki.st.com/stm32mcu/wiki/Category:Getting_started_with_STM32_system_peripherals
?