[2] Atollic TRUEStudio STM32 – jak zacząć?

W drugiej części artykułu (pierwsza jest dostępna pod adresem) skupimy się na omówieniu debugowania pracy programu z użyciem środowiska True Studio.

 

Debugowanie

Debugowanie programu jest bardzo istotnym elementem pracy nad projektem. Żeby było możliwe to potrzebny jest odpowiedni program uruchomiony na komputerze i współpracujący z nim sprzętowy połączony zazwyczaj interfejsem USB układ debugera sprzężony z układami programatora/debugera z mikrokontrolerze.

Debuger pakietu True Studio jest oparty o standard GDB (GNU debugger). Serwer GDB łączy środowisko graficzne True Studio ze sprzętowym debugerem przez interfejs USB – rysunek 15.

Rys. 15. Idea działania debuggera Atollic True Studio

 

Proces debugowania pokażemy na prostym przykładzie. Szkielet programu wygenerowany przez kreatora projektu uzupełnimy o prostą funkcjonalność polegającą na cyklicznym zapalaniu i gaszeniu diody LED2 zabudowanej w module NUCLEO-F401 RE. Dioda jest połączona anodą z linią portu PORTA5 (PA5). Żeby sterowanie linią portu było możliwe to trzeba wykonać kilka prostych czynności konfiguracyjnych:

  • Włączyć taktowanie modułu portów
  • Ustawić kierunek linii PA5 jako wyjściową
  • Ustawić typ portu jako push-pull
  • Określić maksymalną częstotliwość pracy portu

Konfiguracja portu i nieskończona pętla, w której jest cyklicznie zmieniany stan linii GPA5 zostały pokazane na listingu 1.

 

List. 1. Konfiguracja linii PA5 i pętla cyklicznego sterowania diodą LED2

 

List. 2. Programowe opóźnienie

Przed uruchomieniem sesji debugowania trzeba podłączyć moduł NUCLEO – F401RE do portu USB komputera na którym jest uruchomiony Atollic True Studio.

Testowy projekt trzeba skompilować z opcją kompilacji Debug ustawiana w opcjach kompilatora – rysunek 16.

Rys. 16. Opcja kompilacji Debug

 

Sesję debugowania uruchamia się klikając na ikonę Debug umieszczona w pasku narzędziowym – rysunek 17.

 

Rys. 17. Uruchomienie sesji debugowania

Przy pierwszym uruchomieniu sesji pojawi się okno konfiguracji, w którym najważniejsza jest zakładka Debugger – rysunek 18. Dla modułu Nucleo musi być wybrany ST-LINK i interfejs SWD. Konfigurowanie debugowania jest dość rozbudowane i dokładnie opisane w dokumentacji True Studio. My skorzystamy z domyślnych ustawień oferowanych przez program.

Rys. 18. Konfiguracja debugera

 

Po kliknięciu na Debug uruchomi się sesja debugowania z automatycznie otwieraną perspektywą Debug. Łączy się to z automatycznym załadowaniem pliku wynikowego kompilacji do pamięci mikrokontrolera. W pasku narzędziowym są umieszczone podstawowe ikony wykorzystywane w pracy z debugerem. – rysunek 19.

Na początku wskaźnik ustawia się na pierwszą instrukcję funkcji main(). Kliknięcie na ikonę „Start Programu” program zaczyna się wykonywać do momentu kliknięcia na „zatrzymanie wykonywania programu”, lub do natrafienia na ustawiony punkt zatrzymań Breakpoint. Kolejne instrukcje w języku C są wykonywane po każdym kliknięciu na ikonę „praca krokowa” (alternatywnie klawisz F5).

Rys. 19. Podstawowe komendy debuggera

 

W domyślnych ustawieniach perspektywy Debug jest otwierane okno z zakładkami, w których umieszczono:

  • Punkty zatrzymań – Breakpoints
  • Podgląd zmiennych globalnych – Variables
  • Podgląd zmiennych Expressions i Live Expressions

Na rysunku 20 pokazano podgląd w oknie Variables struktury konfiguracyjnej GPIOInit po krokowym wykonaniu instrukcji zapisywania jej składowych z funkcji main().

Rys. 20. Podgląd struktury konfiguracyjnej GPIOInit w oknie Variables

 

Punkty zatrzymań można ustawiać w bardzo wygodny sposób przez klikanie obok instrukcji w oknie z wykonywanym plikiem źródłowym. Na rysunku 21 pokazano ustawienie punktu zatrzymania na linii 85 w pliku źródłowym main.c oraz okno z zakładka Breakpoints.

Rys. 21. Ustawianie punktów zatrzymań i zarządzanie nimi w zakładce Breakpoints

 

W czasie wykonywania programu można też podglądać wykonywanie kodu w asemblerze. Okno Disassembly jest otwierane po kliknięciu na ikonkę Podgląd instrukcji asemblera (rysunek 22).

Rys. 22. Podgląd wykonywanego kodu w asemblerze

Tomasz Jabłoński

Autor: STM32eu

STM32eu