Popularny post klonyyy Napisano Czerwiec 15, 2023 Popularny post Udostępnij Napisano Czerwiec 15, 2023 Hej, Chciałbym wam przedstawić mój ostatni popołudniowy projekt, którego używam w pracy i przy projektach z udziałem mikrokontrolerów STM32. Krótko mówiąc jest to opensourceow'a kopia niewspieranego już STMStudio. Dla tych, którzy nie słyszeli wcześniej o tym programie, był to realtime'owy logger wartości zmiennych, które były odczytywane przy pomocy programatora STlink bezpośrednio z mikrokontrolera przy użyciu interfejsu debugowego. Genialna sprawa do strojenia regulatorów PID, podglądu zmiennych procesowych, konfigów, czy nawet sterowania wykonaniem programu. Narzędzie o tyle fajne, że jest bezinwazyjne (nie zmienia zachowania softu zależnie od tego czy z niego korzystamy czy nie), pozwala na odczyt z częstotliwością dochodzącą nawet do 1kHz, przy niewielkiej ilości logowanych zmiennych, a także pozwala na zapisywanie wartości z poziomu GUI. Niestety od jakiegoś czasu jest niewspierane, a jego następca czyli Cube Monitor jest bardzo ograniczony i wydaje się również być obecnie porzucony. Dodatkowo STMStudio ma problem z dekorowanymi (manglowanymi) nazwami obiektów C++ - wbudowana wyszukiwarka ich po prostu nie widzi, a dodatkowo program działa tylko na Windowsie. Dochodzi do tego kilka wkurzających bugów i w efekcie program przestaje być już tak atrakcyjny. Nie mając innych alternatyw postanowiłem zrobić swoje narzędzie w oparciu o różne projekty dostępne na Githubie. Główne założenia to wsparcie dla Windowsa i Linuxa oraz obsługiwanie C++. W chwili obecnej projekt jest we wczesnym stadium, jest używalny ale nie ma jeszcze wszystkich ficzerów STMStudio. Postanowiłem o nim napisać teraz ze względu na to, że może akurat ktoś zdecyduje się spróbować nim pobawić i wrzuci mi jakiś feedback, a ja będę wiedział co trzeba dopracować/zmienić w pierwszej kolejności. Aktualnie sam projekt to nie są jakieś wyżyny programowania, nad refactorem pracuję w wolnych chwilach - z czasem powinno być lepiej. Zachęcam do uwag i sugestii Poniżej link do repa na Githubie: https://github.com/klonyyy/STMViewer Na razie testy przeprowadzałem tylko na maszynach wirtualnych i komputerze z Windowsem, ale założenie jest takie, że pobierając installera z strony z Releasami (po lewej stronie) i instalując program powinien on ruszyć W razie problemów jestem do dyspozycji, tutaj czy na Githubie. Jako, że softwareowe projekty zazwyczaj bywają nudne jeśli chodzi o opis, to wrzucam gifa z działania programu, tak na zachętę Postaram się wrzucać tutaj ważniejsze update'y jako posty, możecie także zajrzeć na bloga, tam pojawiać się będą posty w j. angielskim. 14
Treker (Damian Szymański) Czerwiec 16, 2023 Udostępnij Czerwiec 16, 2023 @klonyyy dzięki za informację, bo program wygląda bardzo ciekawie - faktycznie taki podgląd przydaje się podczas tworzenia wielu projektów
Gieneq Czerwiec 21, 2023 Udostępnij Czerwiec 21, 2023 @klonyyy wygląda super A patrzyłeś na Serial Wire Viewer? Używa dodatkowy pin Stlinka SWO, można z tym wyświetlać wykresy w Cubie. 1
klonyyy Czerwiec 23, 2023 Autor tematu Udostępnij Czerwiec 23, 2023 @Gienek powiem szczerze, kiedyś miałem na oku SWO, ale przy okazji zastosowania do logowania przy użyciu tego narzędzia: https://github.com/rokath/trice. Nie pamiętam czemu odpuściłem i nie zgłębiłem tematu. W sumie od wtedy nie używałem SWO i nie interesowałem się nim więcej, do czasu aż napisałeś o SWO w kontekście wykresów w Cubie Postanowiłem sobie poklikać i parę ficzerów bardzo mi się spodobało: 1. Sampling profiler oparty o PC 2. Exception trace - fajna sprawa do logowania przerwań, niestety w przypadku dużej liczby przerwań mam ciągły overflow (może źle szukałem ale nie widzę opcji filtracji przerwań w Cubie czy rejestrach) 2. Porty ITM które można wykorzystać na wiele sposobów - np ręczne, wybiórcze logowanie przerwań co niejako rozwiązuje poprzedni problem Z wad, które zobaczyłem po krótkiej zabawie: 1. Wyświetlanie zmiennych na wykresie często mi się zacinało, a overflow pakietów wywalał mi całkowicie Cuba Ograniczenie do czterech logowanych zmiennych też nie pozwala na wiele, ale to zrozumiałe - to jest małe narzędzie do szybkiego podglądu. 2. Brak wizualnego przedstawienia przerwań, tylko widok statystyczny - czasami taki pogląd pozwala wyłapać które przerwanie wywłaszcza które itp. 3. Czas wymagany na włączenie debugera, aby podejrzeć wartości zmiennych jest dosyć długi w porównaniu do kliknięcia przycisku start w np STMStudio. Ogólnie wg mnie super sprawa - ciekawi mnie czy byłbym w stanie jakieś funkcjonalności zawrzeć w ramach STMViewera. Z tego co widzę libka z której korzystam do obsługi stlinka nie posiada wsparcia dla SWO. Może kiedyś poczytam ile implementacja czegoś takiego by zajęła. Dzięki za przypomnienie o tej funkcjonalności! 1
MR1979 Czerwiec 24, 2023 Udostępnij Czerwiec 24, 2023 (edytowany) 15 godzin temu, klonyyy napisał: 3. Czas wymagany na włączenie debugera, aby podejrzeć wartości zmiennych jest dosyć długi w porównaniu do kliknięcia przycisku start w np STMStudio. W CubeIDE możesz stworzyć profil debugowania który pomija fazę kompilacji kodu oraz wgrywania do pamięci. Można wtedy się podłączyć do układu w dowolnym momencie i rozpocząć debugowanie. Tu instrukcja: https://community.st.com/t5/boards-and-hardware-tools-mcus/connecting-to-running-target/td-p/272666 Co do twojego programu to zapowiada się ciekawie i integracja SWO wydaje się naturalną drogą dalszego rozwoju. Pozdrawiam, Marek Edytowano Czerwiec 24, 2023 przez MR1979 1
klonyyy Czerwiec 24, 2023 Autor tematu Udostępnij Czerwiec 24, 2023 Przed chwilą, MR1979 napisał: W CubeIDE możesz stworzyć profil debugowania który pomija fazę kompilacji kodu oraz wgrywania do pamięci. Można wtedy się podłączyć do układu w dowolnym momencie i rozpocząć debugowanie. Pewnie masz na myśli tzw. attach - czasami korzystam z tego trybu, ale z tego, co pamiętam, nadal jest paru sekundowe opóźnienie, aż debugger się podłączy, Cube zmieni konfigurację wyświetlania środowiska itp. Niemniej jednak przyspieszy to nam pracę o kroki, które wspominałeś. 1
Gieneq Czerwiec 26, 2023 Udostępnij Czerwiec 26, 2023 @klonyyy ooo, cieszę się W Cubie jest trochę narzędzi. Czasem używam podgląd pamięci, działa też z zewnętrznymi pamięciami memory mapped. Ostatnio pracuję z Azure RTOS, do tego jest też kilka przydatnych widoków - profiler dla wątków, nawet pokazuje, że np wątek_a jest zablokowany przez semafor_1. Jest też TraceX, który robi nagranie wykonania i później możesz odtworzyć sekwencje wątków. 2
Popularny post klonyyy Wrzesień 14, 2023 Autor tematu Popularny post Udostępnij Wrzesień 14, 2023 Hej, Po tym jak @Gieneq wspomniał o wyjściu SWO, trochę z nim poeksperymentowałem i udało mi się dopisać do STMViewera moduł w którym można w łatwy sposób profilować swój kod, sprawdzać czasy wykonania przerwań, ich kolejność, czy wyświetlać inne bardzo szybkie sygnały. Według mnie jest to fajna alternatywa dla podpinania GPIO do procka i czytania stanu przy użyciu oscyloskopu czy analizatora stanów, bo wymaga jedynie pinu SWO. Tradycyjnie GIF na zachętę: Link do repa: https://github.com/klonyyy/STMViewer Link do posta na blogu: https://pwwprojects.blogspot.com/2023/09/stmviewer-update-trace-viewer-module.html 2 1
Treker (Damian Szymański) Wrzesień 14, 2023 Udostępnij Wrzesień 14, 2023 @klonyyy dobra robota, świetnie się prezentuje!
Popularny post Gieneq Wrzesień 15, 2023 Popularny post Udostępnij Wrzesień 15, 2023 @klonyyy wygląda super Ostatnio robiłem coś przy płytce na której nie miałem wolnego pinu żeby podpiąć pod oscyloskop, a chciałem sprawdzić czy coś się wywołuje bez debugera. Cube Monitor też się tu sprawdza, tylko służy do śledzenia zmiennych globalnych. W przyszłym tygodniu zapoznam się z twoim repo. 3
klonyyy Październik 23, 2024 Autor tematu Udostępnij Październik 23, 2024 Hej, jakiś czas nie wrzucałem tu updateów, ale temat STMViewera jest nadal aktualny - chociaż już pod nową nazwą - MCUViewer. Zmiana nazwy wynikła z współpracy z SEGGER'em - firmą produkującą programatory J-Link. Dzięki temu program nie jest już ograniczony tylko do mikrokontrolerów STM32. JLinki są teraz obsługiwane w module Variable Viewer, czyli module samplującym (w tym w trybie HSS, czyli takim w którym możemy samplować z bardzo wysoką częstotliwością, nawet >50kHz), oraz Trace Viewer czyli module dekodującym dane z pinu SWO. Aktualnie pracuję nad kilkoma nowymi funkcjonalnościami - jeśli macie jakieś pomysły na usprawnienia, chętnie ich wysłucham Link do repa: https://github.com/klonyyy/MCUViewer 2
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »