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

STM32F072RB - Debugowanie w Eclipse i OpenOCD 0.8.0

Myrek1 31 Paź 2014 12:18 2916 17
REKLAMA
  • #1 14089636
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Mam problem z zestawem Eclipse Kepler + GDB + CS + openOCD 0.8.0 + STM32F072BDISCOVERY z procesorem STM32F072RB (Cortex-M0) i programatorem Stlink.

    Środowisko jest poprawnie skonfigurowane i działa poprawnie na procesorze STM32F103, tyle że z openOCD 0.7.0. Jako że nowy model procka, musiałem użyć openOCD 0.8.0. Jednak po skompilowaniu programu (poprawne) i włączeniu serwera OCD (również poprawne) po wybraniu Debug nie następuje wgranie programu do procesora i wyskakuje błąd, że program nie jest uruchomiony. Kombinowałem na różne sposoby i za nic nie mogę uruchomić debugowania.

    Zaznaczę, że na CoCox wsystko działa, na Atollic (po zmianie firmware stlinka) również. Co ciekawe Atollic zmienia firmware na wersję 20, która nie działa na CoCox i openOCD, ale z powrotem wgrywam 16 za pomocą ST-Link Utility.

    To co wypluwa OpenOCD:
    Open On-Chip Debugger 0.8.0 (2014-04-28-08:42)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.sourceforge.net/doc/doxygen/bugs.html
    Info : This adapter doesn't support configurable speed
    Info : STLINK v2 JTAG v16 API v2 SWIM v0 VID 0x0483 PID 0x3748
    Info : using stlink api v2
    Info : Target voltage: 2.928086
    Info : stm32f0x.cpu: hardware has 4 breakpoints, 2 watchpoints
    Info : accepting 'gdb' connection from 3333
    Info : device id = 0x20016448
    Info : flash size = 128kbytes
    undefined debug reason 7 - target needs reset
    target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x080029b0 msp: 0x20005000
    target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x080029b0 msp: 0x20005000
    target state: halted
    target halted due to breakpoint, current mode: Thread 
    xPSR: 0x61000000 pc: 0x2000003a msp: 0x20005000
    target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x080029b0 msp: 0x20005000
    Error: gdb requested a non-existing register
    Info : dropped 'gdb' connection
    


    A to co GDB:
    symbol-file C:\\workspace\\STM32_USB_dzwonek_stm32F072\\Debug\\zl30arm_usb_hid_dev_103.elf
    warning: Architecture rejected target-supplied description
    monitor reset init
    load C:\\workspace\\STM32_USB_dzwonek_stm32F072\\Debug\\zl30arm_usb_hid_dev_103.elf 
    Loading section .text, size 0x317c lma 0x8000000
    Loading section .data, size 0x34 lma 0x800317c
    Start address 0x8000000, load size 12720
    Remote connection closed
    tbreak main
    Temporary breakpoint 1 at 0x8002014: file ../../common/src/usbd_main.c, line 15.
    continue
    The program is not being run.
    


    Wywołanie openOCD:
    -f interface/stlink-v2.cfg -f target/stm32f0x_stlink.cfg "adapter_khz 1000; reset_config trst_and_srst"

    Używam openOCD x64

    oraz Debug z monitor reset init oraz Load image, symbols, ustawienie breakpoint na main i Resume

    Walczę z tym dłuższy czas i nie mam pojęcia co dalej. Wydaje mi się, że kiedyś to działało. Chyba też miałem z tym problem ale poradziłem sobie. Było to jakiś czas temu. Konfiguracji nie zmieniałam, powróciłem do tematu i jest źle.
  • REKLAMA
  • #2 14089666
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Czemu nie Eclipse Luna? Jaką masz DOKŁADNIE wersję wtyczki GDB Hardware Debugging? Usuń opcję "reset_config" lub zmień ją na "reset_config srst_only" - przecież w SWD nie ma TRST, a pewnie STM32F07x nie ma pełnego JTAGa.

    4\/3!!
  • REKLAMA
  • #3 14089693
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Freddie Chopin napisał:
    Czemu nie Eclipse Luna? Jaką masz DOKŁADNIE wersję wtyczki GDB Hardware Debugging? Usuń opcję "reset_config" lub zmień ją na "reset_config srst_only" - przecież w SWD nie ma TRST, a pewnie STM32F07x nie ma pełnego JTAGa.

    4\/3!!


    Wersja na obrazku niżej. Dlaczego nie Luna? Bo na Kepler działało z inną płytką. Miałem się przesiąść jak zacznie działać na pewnym Keplerze.

    Po usunięciu opcji reset lub zmianie na samo srst openOCD się nie uruchamia:
    Open On-Chip Debugger 0.8.0 (2014-04-28-08:42)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.sourceforge.net/doc/doxygen/bugs.html
    Info : This adapter doesn't support configurable speed
    Info : STLINK v2 JTAG v16 API v2 SWIM v0 VID 0x0483 PID 0x3748
    Info : using stlink api v2
    Info : Target voltage: 2.924598
    Error: hl_interface_init_target: target not found: idcode: 0x0bb11477
    in procedure 'transport'
    in procedure 'init'


    STM32F072RB - Debugowanie w Eclipse i OpenOCD 0.8.0

    Dzięki.
  • #4 14090026
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Spróbuj użyć pliku konfiguracyjnego board/stm32f0discovery.cfg - wiem że jest dla STM32F05x, ale z 07x też powinien zadziałać. Użyj tego pliku jako JEDYNEJ opcji dla OpenOCD - resztę usuń.

    4\/3!!
  • #5 14090069
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Podepnę się do tematu. Parę dni temu próbowałem uruchomić STM32F071. Niestety udało mi się go zaprogramować przez RS232 tylko i wyłącznie programem stm32flash (konsolowy program na linuksa) oraz jakimś dziwnym "chińskim" wynalazkiem na WIN7. Kupiony oryginalny STLink-V2 nie rozpoznał w ogóle tego uC (ani na win7 ani pod ubuntu ani ST-Link Utility ani OpenOCD w najnowszej wersji). Nawet Flash Loader Demonstrator pomimo że wykrywał układ nie wyświetlał nic :(. Po lekkim zmodyfikowaniu źródeł OpenOCD 0.7.0 mój zrobiony versaloon wykrył go prawidłowo na lini SWD, lecz próba zaprogramowania skończyła się fiaskiem.
  • #6 14090092
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Może coś jest w patchach lub już w repozytorium - jakby na to nie patrzeć STM32F07x to nowe układy, a wersja 0.8.0 ma już pół roku... 0.7.0 to już w ogóle <:

    4\/3!!
  • REKLAMA
  • #7 14091283
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Freddie Chopin napisał:
    Spróbuj użyć pliku konfiguracyjnego board/stm32f0discovery.cfg - wiem że jest dla STM32F05x, ale z 07x też powinien zadziałać. Użyj tego pliku jako JEDYNEJ opcji dla OpenOCD - resztę usuń.

    4\/3!!



    Zrobiłem tak i dalej to damo :(

    Szukałem w Internecie i też nic nie znalazłem. Nie mam kompletnie pojęcia dlaczego się tak dzieje.

    Na innym komputerze na Eclipse Luna włączyłem debug i to samo (przeniosłem na niego plik elf, bez kompilacji projektu na Lunie).
  • #8 14091641
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Sprawdź czy ten sam problem występuje przy jakiejś nowszej wersji OpenOCD - ściągnij z mojej stronki najnowszą wersję "rozwojową".

    Wg tego patcha, który jest też w wersji 0.8.0 - http://openocd.zylin.com/#/c/1921/ - Twój układ powinien działać.

    4\/3!!
  • #9 14092024
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Dalej to samo na openOCD0.9.0-dev.

    Interesujące jest, że w openOCD wyskakuje na końcu:

    Error: gdb requested a non-existing register 
    Info : dropped 'gdb' connection 


    I dlaczego nie ma nic o wgraniu, nawet jakiegoś błędu. Zmieniłem też firmware stlinka na 24 i też nic.
  • REKLAMA
  • #10 14092053
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    Nie wisi ci gdzieś breakpoint? Usuń wszystkie jakby co.
  • #11 14092060
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Spróbuj może też debuggowania przez samo OpenOCD i telnet - sprawdź czy wszystkie typowe operacje (podgląd pamięci, instrukcji, rejestrów, step, halt, resume, reset, programowanie, ...) działają jak należy.

    4\/3!!
  • #12 14092077
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    Wyczyściłbym procesor przed tak dla pewności.
  • #13 14093494
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Freddie Chopin napisał:
    Spróbuj może też debuggowania przez samo OpenOCD i telnet - sprawdź czy wszystkie typowe operacje (podgląd pamięci, instrukcji, rejestrów, step, halt, resume, reset, programowanie, ...) działają jak należy.

    4\/3!!


    Sprawdziłem już wcześniej kilka komend i wszystko działa. Teraz spróbiwałem zaprogramować i oto co dostałem (przez telnet):

    Open On-Chip Debugger
    > program
    wrong # args: should be "program filename ?arg...?"
    > reset halt
    target state: halted
    target halted due to debug-request, current mode: Thread
    xPSR: 0xc1000000 pc: 0x08002134 msp: 0x20003ffc
    > reset
    > reset halt
    target state: halted
    target halted due to debug-request, current mode: Thread
    xPSR: 0xc1000000 pc: 0x08002134 msp: 0x20003ffc
    > flash write_image erase c:\prog.elf
    auto erase enabled
    device id = 0x20016448
    flash size = 128kbytes
    target state: halted
    target halted due to breakpoint, current mode: Thread
    xPSR: 0x61000000 pc: 0x2000003a msp: 0x20003ffc
    wrote 20480 bytes from file c:prog.elf in 0.920052s (21.738 KiB/s)
    > reset


    Widać, że przez openOCD działa, więc co jest? Coś na połączeniu GDB-openOCD?

    Breakpointy wywalone, wielokrotnie kasowałem układ przed wgrywaniem - zawsze to samo.
  • #14 14093675
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Ten mikrokontroler ma jakieś piny typu BOOT, na pewno masz założone odpowiednie zworki? Niby wszystko działa, ale odpowiedzi jakie dostajesz są bardzo mocno podejrzane - np. to:
    target halted due to breakpoint, current mode: Thread
    xPSR: 0x61000000 pc: 0x2000003a msp: 0x20003ffc
    Nie dość, że "halted" z powodu breakpoina (może w Twoim kodzie jakiś breakpoint jest? jest taka instrukcja assemblerowa BKPT), to jeszcze adres jakiś w pamięci RAM... Próbowałeś z różnymi kodami przykładowymi? Może po prostu coś jest nie tak z programem który próbujesz uruchomić?

    4\/3!!
  • #15 14093856
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Freddie Chopin napisał:
    Ten mikrokontroler ma jakieś piny typu BOOT, na pewno masz założone odpowiednie zworki? Niby wszystko działa, ale odpowiedzi jakie dostajesz są bardzo mocno podejrzane - np. to:
    target halted due to breakpoint, current mode: Thread
    xPSR: 0x61000000 pc: 0x2000003a msp: 0x20003ffc
    Nie dość, że "halted" z powodu breakpoina (może w Twoim kodzie jakiś breakpoint jest? jest taka instrukcja assemblerowa BKPT), to jeszcze adres jakiś w pamięci RAM... Próbowałeś z różnymi kodami przykładowymi? Może po prostu coś jest nie tak z programem który próbujesz uruchomić?

    4\/3!!


    Płytka discovery i ma BOOT na jednej nodze. Ale na Atollic czy CoCox wszystko działa bez zmiany zworek ze standardowych.
    Nie ma breakpointów. Skompilowałem też przykład z CoCox, który tam działa, przeniosłem plik elf do debagowania w Eclipse (wskazałem go w C\C++ Application w Debug configuration) i dalej to samo.

    Pisałem wcześniej, że wcześniej to działało na Eclipse. Jednak nie. Okazało się teraz, że wcześniej debagowałem tą płytkę na CoCox, bo też miałem takie problemy jak teraz. Więc od początku są takie problemy.
    Ciekawe to jest...
  • #17 14094669
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Tak jak piałem wcześniej, sprawdziłem na innym komputerze na Lunie wtyczką do niej i to samo :(
  • #18 14095280
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Mhm... no to nie wiem co więcej może być nie tak... Może jest jednak jakiś problem w samym OpenOCD - warto by przejrzeć czy w kolejce nie czekają jakieś patche związane z tymi mikrokontrolerami, a jeśli nie, to napisać posta na listę dyskusyjną...

    4\/3!!

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z debugowaniem na zestawie Eclipse Kepler z OpenOCD 0.8.0 dla mikrokontrolera STM32F072RB. Środowisko działa poprawnie z STM32F103 i OpenOCD 0.7.0, ale przy nowym modelu występują błędy podczas próby wgrania programu. Użytkownik próbował różnych konfiguracji, w tym zmiany opcji reset_config oraz użycia pliku konfiguracyjnego dla STM32F0. Inni uczestnicy dyskusji sugerują sprawdzenie wersji OpenOCD, usunięcie breakpointów, a także testowanie debugowania przez telnet. Użytkownik potwierdza, że programowanie działa przez OpenOCD, ale problem leży w połączeniu z GDB. Wskazano również na możliwość problemów z firmwarem ST-Link oraz konieczność sprawdzenia pinów BOOT.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA