Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS

cool_kuba 07 Cze 2013 11:40 5151 26
  • #1 07 Cze 2013 11:40
    cool_kuba
    Poziom 12  

    Mam skonfigurowane środowisko Eclipse mniej więcej tak jak tu i wszystko działa dobrze. Jednak czytałem że OpenOCD rozumie już różne RTOS-y między innymi FreeRTOS Przez co przy debugowaniu można przeglądać uruchomione taski i takie bajery. w manualu na stronie 66 jest napisane że powinienem podać -rtos rtos type (W moim przypadku FreeRTOS) w $target_name configure. configparams. Tyle że nie mam pojęcia gdzie to wpisać w Eclipsie. Próbowałem wpisać to w wielu miejscach jednak nie chce działać.
    Korzystał ktoś z takiego udogodnienia?
    Lub może wiecie gdzie mam wpisać tą opcję?

    0 26
  • #2 07 Cze 2013 12:07
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Sprawa jest niestety bardziej skomplikowana - uruchomienie tejże opcji w Eclipse wg mnie jest prawie niemożliwe [; Samo podanie parametru do OpenOCD to najmniejszy problem, wtyczka GDB Hardware Debugging niestety jest BARDZO oporna w tej kwestii... Przynajmniej taki kiedyś było, a sprawdzałem to jakoś w tym roku...

    Zerknij np. tutaj
    http://www.open-etech.com/Tech/OpenOCD/index.php?page=section2

    Generalnie opcję da się podać do OpenOCD bez grzebania w plikach konfiguracyjnych, np. tak:
    ... -c "$_TARGETNAME configure -rtos auto" ...

    4\/3!!

    0
  • #3 07 Cze 2013 17:56
    cool_kuba
    Poziom 12  

    Freddie Chopin napisał:

    Próbowałem tak jak tu radzą czyli edytować plik .cfg (w moim wypadku stm32f1x_stlink.cfg) niestety powoduje to błędy przy próbie uruchomienia debuggera:
    Cytat:
    Open On-Chip Debugger 0.7.0 (2013-05-05-10:41)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
    Runtime Error: C:/ProgramyARM/Openocd-0.7.0/bin/../scripts/target/stm32f1x_stlink.cfg:4: can't read "_TARGETNAME": no such variable
    in procedure 'script'
    at file "embedded:startup.tcl", line 58
    at file "C:/ProgramyARM/Openocd-0.7.0/bin/../scripts/target/stm32f1x_stlink.cfg", line 4

    nie bardzo podoba się mu _TARGETNAME. Tyle że osoba pisząca ten poradnik używa innego RTOS oraz innego programatora.
    Freddie Chopin napisał:

    Generalnie opcję da się podać do OpenOCD bez grzebania w plikach konfiguracyjnych, np. tak:
    ... -c "$_TARGETNAME configure -rtos auto" ...

    Proszę powiedz gdzie to wpisać ja próbowałem wpisać tak jak Ty piszesz oraz -rots FreeRTOS w dwóch miejscach:
    [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS
    W obu przypadkach wszystko działa tyle że nic się nie zmienia (nadal widzę tylko aktywną funkcję). Żadnego śladu innych zadań
    [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS

    EDIT:
    Pomyślałem i spróbowałem wkleić z kropkami do external Tools configuration:
    [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS
    I również nie widzę innych zadań ;>

    0
  • #4 07 Cze 2013 20:17
    Freddie Chopin
    Specjalista - Mikrokontrolery

    cool_kuba napisał:
    W obu przypadkach wszystko działa

    To pierwsze. Ewentualnie bez entera

    cool_kuba napisał:
    tyle że nic się nie zmienia (nadal widzę tylko aktywną funkcję). Żadnego śladu innych zadań

    Jak już pisałem:
    Freddie Chopin napisał:
    Sprawa jest niestety bardziej skomplikowana - uruchomienie tejże opcji w Eclipse wg mnie jest prawie niemożliwe [; Samo podanie parametru do OpenOCD to najmniejszy problem, wtyczka GDB Hardware Debugging niestety jest BARDZO oporna w tej kwestii... Przynajmniej taki kiedyś było, a sprawdzałem to jakoś w tym roku...

    Podtrzymuję to [;

    4\/3!!

    0
  • #5 07 Cze 2013 20:59
    cool_kuba
    Poziom 12  

    Freddie Chopin napisał:

    Podtrzymuję to [;

    Szkoda bo tutaj
    [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS
    tak ładnie komuś działa. W takim razie poczekam jeszcze trochę może akurat napisze ktoś kto wie jak to uruchomić ;)
    Niemniej jednak dziękuję za informacje. :)

    0
  • #6 07 Cze 2013 21:00
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #7 07 Cze 2013 22:36
    cool_kuba
    Poziom 12  

    Freddie Chopin napisał:
    Zwróć uwagę, że tam komuś działa, ale nie we wtyczce GDB Hardware Debugging, tylko w Zylin.

    4\/3!!

    No kurcza ale to jest z tego linka co Podałeś i pisze że konfiguruje OpenOCD. No ale racja screen mówi co innego to ja już nie wiem ;)

    0
  • #8 07 Cze 2013 22:44
    Freddie Chopin
    Specjalista - Mikrokontrolery

    cool_kuba napisał:
    No kurcza ale to jest z tego linka co Podałeś i pisze że konfiguruje OpenOCD.

    Co ma jedno do drugiego?

    4\/3!!

    0
  • #9 08 Cze 2013 02:43
    alagner
    Poziom 25  

    To ja mam takie pytanie - są jakieś przeciwwskazania do stosowania Zylina zamiast GDB Hardware Debug?

    0
  • #10 08 Cze 2013 08:46
    Freddie Chopin
    Specjalista - Mikrokontrolery

    alagner napisał:
    To ja mam takie pytanie - są jakieś przeciwwskazania do stosowania Zylina zamiast GDB Hardware Debug?

    Sprawdź [; w GDB Hardware Debugging - przynajmniej kiedyś - więcej rzeczy konfigurujesz przy pomocy GUI, w Zylinie zaś trzeba było je wpisywać "z palca". Jestem też prawie pewny, że coś tam działało trochę gorzej, ale już nie pamiętam co...

    Co do samego debuggowania RTOSów - w GDB Hardware Debugging jest to możliwe, ale bardzo trudne - mnie nigdy nie udało się zrobić tego w powtarzalny sposób, choć kilka razy zadziałało (widziałem wątki)...

    4\/3!!

    0
  • #11 08 Cze 2013 16:10
    cool_kuba
    Poziom 12  

    Freddie Chopin napisał:


    Co do samego debuggowania RTOSów - w GDB Hardware Debugging jest to możliwe, ale bardzo trudne - mnie nigdy nie udało się zrobić tego w powtarzalny sposób, choć kilka razy zadziałało (widziałem wątki)...



    Szkoda w takim razie nie zostaje nic tylko czekać aż tę sprawę jakoś rozwiążą w kolejnych wersjach lub znajdzie się ktoś kto wie o co kaman w aktualnym wsparciu RTOS-ów ;)
    EDIT:
    Znalazłem tutorial jak skonfigurować OpenOCD dla ChibiOS/RT I tam ktoś wytłumaczył jak to przynajmniej włączyć:
    Cytat:
    You can enable the RTOS by appending -c ”{TARGET_NAME}.cpu configure -rtos auto;” where target name stands for your CPU. i.e. stm32f4x. It is also typically displayed on openocd connection to your target.

    niestety oczywiście nie działa mi to. Wklejam to do External Tools Configuration i zamaist TARGET_NAME próbowałem wpisać stm32f1x oraz stm32f1x_stlink ale niestety za każdym razem dostaję błąd:
    Cytat:
    RTOS recognition in OpenOCD to External Tools Configurations / Main / Arguments
    -c "${stm32f1x_stlink} configure -rtos auto"
    or
    -c "${stm32f1x} configure -rtos auto"
    as advised in the forum but it gives the error:
    Reference to undefined variable stm32f1x_stlink

    (lub to samo tylko stm32f1x)
    Macie jakiś pomysł co robię źle. Bo jednak wydaje mi się że nie tyle ta obsługa nie działa co ja jej po prostu nie włączam. .

    0
  • #12 09 Cze 2013 00:23
    alagner
    Poziom 25  

    ja odpalam tak:
    -f interface/jtag-lock-pick_tiny_2.cfg -f target/stm32f1x.cfg -c "adapter_khz 1000; reset_config trst_and_srst separate; $_TARGETNAME configure -rtos auto"

    A w Zylinie w init commands mam to:
    target remote localhost:3333
    monitor reset halt
    symbol-file out/project.elf
    thbreak main
    continue

    i działa. Aczkolwiek nie wiem na ile to jest prawidłowe, póki co to wstępna wersja do zabawy ;)

    Pzdr.

    Dodano po 5 [godziny] 14 [minuty]:

    Sorry za posta pod postem, ale chyba udało mi się ustawić tutaj jako-taką powtarzalność dla GDB Hardware Debugging, mianowicie:

    Launcher ustawiamy na DSF
    Do komend gdb dopisujemy

    Code:
    monitor poll
    ,

    czyli całość komend dla GDB wygląda tak:
    Code:
    monitor reset halt
    
    monitor poll


    Dodano po 10 [minuty]:

    I jeszcze jedno:
    OpenOCD rzuca takimi errorami:

    Code:

    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR 0x51200032
    Error reading stack frame from FreeRTOS thread

    ale nie dzieje się nic złego...

    0
  • #13 09 Cze 2013 12:54
    alagner
    Poziom 25  

    Choroba, to faktycznie nie jest powtarzalne... Dla ST32F4Discovery rzeczywiście "No FreeRTOS symbols found" ale nie ma też w/w "Sticky" błędów od OpenOCD, ciekawe czy to ma znaczenie...

    0
  • #14 09 Cze 2013 14:18
    cool_kuba
    Poziom 12  

    Jakiego programu używasz do debugowania Zylin czy OpenOCD bo jakby dwie rzeczy opisałeś.

    alagner napisał:

    A w Zylinie w init commands mam to:

    alagner napisał:

    OpenOCD rzuca takimi errorami:


    Ale i tak masz dobrze bo przynajmniej Ci się uruchamia (errory związane z RTOS jak się pojawiają). Ja na razie nie wiem jak to włączyć dla swojego stlink-a ;) bo co nie wpisuję to albo nic się nie dzieje albo jakieś errory z tym targetname mi wyskakują.

    0
  • #15 09 Cze 2013 15:23
    alagner
    Poziom 25  

    I Zylin I GDB Hardware Debug korzystają z OpenOCD jako serwera GDB.
    OpenOCD odpalam jako:

    openocd.exe -f interface/jtag-lock-pick_tiny_2.cfg -f target/stm32f1x.cfg -c "adapter_khz 1000; reset_config trst_and_srst separate; $_TARGETNAME configure -rtos auto"

    W gdb hardware debugging:

    DSF Launcher, komendy inicjujące: monitor reset halt, monitor poll, reszta jak w przykładach Freddiego.
    Na STM32F107 to działa, na STM32F4 - nie.

    W Zylinie - patrz post wyżej. Pod F4 też są cuda. Nie wiem na ile to kwestia STLinka, na ile samego procka, będę walczyć dalej wkrótce ;)

    0
  • #16 09 Cze 2013 17:00
    cool_kuba
    Poziom 12  

    Dzięki za wyjaśnienie. Jakbyś spróbuję w takim razie też zainstalować ten program i zobaczę co się u mnie stanie. Jakbyś zrozumiał na czym polega trik żeby to to działało zawsze to podziel się ;) plis

    0
  • #17 21 Lip 2013 08:36
    May
    Poziom 10  

    Cześć,
    Koledzy poradźcie.
    Czy uzywając gdb z pakietu linaro, przez wtyczkę GDB HW Degugging, zawsze przy rozpoczynaniu sesji musze bezpośrednio wskazać symbole poleceniem "symbol-file ..."? Sytuacja jest taka że mam już wgrany program i rozpoczynam nową sesje debugowania.

    0
  • #18 21 Lip 2013 10:30
    Freddie Chopin
    Specjalista - Mikrokontrolery

    May napisał:
    Czy uzywając gdb z pakietu linaro, przez wtyczkę GDB HW Degugging, zawsze przy rozpoczynaniu sesji musze bezpośrednio wskazać symbole poleceniem "symbol-file ..."? Sytuacja jest taka że mam już wgrany program i rozpoczynam nową sesje debugowania.

    Symbole są tylko dla debuggera - nie powodują one żadnych operacji na pamięci mikrokontrolera. Jeśli tylko usuniesz tą wcześniejszą pozycję (image? nie pamiętam teraz i nie mam jak sprawdzić), to nic nie zostanie zaprogramowane - debugger będzie "działał" z tym co jest w układzie (musi się to oczywiście zgadzać z plikiem elf na komputerze).

    4\/3!!

    0
  • #20 31 Lip 2013 08:22
    imarszi
    Poziom 14  

    U mnie na STM32F4 i "GDB Hardware Debuging" mam komunikat z OpenOCD "No FreeRtos synbol found" wszystko działa normalnie bez żadnej dodatkowej funkcjonalności rtos.
    Zylin jest bardziej gadatliwy:
    Warn : RTOS FreeRTOS not detected. (GDB could not find symbol 'uxTopUsedPriority '), takiej zmiennej w projekcie nie mam mam za to 'uxTopReadyPriority'.
    Error: FreeRTOS maximum used priority is unreasonably big, not proceeding: 537001984. i całe debugowanie jakoś dziwnie działa, a w zasadzie w ogóle nie działa.

    To nie jest czasem tak że OpenOCD jest przystosowany do konkretnej wersji FreeRTOS i z innymi nie działa ?

    0
  • #21 31 Lip 2013 09:16
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #22 03 Sie 2013 13:32
    dancios
    Poziom 9  

    moglby ktos wystawic na gicie svn dzialajaca wersje freertos stm32f4xx w miare nowa co sie kompiluje i dziala pod eclipem bo 7 dzien walcze by zmusic do pracy. Pod atoliciem/keilem dem
    a dzialalaly ale atollic ma limit kodu a keil nieprzystosowany do wspolczesnych realiow IDE.

    0
  • #23 03 Sie 2013 13:42
    alagner
    Poziom 25  

    A próbowałeś z wersją z Atollica, może uda się łatwo przerobić? Bo w sumie to też gcc i Eclipse...

    0
  • #24 03 Sie 2013 16:12
    May
    Poziom 10  

    Cześć
    Mam jeszcze jedno pytanie dotyczace debugowania FreeRTOSa. Uzywam Ubuntu 12.04, Eclipse Juno, Zylin 4.18.1, openocd 0.7.0 i aktualnego gdb od linaro.
    Czy używając wtyczki "Zylin" (native), w momencie gdy analizowany task osiągnie breakpoint to domyslnie w okienku "Debug" (tam gdzie widać taski, "external tools" etc.) rozwija sie wam call stack innego tasku? Dodam jeszcze że w okienku edytora kursor wskakuje w miejsce kodu powiązane z RTOSem. U mnie tak to wygląda i potem musze "rozwijać" po kolei taski z listy żeby znaleść miejsce na którym wypadł breakpoint. Niesamowicie to jest uciążliwe. Czy ktos podpowie rozwiązanie?

    0
  • #25 03 Sie 2013 18:50
    imarszi
    Poziom 14  

    @dancios
    Mogę ci na mejla wysłać projekt z FreeRTOS 7.5.2 . Ale tam jest straszny bałagan i ja żadnym specem o FreeRTOS nie jestem i mogą być błedy, ale działa kompiluje się, są jakieś dwa zadania testowe, kilejka. Projekt dla STM32F4Discovery , eclipse , linaro na makefile bazującym na przykładach Freddiego.
    P.S. używam bibliotek od STM

    0
  • #26 21 Paź 2013 11:38
    blowman
    Poziom 10  

    Mi zadziałało coś takiego:
    [STM32][Eclipse] Konfiguracja OpenOCD 0.7.0 do współpracy z FreeRTOS

    Kod: text
    Zaloguj się, aby zobaczyć kod


    a openocd uruchamiam tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Mam tylko maly problem z st-linkv2. Zeby openocd działalo stabilnie musze jednorazowo po zasileniu procka uruchomić STM32 ST-LINK Utility i połączyc się z nim. Potem ST-Link mogę wyłączyć.

    Pamiętajcie o dodaniu w pliku FreeRTOSConfig.h:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeśli ktoś jest zainteresowany semihostingiem to dajcie znać i zrobię nowy wątek. Semihosting można uzywać jako np. konsoli do drukowania przez printf.

    0
  • #27 25 Paź 2013 22:35
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Dla nowych wersji FreeRTOSa trzeba przedefiniować (np. poprzed globalną definicję w Makefile) zmienną globalną "uxTopReadyPriority" na "uxTopUsedPriority". Wciąż chodzi to nieco koślawo (po pierwszym odpaleniu OpenOCD muszę kilkukrotnie uruchomić GDB żeby cały zestaw "załapał"), ale już jest lepiej chyba [;

    4\/3!!

    0