Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ARM Eclipse USBSCARAB2, jak to poustawiać? jtag

MarcinBarowski 17 Mar 2010 09:58 7417 37
Texa Poland
  • #31
    Freddie Chopin
    MCUs specialist
    A jak klikniesz pauze (albo resume i potem pauze) to co się dzieje? Wgrany program działa? Co ciekawego jest w konsoli OpenOCD? Jak dokładnie owe OpenOCD teraz uruchamiasz? Czemu za każdym razem trzeba prosić o 15 dodatkowych szczegółów?

    Przetestuj też taką inicjalizację
    monitor reset halt
    monitor mwb 0xE01FC040 0x01
    monitor mwb 0xE01FC000 0
    monitor mwb 0xE01FC080 0
    monitor mwb 0xE01FC08C 0xAA
    monitor mwb 0xE01FC08C 0x55
    load

    (wyłącza PLL, MAM, mapuje odpowiednio pamięć)

    Dodatkowo w powyższym przetestuj zmianę "reset halt" na "reset init"

    4\/3!!
  • Texa Poland
  • #32
    MarcinBarowski
    Level 15  
    1) Konfigurację OpenOCD nie zmieniałem, więc jest dalej taka sama, czyli tak jak wcześniej kazałeś mi zrobić

    ARM Eclipse USBSCARAB2, jak to poustawiać? jtag

    2) Po włączeniu resume wyskakuje błąd:

    ARM Eclipse USBSCARAB2, jak to poustawiać? jtag

    3) Przetestowałem twój kod :

    ARM Eclipse USBSCARAB2, jak to poustawiać? jtag
  • Texa Poland
  • #33
    Freddie Chopin
    MCUs specialist
    Rdzeń wykłada się i ląduje w wyjątku undefined instruction... Istnieje duże prawdopodobieństwo, że Twój kod jest po prostu błędny.

    Dlatego po raz kolejny proponuję też przetestowanie przykładu z mojej strony, który na pewno jest dobry.

    4\/3!!
  • #34
    MarcinBarowski
    Level 15  
    Hmm.... dziwne, ale dobra.. napisze sobie jakąś prostą funkcję i dam zaraz znać...

    jak narazie dziękuje
  • #35
    MarcinBarowski
    Level 15  
    Witam uruchomiłem jtaga, jednak na innej płytce.
    Widocznie coś jest nie tak ze złączem jtaga na płytce niedziałającej.
    Także postaram się to naprawić i dam znać co i jak.
    Jak narazie postu nie zamykam.

    Dziękuję

    Marcin

    Dodano po 5 [godziny] 32 [minuty]:

    Witam ponownie,

    walczę dalej z płytka i procesorem LPC2368. Dziwi mnie to że wszystkie programy, niezależnie czy dla procesora LPC2144 czy dla LPC2368 można wgrać/dbugować do LPC2144. Jednak gdy chce uruchomić program w LPC2368, to wyskakuje błąd:

    Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.berlios.de/doc/doxygen/bugs.html
    RCLK - adaptive
    jtag_nsrst_delay: 200
    jtag_ntrst_delay: 200
    trst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull srst_open_drain
    Info : RCLK (adaptive clock speed) not supported - fallback to 500 kHz
    Error: JTAG scan chain interrogation failed: all ones
    Error: Check JTAG interface, timings, target power, etc.
    Error: JTAG scan chain interrogation failed: all ones
    Error: Check JTAG interface, timings, target power, etc.
    Command handler execution failed
    Warn : jtag initialization failed; try 'jtag init' again.

    Jedyną różnicą ustawień dla tych procesorów jest że zmiana odpowiednio targetu w inicjalizacji Openocd.

    Sprawdziłem sobie na scarabeus-ie czy w ogóle jakaś komunikacja jest z procesorem. Jtag łączy się z prockiem, ale wyświetla błąd "IDCODE".

    Może być uszkodzony procesor? Program który wcześniej wgrałem, działa...
    Programować, można jedynie przy pomocy Bootloader.
  • #36
    hardtmuth
    Level 20  
    Mam problem z uruchomieniem Eclipse + usbscarab2 + stm32f103rbt6 (eval board od stm).

    Calosc robiona wg poradnika ze strony Freddiego.

    Czesc narzedziowa, tj openocd + jtag oparta na openocd w wersji 0.4.0, wywolany z argumentami:

    -f interface/usbscarab2.cfg -f target/stm32.cfg

    gdzie usbscarab2.cfg jest tresci:
    
    #interface
    interface ft2232
    ft2232_device_desc "usbScarab2 A"
    ft2232_layout "olimex-jtag"
    ft2232_vid_pid 0x0403 0xBBE0 
    


    JTAGa wykrywany jest oczywiscie przez system, pracuje prawidlowo, po wlaczeniu openocd w konsoli i polaczeniu sie telnetem do niego mozna wykonywac podstawowe polecenia, rdzen pracuje, mozna odpytywac rejestry, itp. We flashu mam wgrany jakis stary program, wiec widze, ze procek dziala.

    Schody sie zaczynaja przy probie load/run na procku.
    W konfiguracji debugowania, dla stm32 + load mam:

    c/c++ app: out/nazwa-wersja.elf
    projekt nazwa-wersja

    build conf: use active

    w zakladce debugger: sciezka do arm-none-eabi-gdb.com z codesourcery, zaznaczone use remote i generic tcp/ip, localhost, 3333, ostatnie pole odznaczone (force thread...)

    w zakladce startup:
    init:
    monitor reset
    monitor halt
    load

    i dalej set bkpnt at: main
    resume

    wszystko inne odznaczone.

    w source i common nic nie zmienialem.

    log openocd przy laczeniu sie z plytka:
    
    Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.berlios.de/doc/doxygen/bugs.html
    1000 kHz
    jtag_nsrst_delay: 100
    jtag_ntrst_delay: 100
    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)
    Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints
    


    Wszystko wyglada ok.
    Dalej gdy chce zaladowac kod (stm32 + load), tak jak wyzej opisane:

    w konsoli od openocd+jtag+stm32:
    
    ...
    Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints
    Info : accepting 'gdb' connection from 0
    Warn : acknowledgment received, but no packet pending
    undefined debug reason 6 - target needs reset
    Info : device id = 0x20006410
    Info : flash size = 128kbytes
    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)
    target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0x81000000 pc: 0x080009ce msp: 0x20004fe8
    Info : dropped 'gdb' connection - error -400
    


    w konsoli stm32 load glownym drzewie: pusto,
    w gdb siedzi:
    warning: RMT ERROR : failed to get remote thread list.
    warning: RMT ERROR : failed to get remote thread list.
    w nazwa-wersja.elf: pusto

    oczywiscie w drzewie od stm32 load wszedzie widnieje slowo <terminated>

    i po chwili wyskakuje okienko problem occurred, launching stm32 Load has encountered a problem. Error in final launch sequence. w details siedzi:

    
    Error in final launch sequence
    Failed to execute MI command:
    load
    Error message from debugger back end:
    No executable file specified.
    Use the "file" or "exec-file" command.
    Failed to execute MI command:
    load
    Error message from debugger back end:
    No executable file specified.
    Use the "file" or "exec-file" command.
    No executable file specified.
    Use the "file" or "exec-file" command.


    Jak moze openocd nie lapac polecenia load? plik elf jest wprowadzony prawidlowo w konfiguracji. Moge jeszcze recznie sprobowac z telnetu zaladowac plik, ale nie wiem jak mu przekazac sciezke do load. To nie moja pierwsza zabawa z arm, wczesniej jedynie mialem inna pcb (ten sam proc), jtag na lpt, no i inny komputer.
  • #37
    Freddie Chopin
    MCUs specialist
    W najnowszym Eclipse trzeba korzystać z pól "Load Image and Symbols" (zamiast wpisywania "load" powyżej) - jeśli chcemy ładować program do układu to zaznaczone powinny być obydwie opcje ("Load Image" i "Load Symbols"), jeśli tylko zdebuggować program załadowany wcześniej to do debuggera trzeba załadować tylko symbole (zaznaczone "Load Symbols"). W polach zostawić należy domyślne wartości.

    Bardzo ważne jest tez przestawienie w ustawieniach GDB Hardware Debugging na "Standard GDB Hardware Debugging Launcher", a nie domyślnie wybrany "GDB (DSF) Hardware Debugging Launcher".

    No i po co rozdzielać reset i halt, skoro można zrobić po prostu "reset halt" co ma same korzyści?

    4\/3!!
  • #38
    hardtmuth
    Level 20  
    Dzieki. Wszystko ruszylo jak trzeba.

    Widocznie w domu uzywalem dawniej starego eclipse`a. Przyznam szczerze, ze lepsze jest rozwiazanie z load image/symbols niz poprzednie obejscie przez polecenie load.

    Jesli ktos by szukal w ustawieniach GDB Hardware Debugging: Standard GDB Hardware Debugging Launcher:
    na samym dole danego konfiga w GDB HW Debug, pod wszystkimi opcjami jest pole Using xxx - Select another, tutaj mozna to zmienic.

    EDIT: Tez tak macie, ze nie idzie zbindowac klawisza skrotu do Suspend w Eclipse? Nie cierpie klikania, wszystkie inne skroty dzialaja.