Eclipse Kepler dla ARM – part 3 (debugowanie ST-Linkiem)

Eclipse Kepler dla ARM – part 3 (debugowanie ST-Linkiem)
Razem głosów: 28 co stanowi: 97.14% całości.

kepler_logo

Jakiś czas temu opisałem paczkę eclipse kepler 4.3 pod ARM-y  i konfigurację dla J-Linka tym razem jednak ze względu na spora popularność STM32 i ST-linka  co wcześniej było protetycznym używaniem Utility  z STM.  Teraz czas rozwiązać do końca, mianowicie zajmiemy się konfigiem tej paczki pod STLinka ….

Wcześniejszy opis  znajdziecie tutaj : http://www.sunduino.pl/wordpress/eclipse-kepler-dla-arm-part-1/  i tam też znajdziecie link do pobrania paczki, dlatego też dobrze się wyposażyć w nią bowiem zrobimy teraz 2 konfigi :)

Jedziemy zatem …


ST-Link Flash (RELEASE) 

W tym celu musimy  zaopatrzyć się w ST-Link Utility  który możemy pobrać ze strony STM lub użyć paczki, w której znajdziemy wszystko co potrzebne zebrane w jedno miejsce:

Proponuję by folder st-link umieścić w głównym folderze dysku C: będzie łatwiej się do niego dostać, a oto nam chodzi prawda ?? Powinno to wyglądać tak:

Przechwytywanieteraz uruchamiamy pobrane eclipse i . … wchodzimy do External Tools Configurations:

Przechwytywanie

 

Tu klikamy na „NEW”  button i  tworzymy konfigurację  ST-Flash (Release) czyli wgrywanie pliku .hex po kompilacji  RELEASE …

Przechwytywanie

Wpisujemy wszystko dokładnie jak widać na obrazku wyżej :) To bardzo ważne by wpisać dokładnie tak jak jest na screenie :)

  • Name:   ST-Flash (RELEASE)
  • Location:   C:\ST-LINK\ST-LINK_CLI.exe
  • Working Directory:  ${workspace_loc}\${project_name}\Release
  • Arguments: -C SWD -Q -P „${project_name}.hex” -RST -RUN

i w zakładce Common:

Przechwytywanie

zaznaczamy External Tools żeby nasz konfig był widoczny w menu :) klikamy na Apply i zamykamy okno.  Od tej pory po Kompilacji projektu dla  (RELEASE)

Przechwytywani111111

 

możemy kliknięciem w menu :

Przechwytywanie

załadować plik …HEX do  naszego mikrokontrolera … i go uruchomić Nadmienię też że ważne jest by projekt jak widać na screenie był podświetlony w Project Explorerze (wymaga tego zmienna (project name).  Efekt działania  widać w konsoli, a przykładowy program Blink miga radośnie na  podłączonym w tej chwili STM32F0 – Discovery diodami PC8 i PC9…

I to wszystko jeśli chodzi o wgrywanie wsadu,  oczywiście jak widać u mnie jest jeszcze konfig ST-Flash (DEBUG) nie jest potrzebny w ramach testu i dokładnie taki sam jak RELEASE,  tylko pobiera plik HEX z folderu DEBUG :)  i bynajmniej nie służy do debugowania o tym za chwilę …  Tymczasem  program  TESTOWY  (cały projekt) mozolnie przeniesiony z CoIDE (w ramach migracji) przez kolegę Xbary  znajdziecie tutaj:

To dosyć istotne w sumie bo na końcu wyjaśni się mały kłopocik związany z używaniem ST-Linka, ale też i tworzenia projektów pod Eclipse dla ARM.


 

ST-LINK SWD DEBUGER 

Na to wszyscy czekali ….  i oto jest konfig dla debugera popularnym dziwadłem czyli ST-Link v/2  Dongle  z popularnych Discovery i Nucleo :)  Opis będzie składał się z dwóch aktów i przetestujemy go na naszym przykładowym projekcie, który pobraliście wyżej

  • AKT I  —  ST-UTIL

Otwieramy znów External Tools Configuration i dodajemy nowy konfig o nazwie ST-Util

Przechwytywanie

Nie ma tu nic szczególnego a programik ST-UTIL jest w pakiecie który pobraliście więc ustawiamy jak na screenie wyżej.  ST-Util  jest poniekąd serwerem gdb dla st-linka choć w zasadzie nie tak do końca. Jednakowoż  popełniony przez Texane  jest do pobrania z gita:

Stlink Util TEXANE
Stlink Util TEXANE
stlink.html
63.5 KiB
399 Downloads
Szczegóły

 

lub skompilowany w pakiecie z st-linkiem wyżej co polecam …  Oczywiście pamiętamy o zaznaczeniu External Tools w Common i Klikamy na Apply. Tym sposobem pierwszy akt za nami :) A nasz ST-Util jest dostępny z menu ….

  • AKT 2 – ST-DEBUG   czyli wreszcie debugujemy

Teraz nadeszła  pora na tą trudniejszą konfigurację… ale właśnie dzięki niej będziemy mogli używając dobrodziejstwa debugowania programów – z breakpointami i step line:) to co gotowi ??  Jedziemy …

Otwieramy Debug Configuration:

Przechwytywanie

Tutaj interesuje nas grupa  GDB Hardware Debugging , zatem klikamy na niej i klikamy NEW  :

Przechwytywanie

Tu jak widać tworzymy Konfig o nazwie STLink GDB i ustawiamy pozostałe parametry jak widać na screenie wyżej  czyli w zakładce Main:

  • Name : STLink GDB
  • C/C++ Application:    \${workspace_loc}\${project_name}\Debug\${project_name}.elf
  • Project:  ${project_name}

Klikamy na zakładce  Debugger i ustawiamy:

Przechwytywanie

Gdzie ustawiamy jak widać wyżej:

  • GDB Command:  C:\Program Files (x86)\GNU Tools ARM Embedded\4.8 2014q3\bin\arm-none-eabi-gdb.exe
  • JTAG Device:   Generic TCP/IP
  • Host name or … :  localhost
  • Port number:  4242

Dodatkowo w zakładce Startup powinny się pojawić ścieżki naszego projektu:

Przechwytywanie

Jeśli nie należy utworzyć Path maping … w zakładce source (ale tworzy się automatycznie (może zajść potrzeba modyfikacji po imporcie naszego przykładowego projektu który pobraliście)

Przechwytywanie

I oczywiście w zakładce Common  zaznaczamy że nasz konfig ma byc widoczny w menu Debug….

Przechwytywanie

Uff… klikamy na Apply i zaczynamy debugowanie ….


 

DEBUGOWANIE …. ST-Link w AKCJI …

Gdy mamy otwarty nasz przykładowy projekt przełączamy konfigurację na DEBUG w menu:

Przechwytywanie

Projekt jest skonfigurowany i optymalizacja dla DEBUG  jest ustawiona na -O0 czyli brak .. inaczej nie da się debugować programu, dlatego proponuję na tą chwilę używanie naszego projektu przykładowego.

Teraz możemy wykonać  CLEAN i Projekt zostanie wyczyszczony i skompilowany na nowo, a w folderze DEBUG utworzone zostaną pliki  .hex i .elf  Gotowe …  ,

Przyznać się kto teraz stwierdził że nie działa ??   Ty to wiem … ale po Tobie się nie spodziewałem,  tak od czapy klikać w robaka …

Przechwytywanie

Dlatego to widzicie bo się śpieszycie :)   Już wyjaśniam …

Przede wszystkim ważne jest żeby projekt był podświetlony podobnie jak podczas flashowania w RELEASE. Teraz z menu External Tools wybieramy nasz konfig  ST-Util:

Przechwytywanie

Jak widzicie w konsoli jest uruchomiony, nic się nie wyświetla bowiem nie zwraca on żadnych informacji i musimy mu wierzyć na słowo …  Teraz kolejnym krokiem jest kliknięcie i wybranie z Menu DEBUG naszego ST-Link GDB:

Przechwytywanie

Jak pojawi się wam komunikat o błędzie:

Przechwytywanie

Lub podobny z wpisem <project name> oznacza ze źle macie zaznaczony(wybrany) projekt :) Trzeba kliknąć na nazwie otwartego projektu …. i ponownie wybrać i uruchomić ST-Util i ponownie ST-Link GDB, gdy wszystko zrobimy dobrze zobaczymy upragnione okno debugera:

Przechwytywanie

 

Klikamy na Start :  i tym sposobem nasz program zostaje uruchomiony a kontrolka ST-Linka na dyskotece sygnalizuje połączenie , teraz możemy  wstrzymywać program , wykonywać linia po linii i ustawiać breakpointy….

Gotowe :)

 


 

KONKLUZJA:


 

Dlaczego zależało mi na tym, by używać przykładowego projektu STM32F051R8T6_Test2 ?   Wraz z kolegą XBary spędziliśmy trochę czasu kombinując z uruchomieniem debugu na ST-Linku. Głównie chodzi o to że ten projekt został ręcznie zaimportowany z CoIDE  do Keplera  jako czysty projekt…  I tu bez problemu działa debugowanie i flashowanie zarówno hexem z RELEASE jak i DEBUG (stąd u mnie 2 konfigi do Flashera)

Natomiast coś jest nie tak w pluginie ARM do eclipse gdyż jeśli wybierzecie przykładowy program blink, np. dla STM32F0xx  zostanie utworzony ładnie projekt z kompiluje się i o ile w RELEASE możemy wgrać do naszego Mmikrokontrolera HEX i działa :

Jak ten powyższy który został utworzony jako przykładowy blink dla STM32F0 wybrane z menu podczas tworzenia nowego projektu C.  To niestety, ale coś na poziomie samego plugina jest nie tak gdyż mimo bezbłędnej kompilacji w DEBUG, zarówno plik .HEX jak i  Debugowanie  — NIE DZIAŁA

I na razie wraz z kol. Xbary nie doszliśmy dlaczego tak się dzieje. Oczywiście sprawdzane były różne warianty konfiguracji i nawet na czystym Eclipse i  świeżym Workspace … nie przyniosły rezultatu … z pustego projektu jest OK , a w Przykładzie ok jest tylko RELEASE.

Jeśli ktoś wie jak to zrobić … niech napisze w komentarzu gdyż tak uważam to wszystko co opisałem za protezę ….

— Podziękowania dla kol. XBary za poświęcony czas na testy oraz motywowanie mnie do grzebania w eclipse.

Miłego debugowania.

 

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay

15 myśli nt. „Eclipse Kepler dla ARM – part 3 (debugowanie ST-Linkiem)

  1. Podziękowania dla kol.SunRiver za skrobnięcie artykułu również, mam nadzieje że znajdzie się jeszcze lepszy ninja niż nas dwóch :)

  2. Witam,
    Już dość dawno korzystam z tego texane, znalazłem gdzieś w necie skompilowaną wersję, która działała z 32f051, niestety z nowymi już nie chciała ( np. STM32F071), więc zmuszony byłem skompilować sam te pliki z github-a. Sprawdziłem, z tego mojego texane daje się debugować z poziomu Release – po prostu jako c/c++ aplicatimu daje się plik *.elf z release i to działa – może to jest rozwiązanie? Optymalizacja może być Oś i to się i tak daje debugować. Szczerze mówiąc, ja dotychczas nie korzystałem w ogóle z ARM Toolchaina, robiłem to na piechotę, ale wczoraj w nocy sprawdziłem „blink led” na 32f072 i jest tak jak napisałem.

    • poniekąd jest to rozwiązanie , ale chodziło jednak o to że coś jest w pluginie ARM nie tak , że źle kompiluje w DEBUG , jak się korzysta z wybranego projektu … natomiast w innych przypadkach jest OK
      — na razie texane jest dobrym wyborem , a ja mam wiecej czasu by swój GDB dopracować :)

  3. SunRiver, to ja dziękuję za Twojego bloga, wiele się z niego dowiedziałem. A przy okazji, może dzięki Tobie przekonam się do ARM Toolchaina, zamiast ( ze zmiennym szczęściem ;-) ) męczyć się z makefile.

  4. Bardzo fajnie wytłumaczone, po przerobieniu 1 części, rozpocząłem od początku pracę z tym artykułem i mam następujący problem :

    w pierwszej części : ST-Link Flash (RELEASE) po próbie wgrania do procka

    STM32 ST-LINK CLI v2.1.0
    STM32 ST-LINK Command Line Interface

    ST-LINK SN : 0674FF485649785087052634
    ST-LINK Firmware version : V2J23M7
    Connected via SWD.
    SWD Frequency = 1800K.
    Connection mode : Normal.
    Device ID:0x431
    Device flash Size : 512 Kbytes
    Device family :STM32F411xE

    Loading file…
    Unable to open file!

    MCU Reset.

    Application started.

  5. Dzięki za pomoc koledze matisek1233 wczoraj w nocy tego nie widziałem a dzisiaj wskoczyło i umiem już migać diodą ! :)

Możliwość komentowania jest wyłączona.