logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Debuggowanie OpenOCD gdy używa się dodatkowych biblitek

kk.krz 28 Lip 2017 11:29 1284 6
  • #1 16612987
    kk.krz
    Poziom 4  
    Posty: 186
    Ocena: 2
    Witam,

    Sprawa dotyczy lpc2142, debugger xds100v2, Debian, Open On-Chip Debugger 0.10.0,


    Mam program, który wyświetla na LCD to, co odczyta z ADC. Żeby to wyświetlić,
    korzysta z stdlib.h i math.h (potrzebuje itoa i floor). Póki nie korzystałem z tych bibliotek, program się
    debugował. Teraz mam tak, że po połączeniu się z OpenOCD i zrobieniu soft_reset_halt
    proc sie haltuje, mam ustawiony jeden breakpoint i po mon continue nie mam szans na zatrzymanie się w breakpoincie. Debugger mogę jedynie CTRL+C i wówczas czasem znajdę się w vectors.S (taki mój startup.S). A ja dostaje jedynie info od OpenOCD, że:

    [debug]Continuing.
    [debug]Note: automatically using hardware breakpoints for read-only addresses.

    Wystarczy natomiast, że nie będę używał funkcji z math.h i stdlib.h i debugger działa.
    Ma ktoś pomysł dlaczego?

    Druga sprawa. Włączam zasilanie moje ZL9ARM, zapuszczam openocd:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    i dostaję za pierwszym razem:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod



    Robie mu CTRL+C i uruchamiam to samo drugi raz i dostaję:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod



    Już bez errorów "all zeroes".

    Dodano po 3 [godziny] 37 [minuty]:

    Pierwszy problem rozwiązałem. Muszę podszkolić się w posługiwaniu wskaźnikami. Zbytnio udziwniam proste rzeczy.

    Drugie pytanie aktualne. Po cichu liczę na FCh :)

    Dodano po 4 [minuty]:

    Plus pytanie uzupełniające Do Freddiego: Mam Atmel-ICE. Jak może pamiętasz miałem problemy pogodzenia
    go z OpenOCD. Problem wciąż nierozwiązany. Zastanawiam się czy nie zamienić Atmel-ICE na Twój interfejs. O kompatybilność z Linukso-dostepnym oprogramowaniem nie pytam, bo chyba jasne że tak, ale jeśli chodzi o AVR - ogarnie mi Atmegi, ATTiny i Xmegi? Czy zadziałą z Atmel Studio pow Windą? Potrzebuje coś do ARM'ów i do AVR. Wciąż coś na nich dłubie.
  • #2 16614997
    Konto nie istnieje
    Konto nie istnieje  
  • #4 16615325
    Konto nie istnieje
    Konto nie istnieje  
  • #5 16615421
    kk.krz
    Poziom 4  
    Posty: 186
    Ocena: 2
    Nie wiem czy to w czymś pomoże, ale piszę sobie w Code::Block. Tam jest gotowa templatka
    do programowania ARM, wybieram olimex-lpc213x, potem wybieram lpc2138 (a mój mikrokontroler to lpc2142 - może to jest problem) i jest tam startup o nazwie vectors.S.
    oraz pliku: map.txt

    Oczywiście jest tam jeszcze lpc214x.h. Ten plik wziąłem ze strony Keila. Ma lepiej
    ponazywane rejestry uC, bardziej zgodne z instrukcją do uC. Ten co był w templatce ARM
    w Code::Blocks był "dziwny".

    W Code::Blocks nie mam możliwości wyboru innego uC. Tu może być problem?
    Chciałbym używać Code:Blocks, jest dla mnie wygodny. Pasowałoby przygotować sobie
    porządną templatkę. Daje potem sobie "nowy proj", i po prostu piszę sobie program, etc...
    Troszkę tego nie ogarniam. Ale postarałem się przedstawić środowisko, żeby
    ktoś nakierował mnie jak robić to dobrze.

    Przykładowy projekt załączam. Jeśli będzie CI się chciało do niego zaglądnąć i wyrazić opinię, to będę wdzięczny.

    Log z kompilacji:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • adc.zip (86.25 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #6 16615465
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z debugowaniem programu na mikrokontrolerze LPC2142 przy użyciu debuggera XDS100v2 oraz OpenOCD 0.10.0 na systemie Debian. Program, który wyświetla dane z ADC na LCD, przestaje działać poprawnie po dodaniu bibliotek stdlib.h i math.h, co prowadzi do zatrzymania w domyślnym handlerze (DH) w przypadku błędów. Użytkownik nie obsługuje wyjątków, co może być przyczyną problemów. Wskazano na możliwe błędy w pliku linkera oraz konfiguracji pamięci. Użytkownik korzysta z Code::Blocks z szablonem dla ARM, co może być niewłaściwe dla LPC2142. Zasugerowano użycie odpowiednich plików startup oraz sprawdzenie ustawień RAM-u.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA