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

[Stm32][eclipse][openOCD] uruchomienie

Bruum 13 Paź 2009 10:10 16350 64
  • #31
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Kiedyś ktoś kontaktował się ze mną w sprawie tego interfejsu (usbScarab2), i podał mi zupełnie inne numery VID/PID niż te wpisane przez ciebie...

    0x0403 0xbbe0

    Te numery które podajesz są do ARM USB OCD z Olimexu.

    Może jednak wcale nie masz dobrych? Załącz tutaj plik .inf dostarczone z twoim interfejsem.

    4\/3!!
  • PCBway
  • #32
    ROMan9
    Poziom 9  
    Tak Freedi miałeś rację! Poprawiłem VID/PID i udało mi się zainstalować urządzenie LibUSB-Win32 Devices -> usbScarab A (Chanel A) (nie wiem dlaczego w pliku usbscarab.cfg, który wcześniej używałem odczytałem 0x15BA/0x0003).
    Poszedłem dalej ale nie udało mi się dobrnąć do końca - wywołując openocd.exe -f interface/jtagkey.cfg -f target/stm32.cfg -c "jtag_khz 1000" (z przykładowego Twojego projektu „stm32_blink_led”) mam odpowiedź:
    Open On-Chip Debugger 0.2.0 (2009-07-18-09:50) Release
    $URL: http://svn.berlios.de/svnroot/repos/openocd/tags/openocd-0.2.0/src/openocd.c $
    For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
    1000 kHz
    jtag_nsrst_delay: 100
    jtag_ntrst_delay: 100
    1000 kHz
    Error: unable to open ftdi device: device not found
    Runtime error, file "command.c", line 469:

    O co teraz może chodzić ?
  • #33
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Chcesz uruchomić JTAGkey'a, a używasz usbScarab2

    openocd.exe -f interface/jtagkey.cfg -f target/stm32.cfg -c "jtag_khz 1000"

    Twój plik cfg powinien wyglądać mniej więcej tak:

    Code:
    interface ft2232
    
    ft2232_device_desc "Kristech usbScarab2 A"
    ft2232_layout olimex-jtag
    ft2232_vid_pid 0x0403 0xbbe0


    4\/3!!
  • #34
    ROMan9
    Poziom 9  
    Zamieniłem plik „jtagkey.cfg” na „usbScarab.cfg” o takiej treści jak podałeś ale po wywołaniu „openocd.exe -f interface/usbScarab.cfg -f target/stm32.cfg -c "jtag_khz 1000” odpowiedź jest taka sama jak wyżej.
  • #35
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Powodów może być wiele:
    - źle zainstalowane sterowniki - upewnij się, że w menadżerze urządzeń jest grupa LibUSB-Win32 a w niej twój układ
    - lekko zły "description" układu - spróbuj ft2232_device_desc "Kristech usbScarab2"
    - zupełnie inny "description" - zainstaluj ponownie sterowniki ftd2xx.dll i za pomocą MProg'a odczytaj co tam jest ustawione, albo po prostu dowiedz się z plików onfiguracyjnych dostarczonych z JTAGiem (w końcu to producent powinien Ci pomagać, a nie ja)
    - uszkodzony JTAG

    4\/3!!
  • #36
    ROMan9
    Poziom 9  
    Freedi, jesteś WIELKI !!!
    Udało się !!! połączyłem się z płytą ewaluacyjną. (miałem inną nazwę wpisaną w *.inf zamiast „Kristech usbScarab2 A” jak podawałeś, miałem „usbScarab A”. Poprawiłem i wszystko gra. No teraz mogę się zająć eksperymentami z cortex_m3/STM.
    WIELKIE DZIEKI !
    Serdecznie pozdrawiam, miłego dnia
  • #37
    ciastek4
    Poziom 13  
    Witam,

    Podpinam się do tematu ponieważ mam problem i za bardzo nie wiem jak sobie z tym poradzić.
    Posiadam JTAG-a ARM-USB-TINY firmy Olimex i chce sie polaczyc z płytką STM32Butterfly. Mam zainstalowane oprogramowanie Openocd 0.2.0(zmienna path jest dobrze ustawiona) i wiem, że mam problemy ze sterownikami. Dostarczone wraz z JTAG-iem oprogramowanie zawiera sterowniki do ftdi. Nie wgrywając go postanowiłem tak jak koledzy wgrać libusb-win32_ft2232_driver.inf jednak za każdym razem dostaję informację, że : "w podanej lokalizacji nie ma informacji o używanym sprzęcie"
    Otworzyłem to cudo i znalazłem w sekcjach :
    [Devices]
    Code:

    "Olimex ARM-USB-TINY (Channel A)"=LIBUSB_DEV, USB\VID_15ba&PID_0x0004&MI_00
    "Olimex ARM-USB-TINY (Channel B)"=LIBUSB_DEV, USB\VID_15ba&PID_0x0004&MI_01


    [Devices.NT]
    Code:

    "Olimex ARM-USB-TINY (Channel A)"=LIBUSB_DEV, USB\VID_15ba&PID_0x0004&MI_00
    "Olimex ARM-USB-TINY (Channel B)"=LIBUSB_DEV, USB\VID_15ba&PID_0x0004&MI_01

    to co mnie interesuje.
    co zatem trzeba zmienić w tym pliku, żeby się udało odpalić openocd ?
    BTW openocd odpalam tak:
    Code:
    openocd -f interface/olimex-jtag-tiny.cfg -f target/stm32.cfg 

    i oczywiście dostaję:
    Code:
    Open On-Chip Debugger 0.2.0 (2009-07-18-09:50) Release
    
    $URL: http://svn.berlios.de/svnroot/repos/openocd/tags/openocd-0.2.0/src/openocd
    .c $
    For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
    1000 kHz
    jtag_nsrst_delay: 100
    jtag_ntrst_delay: 100
    Error: unable to open ftdi device: device not found
    Runtime error, file "command.c", line 469:



    na stronie http://www.mail-archive.com/openocd-development@lists.berlios.de/msg07636.html
    jest poprawiony ten sterownik. Teraz juz moglem uruchomic openocd
  • #38
    Freddie Chopin
    Specjalista - Mikrokontrolery
    To jest mój błąd, który już zauważyłem i poprawiłem na przyszłość, ale aby nie mieszać nie zmieniłem pliku udostępnionego na stronie.

    Przypadkowo (akurat tylko do tego interfejsu) dokopiowało mi się "0x" przed numerem PID, usuń te dwa znaki (w czterech miejscach) i będzie dobrze.

    4\/3!!
  • #39
    tanarri
    Poziom 2  
    Witam. Podpinam się pod temat, bo mam problem z tej samej kategorii. Dopiero zaczynam zabawę z ARMami i zaciąłem się na samym początku. Wygląda to tak jakby OpenOCD nie mógł skomunikować się z mikrokontrolerem. Mój sprzęt: płytka Olimex stm32-p103 + jtag lock-pick od Freddiego. OpenOCD wyrzuca takie komunikaty:

    Code:

    G:\>openocd -f interface/jtagkey.cfg -f target/stm32.cfg
    Open On-Chip Debugger 0.3.1 (2009-11-13-16:13)
    $URL$
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    1000 kHz
    jtag_nsrst_delay: 100
    jtag_ntrst_delay: 100
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Info : clock speed 1000 kHz
    Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
    Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Block read error address 0xe000ed00, count 0x1
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    Warn : Invalid ACK in SWJDP transaction
    ...


    Zmniejszanie częstotliwości zegara nie pomaga, a wszystkie te warningi generuje ta oto linijka pliku stm32.cfg:
    Code:

    target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME


    Sprawdziłem sygnały JTAGa - dochodzą do płytki ewaluacyjnej, więc wnioskuję że raczej poprawnie zlutowałem programator. Proszę więc bardziej doświadczonych o diagnozę co tu może być nie tak, bo sam już nie wiem co można z tym zrobić.
  • #40
    markosik20
    Poziom 33  
    tanarri napisał:
    ...bo sam już nie wiem co można z tym zrobić.


    Nic, teraz po prostu sprawdź czy działa ładowanie programu oraz debugowanie.
  • PCBway
  • #41
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Tego typu błąd (Warn : Invalid ACK in SWJDP transaction) pojawia się zwykle jeśli z fizycznym połączeniem jest jednak jakiś problem. Może jednak zimne luty gdzieś są i czasem nie dochodzi? Jeśli sypie Ci tymi komunikatami co jakiś czas w "paczkach" to pewnie tak właśnie jest... Gdy połączę się z targetem i wyciągnę wtyczkę od JTAGa, to wtedy dostaję nieskończoną serię takich komunikatów.

    4\/3!!
  • #42
    tanarri
    Poziom 2  
    Ok, w końcu zadziałało. Może komuś przyda się informacja co było nie tak. Rzeczywiście musiało być jakieś wadliwe połączenie - wygrzanie płytki hot-airem rozwiązało problem. Dzięki za nakierowanie :)
  • #43
    ciastek4
    Poziom 13  
    Witajcie ponownie.
    Czy któryś z szanownych kolegów mógłby mnie nakierować na rozwiązanie problemu z debugowaniem już wgranego programu. Mianowicie nie wiem jak zmusić debugger do zatrzymania na kodzie przed główną pętlą programu tj. przy funkcjach inicjalizujących.
    Pozostałe elementy mi fajnie działają tylko z tym mam problem ( jak wgrywam program od początku to mogę śledzić już od pierwszej instrukcji z pamięci).

    Za pomoc dziękuję :)
  • #44
    Freddie Chopin
    Specjalista - Mikrokontrolery
    U mnie dla STM32 jedyna różnica między włączeniem gdb to brak komendy "load"... Zasadniczo komendy do debuggowania programu wgranego to tylko "reset halt" (oraz breakpoint na main i continue / resume).

    4\/3!!
  • #45
    dzarek1
    Poziom 13  
    Witam
    Od pewnego czasu posiadam w domu ARMa i również na mnie zaczyna spoglądać OpenOCD i eclipce
    Mój procek, a raczej evolution board to LM3S1968 (trochę nietypowy na tym forum :P )
    do tej pory "bawiłem się " uVision4, wszystko szło jak po maśle, niestety OpenOCD mnie już nie lubi i nie wiem dlaczego.
    Co najśmieszniejsze w pakiecie znajdują się pliki cfg przygotowane specjalnie dla tego układu/EB.
    i tak:
    Code:

    C:\>openocd -f interface/luminary.cfg -f board/ek-lm3s1968.cfg -f target/lm3s1968.cfg
    Open On-Chip Debugger 0.3.1 (2009-11-13-16:13)
    $URL$
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    Warn : Interface already configured, ignoring
    Warn : use 'lm3s1968.cpu' as target identifier, not '0'
    Error: flash driver 'lm3s1968.flash' not found
    C:\>


    lub

    Code:
    C:\>openocd -f interface/luminary.cfg -f board/ek-lm3s1968.cfg -f target/lm3s1968.cfg
    
    Open On-Chip Debugger 0.4.0-rc1-dev (2010-01-16-11:14)
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    3000 kHz
    jtag_nsrst_delay: 100
    srst_only separate srst_gates_jtag srst_open_drain
    Command/target: lm3s1968.cpu Exists
    C:\>


    i tyle, przeglądając manual i ten temat wydaje mi się, że jednak powinno się dziać coś więcej, szczególnie na 0.4.0,
    jedyna zmiana jaka wprowadziłem w pliku board/ek-lm3s1968.cfg dla 0.4.0 to
    Code:
    #source [find interface/luminary.cfg]

    i nie wyświetla Warn : Interface already configured, ignoring

    aha, płytka połączona z kompem przez usb, doinstalowywałem libusb-win32_ft2232_driver-091105

    help, bo walczę z tym już kilka dni... :cry:
  • #46
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Nie nie nie nie... Po prostu OpenOCD uruchamiasz tylko z plikami interface i board, a nie interface + board + target.

    Spróbuj tylko z "-f interface/luminary.cfg -f board/ek-lm3s1968.cfg" (cofając zmianę w pliku board której dokonałeś) i daj znać jaki efekt.

    4\/3!!
  • #47
    dzarek1
    Poziom 13  
    Code:

    Microsoft Windows XP [Wersja 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

    C:\WINDOWS>cd..

    C:\>openocd -f interface/luminary.cfg -f board/ek-lm3s1968.cfg
    Open On-Chip Debugger 0.4.0-rc1-dev (2010-01-16-11:14)
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    Warn : Interface already configured, ignoring
    3000 kHz
    jtag_nsrst_delay: 100
    srst_only separate srst_gates_jtag srst_open_drain
    Error: unable to open ftdi device: device not found
    Command handler execution failed

    C:\>
  • #48
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Masz zainstalowane złe sterowniki pewnie... Mają być libusb-win32 z katalogu drivers instalki.

    4\/3!!
  • #49
    dzarek1
    Poziom 13  
    te z instalki są do d, ściągnąłem najnowsze z http://libusb-win32.sourceforge.net/ i chyba cos idzie do przodu :)

    Code:
    Microsoft Windows XP [Wersja 5.1.2600]
    
    (C) Copyright 1985-2001 Microsoft Corp.

    C:\WINDOWS>cd..

    C:\>openocd -f interface/luminary.cfg -f board/ek-lm3s1968.cfg
    Open On-Chip Debugger 0.4.0-rc1-dev (2010-01-16-11:14)
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    Warn : Interface already configured, ignoring
    3000 kHz
    jtag_nsrst_delay: 100
    srst_only separate srst_gates_jtag srst_open_drain
    Info : clock speed 3000 kHz
    Info : JTAG tap: lm3s1968.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0x
    ba00, ver: 0x3)
    Info : lm3s1968.cpu: hardware has 6 breakpoints, 4 watchpoints

    :)
  • #50
    Freddie Chopin
    Specjalista - Mikrokontrolery
    dzarek1 napisał:
    te z instalki są do d, ściągnąłem najnowsze z http://libusb-win32.sourceforge.net/

    Bardzo konstruktywna krytyka! Właśnie dzięki tak szczegółowym i precyzyjnym uwagom mogę poprawić instalator...

    4\/3!!
  • #51
    dzarek1
    Poziom 13  
    cała przyjemność po mojej stronie ;)
    dzięki za pomoc
    dla ścisłości zainstalowałem libusb-win32-filter-bin-0.1.12.2.exe
  • #52
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Ja zaś ze swojej strony nikomu nie polecam dotykać sterowników typu filter, bo - naprawdę! - można skończyć reinstalując system... Jak ktoś ma myszkę i klawiaturę na USB to zainstalowanie ich będzie ostatnią rzeczą jaką zrobi w tym systemie.

    W paczce z OpenOCD są najnowsze sterowniki libusb-win32 (0.1.12.2) typu device i wystarczy je po prostu zwyczajnie RĘCZNIE (! a nie automatycznie przeszukując katalogi !) zainstalować po wywaleniu tych z FTDI - żadna filozofia.

    4\/3!!
  • #53
    dzarek1
    Poziom 13  
    no to bym sobie zrobił kuku, na szczęście wszytko działa,
    tylko dlaczego te z instalki nie dawały rezultatu, instalowałem je najprościej jak się da, czyli prawym na plik inf i zainstaluj.... chyba że usuwałem nie ten driver, który należało ?
    nie siedzę w sterownikach, więc wolę zapytać na przyszłość.
  • #54
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Do sterowników dodałem krótki opis w pliku info.txt, ale nie wiem czy napisałem tam akurat to.

    Aby odinstalować sterowniki dla FTDI usuwasz 1 urządzenie o odpowiedniej nazwie z grupy "USB Controllers" w menadżerze urządzeń. Zaś aby zainstalować poprawnie nowy sterownik, wystarczy odłączyć JTAGa, poczekać chwilkę i podłączyć go ponownie i w kreatorze który się pojawia wybierać zawsze opcję manualną - szczególnie nie należy sterownika wyszukiwać automatycznie w katalogach, tylko wybrać opcje "Don't search. I will select driver manually" (czy jakoś tak) i tam wskazać ręcznie odpowiedni sterownik. W przeciwnym wypadku (automatyczne wyszukiwanie) system Windows znajdzie nowe stery - owszem - ale zainstaluje i tak te które zostały przed chwilą usunięte...

    Istnieje też szansa, że w pliku który stworzyłem jest jakiś drobny błąd dotyczący Twojego interfejsu (inny VID/PID, etc.), więc system nie pozwoli ich zainstalować - podejrzyj więc "co tam masz" i czy jest dobry numer VID/PID podany.

    Instalacja powinna być w dwóch krokach - najpierw dodaje się nowe urządzenie do "USB Controllers", potem nowe urządzenie do nowej grupy "LibUSB-Win32 Drivers" (or sth.) - kreator powinien pojawić się dwa razy!

    4\/3!!
  • #55
    ciastek4
    Poziom 13  
    Witam szanownych kolegów.

    Mam problem w przypadku wgrywania nowego oprogramownia komendą load.
    Konsola wypluwa mi coś takiego:
    Code:
    target state: halted
    
    target halted due to debug-request, current mode: Thread
    xPSR: 0x61000000 pc: 0x08002b90
    Info : Padding image section 0 with 91664 bytes
    Warn : not enough working area available(requested 16384, free 16336)
    Error: flash memory not erased before writing
    Error: flash writing failed with error code: 0xfffffc7a
    Error: error writing to flash at address 0x08000000 at offset 0x00000000 (-902)
    Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xa2000012, ap_tar 0xffffffff
    Error: SWJ-DP STICKY ERROR
    Error: Read MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xa2000012, ap_tar 0xffffffff
    Error: SWJ-DP STICKY ERROR
    Error: Read MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Warn : Block read error address 0xfffffff0, count 0x1
    Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xa2000012, ap_tar 0xffffffff
    Error: SWJ-DP STICKY ERROR
    Error: Read MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xa2000012, ap_tar 0xffffffff
    Error: SWJ-DP STICKY ERROR
    Error: Read MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Warn : Block read error address 0xfffffff0, count 0x1
    Info : dropped 'gdb' connection - error -400

    objawia się to tym, że nie po uruchomieniu oprogramownia wskakuję do obsługi przerwania "HARD FAULT". Jeżeli wgram odpalę debuger jeszcze raz to wszystko jest ok (program wgrany i działa tak jak chcę).
    Procesor STM32F107 i program nie wykracza poza pamięc flash, ram.
  • #56
    Freddie Chopin
    Specjalista - Mikrokontrolery
    To jest interesujące:

    Info : Padding image section 0 with 91664 bytes

    Sugeruje to, że Twój program jakby zaczyna się od bajtu 91664...

    Używałem przez chwilkę STM32F107 i nie było z nim żadnych problemów pod OpenOCD. Pokaż jak wywołujesz OpenOCD i jak uruchamiasz GDB.

    4\/3!!
  • #57
    ciastek4
    Poziom 13  
    Proszę bardzo :).

    [Stm32][eclipse][openOCD] uruchomienie [Stm32][eclipse][openOCD] uruchomienie

    Żeby było ciekawie. Z tymi samymi komendami jak odpalę Zylin embedded debug to mogę program jest wgrywany bez problemu.
  • #58
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Tak jak już pisałem gdzie indziej - "odkliknij" halt i zamień "reset" + "halt" na "reset halt"

    Nawiasem mówiąc - nie prościej byłoby o tym problemie założyć nowy temat, a nie pisać w 3 na raz?

    4\/3!!
  • #59
    kalasz47
    Poziom 14  
    Witam,

    Mam pytanie do znawców środowiska ECLIPSE. Czy jest możliwość aby podczas debugowania mieć podgląd rejestrów peryferiów (np. USART) w innej formie niż wartość HEX? Dokładniej mam na myśli rozpisanie każdego z bitów i interpretację go na poziomie pełnionej funkcji, coś na kształt tego co można spotkać w środowisku Keil. Z góry dziękuję za pomoc.

    Pozdrawiam
  • #60
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Umożliwia to ta wtyczka http://sourceforge.net/projects/embsysregview/ ale jest ona w bardzo wczesnej fazie wciąż - ma pliki konfiguracyjne tylko do układów LM.

    4\/3!!