czwartek, 18 marca 2021

Projekt płytki dla STM32G0 i instalacja lekkiego środowiska firmy SEGGER.


Tak to nie pomyłka :), na moim blogu poświęconym głównie wyrobom firmy Microchip postanowiłem zajrzeć do ogródka "konkurencji" czyli do wyrobu firmy STM32. A cóż mnie skłoniło do takiego szalonego pomysłu ?, ano zwykła ludzka ciekawość :) i chęć poszerzenia swoich horyzontów wiedzy. Na widelec biorę przedstawiciela relatywnie nowej serii STM32G0. Budżetowy MCU oparty o rdzeń Cortex M0+. Ciekawostką jest tutaj to, że w tej serii STM próbował poprawić odporność na zakłócenia EM. Generalnie z tego co wiem to  STM-y słabo wyglądały na tym polu. Drugą cechą STM-ów jest relatywnie słaba stabilność zegarów RC, przez co np. użycie USB bez zewnętrznego kwarca nie jest tutaj zalecane. W serii STM32G0 producent  deklaruje, że stabilność zegara RC została poprawiona.

To co mnie zachęciło do wyboru tej serii MCU, to m.in fakt, że ta seria została  obłaskawiona przez firmę Keil w swoim komercyjnym produkcie uVison. I możemy bezpłatnie używać tego profesjonalnego narzędzia a jedynym ograniczeniem jest rozmiar kodu do 256 kB czyli całkiem sporo. Zaletą STM32G0 jest stosunkowo szybkie prototypowanie z uwagi m.in na fakt, że mamy tylko dwa piny na zasilaniu co upraszcza projekt płytki. STM32G0 dostępne jest również w małych obudowach co jest również zaletą.

W mojej koncepcji zapoznania się z STM32G0 wybieram stary sprawdzony sposób, który daje mi najwięcej korzyści w progresie poszerzania wiedzy na temat MCU i najwięcej frajdy.

Czyli sam strugam płytkę :), dzięki czemu już na wstępnym etapie zapoznaję się bliżej z MCU. 98,1% ludzi zapewne wybrała by tutaj zakup płytki Nucleo bo tak jest najprościej i najwygodniej. Ale tam gdzie jest za dużo wygody to nasz mózg tępieje a poza tym szybciej się nudzimy, no takie jest moje zdanie.

Wybrany przeze mnie MCU to konkretnie STM32G071KBT6 w obudowie 32-pin. . Płytkę , którą wykonam zaopatrzę w dwa złącza Mikroelektroniki na dodatkowe moduły . Do programowania MCU mam zamiar użyć najlepszych dostępnych narzędzi czyli J-Linka firmy SEGGER np. tej małej pchełki J-Link EDU Mini. Na płytce pojawi się standardowe gniazdo w pełnym wymiarze JTAG. Środowiskiem w jakim mam zamiar porozmawiać z STM32 będzie Seeger Embeded Studio czyli ultra szybkie środowisko do programowania ARM-ów . To profesjonalne narzędzie programistyczne jest całkowicie darmowe dla zastosowań niekomercyjnych i bez  żadnych ograniczeń np. co do wielkości kodu. Odrzucam na starcie bibliotekę HAL m.in dlatego, że widziałem na własne oczy  jak to potrafi nieźle przymulić sprzęt ,niech używają jej ci co tego potrzebują lub ci co nie potrafią inaczej. 

Moje pierwsze przymiarki do projektu płytki :

Na płytce umieściłem gniazdo do modułu HC5, kilka modułów ostatnio sobie takich sprawiłem (dziękuję Chris bo to dzęki tobie je mam :) ) , więc gdzieś je muszę wetknąć :). Będzie przyczynek aby coś uruchomić na płytce :).

Projekt płytki poszybował do fabryki płytek. Czekam na efekt mojego rękodzieła.

W międzyczasie przeglądam dokumentację czyli manual reference i próbuję poczuć ten MCU.

W oczekiwaniu na płytki . Pokażę jak przygotować środowisko Seeger Embeded Studio do rozmowy z STM32G0. Po tym linkiem ściągamy sobie spakowaną paczkę z programem. Ja wybieram paczkę dla systemu Linux 64bit i na przykładzie tego systemu pokażę jak przygotować sobie środowisko i programator do współpracy z STM32G0. Po rozpakowaniu paczki otrzymamy folder o dosyć długiej nazwie, ja zmieniam nazwę folderu na krótką np. segger. W środku folderu mamy dwa pliki INSTALL.txt i install_segger_embedded_studio. Pierwszy plik to instrukcja instalacji a drugi to plik instalacyjny.

Czynności jakie ja wykonuję w konsoli to :

cd /home/wat/Pobrane/segger/     - ustawiam ściężkę dostępu do plików w katalogu segger

sudo chmod u+x install_segger_embedded_studio     - nadaję uprawnienia

sudo ./install_segger_embedded_studio                    - uruchamiam instalację

Środowisko mamy zainstalowane teraz zajmiemy się programatorem. Programator jakiego ja używam  to J-Link Edu Mini , bez problemu zakupimy go na naszym rynku za ok 80 zł. Jest on wart każdych pieniędzy :). Zaprogramujemy nim prawie dowolnego ARM-a od dowolnego producenta. Miałem już przyjemność działania z nim i MCU ATSAM ze stajni Microchipa. Dodatkowo warto dokupić kabelek przejściówkę na pełnego JTAG-a , bez problemu dokupimy u nas taki kabelek.

Aby  J-Link był widziany przez system i nasze IDE ,musimy doinstalować specjalną paczkę o nazwie J-Link Software and Documentation pack for Linux, DEB installer, 64-bit 

Po ściągnięciu paczki klikamy ją i uruchamia się proces instalacji, w sumie bez naszej ingerencji. Po instalacji paczki podpinamy do PC nasz programator za pomocą kabla USB. Zdarzy się, że kabel USB może być np uszkodzony i system nie zobaczy podłączonego urządzenia USB, wtedy w konsoli wpiszmy komendę lsusb i pokaże się lista wszystkich urządzeń USB podpiętych do naszego PC, wśród nich powinien być nasz programator SEGGER tak jak poniżej na obrazku :

 

Jeśli nasz programator jest na liście urządzeń, odpalamy ponownie konsolę i wpisujemy jak poniżej :

 


Na obrazku powyżej widzimy katalog w którym zainstalowane zostały pliki do obsługi naszego programatora. W konsoli musimy sobie ustawić ściężkę dostępu do katalogu. Jedyne co może się zmienić w stosunku do mojego obrazka to nazwa katalogu JLink_V697a a w szczególności numerek w nazwie. Po uzyskania dostępu do w/w katalogu uruchamiamy plik JLinkExe z uprawnieniem admina (czyli sudo i hasło). Podczas uruchomienia w/w pliku , nastąpi aktualizacja naszego programatora i połączymy się z nim czego zwieńczeniem będzie komunikat o ustanowieniu połączenia. Cała akcja na obrazku powyżej.

Od tego momentu nasz programator powinien być widoczny w środowisku SEGGER

Odpalamy środowisko SEGGER-a,  pierwsze co nas uderzy po twarzy to niesamowita prędkość od startu do gotowości do pracy, nieosiągalne przez kobyłę Eclipsową STM32CUBE IDE. Po uruchomieniu środowiska zobaczymy przykładowy projekt, jakieś tam bzdety. Nie przejmować się surowością tego co zobaczymy to tylko pozory, tutaj kryje się moc . Pierwszą czynnością będzie doinstalowanie paczki z naszym MCU czyli STM32G0. W tym celu wybieramy w górnym menu Tools - > Package Manager , wyskoczy nam okienko o nazwie Select Packages, wyszukujemy w nim STM32G0 i klikamy dwa razy w pole po prawej stronie aż wskoczy nam napis Install

 

Potem na dole okienka klikamy Next , Next , Finish. Od tej chwili nasze programy będą widziały STM32G0. Ostatnim krokiem konfiguracji środowiska będzie wyświetlenie potrzebnych ikon narzędziowych, na starcie są one ukryte. W tym celu wybieramy z górnego menu View -> Toolbars -> Standard, Build, Debug. Pod górnym menu uaktywnią się ikonki narzędziowe jak poniżej :


Od tej chwili mamy wszystko gotowe na przywitanie i rozmowy z naszym STM32G0. Chińczyk w między czasie poinformował mnie, że płytki wysłane :), tempo nie osiągalne w Europie Zachodniej. I moje "dzieło" w realu :
 

 
Na płytce znajduje się mikrokontroler STM32G071KBT6, chochlik przestawił mi dwie ostatnie literki. Płytka jak zwykle sprawiła mi dużą radość zarówno na etapie tworzenia jak i podziwiania efektu końcowego :).
 
 
Pozdrawiam 
 
PICmajster
picmajster.blog@gmail.com
 

 

 



4 komentarze:

  1. Z pic32mm w tme też nie jest dobrze , ogólnie Microchip serię MM olał i widzę po twoim artykule że zmienia rdzeń na cortex-m0+ . Kompilator dla -O3 płatny ,dokumentacja pic32mm z błędami dlatego stm32go uważam za dobry ruch

    OdpowiedzUsuń
  2. Nie będę z Tobą polemizował Szanowny czytelniku ani się z Toba licytował co jest gorsze a co lepsze i co jest lepszym wyborem a co nie i ewentualnie dla kogo. Takich dyskusji mamy pełno na elektrodzie i niech one tam pozostaną.

    OdpowiedzUsuń
  3. A płytki w postaci gerberowej będą dostępne ?

    OdpowiedzUsuń
  4. Nie wiem jeszcze, nie zdecydowałem. Nie wykluczone , że płytki np. zmontowane wystawię na portalu aukcyjnym.

    OdpowiedzUsuń