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

OpenOCD + GDB + Eclipse i JTAG lock pick Freddiego

Zaquadnik 22 Apr 2010 21:26 10402 36
  • #1
    Zaquadnik
    Level 27  
    Hmmm. Właśnie skonfigurowałem Eclipse do debugowania według samouczka ze strony Freddiego. Problem polega na tym, że dla JT4G-4R|\/| wsio śmiga, a dla JTAG lock pick mam komunikat (konsola, perspektywa debuggera):
    
    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
    Info : accepting 'gdb' connection from 0
    Warn : acknowledgment received, but no packet pending
    undefined debug reason 6 - target needs reset
    Info : device id = 0x20036410
    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: 0x61000000 pc: 0x080012c6 psp: 0x20000768
    Warn : not enough working area available(requested 16384, free 16336)
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Warn : Block read error address 0xfffffff0, count 0x1
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffff4
    Warn : Block read error address 0xfffffff0, count 0x1
    


    Na razie testowałem tylko dla STM32. W czym może być problem ?
  • #3
    flapo213
    Level 21  
    Spróbuj zmniejszyć prędkość. Czasami pomaga

    Pozdrawiam
  • #6
    Zaquadnik
    Level 27  
    Dziękować, sprawdzę w domu, bo nie mam przy sobie tej płytki z STM32. Dla STR712 oba JTAGi działają prawidłowo :)

    EDIT. Zadziałało. Ale dalej mam problem z STR911.

    
    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: 100
    jtag_ntrst_delay: 100
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Warn : str912.flash: nonstandard IR mask
    Warn : str912.bs: nonstandard IR mask
    Info : RCLK (adaptive clock speed) not supported - fallback to 10 kHz
    Info : JTAG tap: str912.flash tap/device found: 0x04570041 (mfg: 0x020, part: 0x4570, ver: 0x0)
    Info : JTAG tap: str912.cpu tap/device found: 0x25966041 (mfg: 0x020, part: 0x5966, ver: 0x2)
    Info : JTAG tap: str912.bs tap/device found: 0x2457f041 (mfg: 0x020, part: 0x457f, ver: 0x2)
    Info : Embedded ICE version 6
    Info : str912.cpu: hardware has 2 breakpoint/watchpoint units
    Info : accepting 'gdb' connection from 0
    Warn : acknowledgment received, but no packet pending
    undefined debug reason 6 - target needs reset
    Warn : target not halted
    RCLK not supported - fallback to 10 kHz
    Info : JTAG tap: str912.flash tap/device found: 0x04570041 (mfg: 0x020, part: 0x4570, ver: 0x0)
    Info : JTAG tap: str912.cpu tap/device found: 0x25966041 (mfg: 0x020, part: 0x5966, ver: 0x2)
    Info : JTAG tap: str912.bs tap/device found: 0x2457f041 (mfg: 0x020, part: 0x457f, ver: 0x2)
    Error: invalid mode value encountered 24
    Warn : ThumbEE -- incomplete support
    Error: cpsr contains invalid mode value - communication failure
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writes. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled. Type 'help fast'.
    Info : Halt timed out, wake up GDB.
    Error: timed out while waiting for target halted
    Command handler execution failed
    Error: Target not halted
    Error: failed erasing sectors 0 to 0 (-304)
    Error: flash_erase returned -304
    Warn : target not halted
    Warn : target str912.cpu is not halted
    Error: can't add breakpoint: target running
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    Warn : target not halted
    


    Komendy standardowe:
    
    monitor reset
    monitor halt 
    load
    

    próbowałem także:
    
    monitor reset halt
    load
    

    i to samo.
  • #8
    Zaquadnik
    Level 27  
    Jednak są problemy. Raz niby działa, raz nie. Sprawdzę co dokładnie się dzieje i napiszę.

    EDIT. O takie coś mam:
    
    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: 100
    jtag_ntrst_delay: 100
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Warn : str912.flash: nonstandard IR mask
    Warn : str912.bs: nonstandard IR mask
    Info : RCLK (adaptive clock speed) not supported - fallback to 10 kHz
    Info : JTAG tap: str912.flash tap/device found: 0x04570041 (mfg: 0x020, part: 0x4570, ver: 0x0)
    Info : JTAG tap: str912.cpu tap/device found: 0x25966041 (mfg: 0x020, part: 0x5966, ver: 0x2)
    Info : JTAG tap: str912.bs tap/device found: 0x2457f041 (mfg: 0x020, part: 0x457f, ver: 0x2)
    Info : Embedded ICE version 6
    Info : str912.cpu: hardware has 2 breakpoint/watchpoint units
    Info : accepting 'gdb' connection from 0
    Warn : acknowledgment received, but no packet pending
    RCLK not supported - fallback to 10 kHz
    Info : JTAG tap: str912.flash tap/device found: 0x04570041 (mfg: 0x020, part: 0x4570, ver: 0x0)
    Info : JTAG tap: str912.cpu tap/device found: 0x25966041 (mfg: 0x020, part: 0x5966, ver: 0x2)
    Info : JTAG tap: str912.bs tap/device found: 0x2457f041 (mfg: 0x020, part: 0x457f, ver: 0x2)
    target state: halted
    target halted in ARM state due to debug-request, current mode: Supervisor
    cpsr: 0x000000d3 pc: 0x00000000
    RCLK not supported - fallback to 1000 kHz
    cleared protection for sectors 0 through 7 on flash bank 0
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writes. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled. Type 'help fast'.
    Info : The target is not running when halt was requested, stopping GDB.
    Info : The target is not running when halt was requested, stopping GDB.
    Info : dropped 'gdb' connection - error -400
    Info : accepting 'gdb' connection from 0
    Warn : acknowledgment received, but no packet pending
    RCLK not supported - fallback to 10 kHz
    Info : JTAG tap: str912.flash tap/device found: 0x04570041 (mfg: 0x020, part: 0x4570, ver: 0x0)
    Info : JTAG tap: str912.cpu tap/device found: 0x25966041 (mfg: 0x020, part: 0x5966, ver: 0x2)
    Info : JTAG tap: str912.bs tap/device found: 0x2457f041 (mfg: 0x020, part: 0x457f, ver: 0x2)
    target state: halted
    target halted in ARM state due to debug-request, current mode: Supervisor
    cpsr: 0x000000d3 pc: 0x00000000
    RCLK not supported - fallback to 1000 kHz
    cleared protection for sectors 0 through 7 on flash bank 0
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writes. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled. Type 'help fast'.
    Warn : memory read caused data abort (address: 0xe8a2b108, size: 0x4, count: 0x1)
    


    Tak jakby był problem z zatrzymaniem procka i nagle, przy próbie odczytu pamięci, wywala Data Abort.
  • #9
    Freddie Chopin
    MCUs specialist
    Jedyny pomysł jaki mi pozostał, to niedostosowanie skryptu do sytuacji rzeczywistej - jeśli używasz STR911, a skrypt jest dla STR912, to jest źle ustawiony rozmiar pamięci (RAM lub Flash) lub coś w tym stylu? (te ustawienia są w 3 miejscach - w skrypcie reset-init, w ustawianiu work-area oraz w konfiguracji samego Flasha)

    Tak BTW to jeśli ten ostatni warning niczemu specjalnie nie przeszkadza, to ja bym go zignorował...

    Jeśli wciąż będą problemy, to zawsze warto spytać na liście dyskusyjnej OpenOCD - tam szanse uzyskania pomocy są większe (;

    4\/3!!
  • #12
    aszewczyk
    Level 11  
    W momencie wgrywania kodu powyzej 90 kilobajtow dostaje
    Quote:
    Ignoring packet error, continuing...
    Reply contains invalid hex digit 116


    skrypt:
    Quote:
    target remote localhost:3333
    monitor reset init
    monitor flash write_image erase C:/Programy/Eclipseworkspace/Generator/bin/generator.bin
    monitor resume
    monitor shutdown
    quit


    Procesor str912
  • #14
    aszewczyk
    Level 11  
    Zgodnie z przewidywaniami jest ich wiecej:P A wiekszej juz nie lyka(i tak daje 3000):/
  • #16
    aszewczyk
    Level 11  
    jtag_rclk.Jak jest wolniej wyrzuca tego wiecej. Kiedys juz podnosilem predkosc z tego powodu. Ale 3000 jest granica dla zastosowanego rezonatora wiec rclk nie ustawi sie na wyzej. Pytanie brzmi czy to w cyzms przeszkadza i czy da sie jakos wyrzucaniu tego zapobiec.
  • #17
    Freddie Chopin
    MCUs specialist
    Korzystasz z RTCK? Bo jeśli tak, to spróbuj wymusić częstotliwość - jtag_khz. No i przecież dolnej granicy nie ma (powiedzmy) - można ustawić super wolno jtag_khz 1 i będzie super wolno [; No i wciąż wydaje mi się, że rozumiesz ten parametr odwrotnie - jtag_rclk to jest coś na styl "jeśli jest możliwość użycia RTCK (adaptive clocking), to skorzystaj, jeśli nie, to ustaw po prostu podaną częstotliwość w kHz" - większa wartość parametru => większa prędkość.

    4\/3!!
  • #18
    aszewczyk
    Level 11  
    Daje wieksza to i tak uzywa 3000 sprobuje wymusic wiecej khzem moze to pomorze faktycznie.
  • #20
    aszewczyk
    Level 11  
    MNIEJ daje wiecej warningow. Powaznie. Sam sie zdziwilem ale tak jest. Juz raz pytalem o to. Wszyscy mowia zmniejsz predkosc. Ty podales wzor na to ponizej ile ustawic. Licze i wychodzi ze to co jest w defaulcie jest kilka rzedow wielkosci mniej. Zmniejszanie nic ni dawalo. To zwiekszam(wychodzi jako granice te 3000) i jest OK. Ale jak mi kod urosl to znow sypie tym warningiem.


    Edited: Ustawiam jtag_khz 500 mam warrning x2
    Quote:
    500 kHz
    cleared protection for sectors 0 through 7 on flash bank 0
    monitor flash write_image erase C:/Programy/Eclipseworkspace/Generator/bin/generator.bin
    auto erase enabled
    Ignoring packet error, continuing...
    Reply contains invalid hex digit 116
    monitor resume
    Ignoring packet error, continuing...
    Reply contains invalid hex digit 116
    monitor shutdown
    wrote 94636 byte from file C:/Programy/Eclipseworkspace/Generator/bin/generator.bin in 16.937500s (5.456411 kb/s)
    quit
    . Im mniejsza predkosc tym wolniej i wiecej warningow dla defaultowego 16 trwa to pare minut i leca jeden za drugim. Ustawiam 4000 i dalej mam max 3000
  • #21
    aszewczyk
    Level 11  
    I jeszcze jeden przeszkadzajacy problemik. Po monitor resume program chodzi. Jednak po wcisnieciu resetu procesor zawiesza sie. Odciecie zasilania przywraca proca do stanu normalnego w ktorym dziala reset. Powinienem walnac po zaprogramowaniu jeszcze jakiegos reseta przed resumem i wylaczeniem openocd czy tak?

    Edited:Ok. Zamiast Resume
  • #23
    aszewczyk
    Level 11  
    JTAG podlaczony OpenOCD wylaczone gwoli scislosci. Po zastapieniu monitor resume przez monitor reset. Wszystko zachowuje sie prawidlowo.
  • #24
    Freddie Chopin
    MCUs specialist
    Jeśli przed zatrzymaniem procka układ coś tam jeszcze zrobił (co jest dosyć popularnym problemem), to po zaprogramowaniu faktycznie może nie działać opcja "resume" i jest to całkowicie naturalne - to tak jakbyś uruchomił program, zatrzymał go w losowym momencie, zmienił program na inny i odblokował rdzeń, który zacznie pracę od tego miejsca gdzie skończył (stare ustawienie PC, stosów, rejestrów, pamięci, peryferiów, ...).

    Problem tego typu zwykle występuje jeśli układ ma nieco spartaczone struktury odpowiedzialne za reset (zarówno ten normalny, jak i reset struktur JTAGa).

    4\/3!!
  • #25
    pawelek1990
    Level 10  
    Witam mam problem z połączeniem tego wszystkiego w działającą całość, męcze się już z tym troche czasu i postanowiłem napisać na elektrodzie robiłem wszystko krok po kroku tak jak w freddiego toolchaine i zatrzymalem się w miejscu gdy w konsoli pojawia mi się taka zawartość:
    OpenOCD + GDB + Eclipse i JTAG lock pick Freddiego

    a moje ustawienia debugowania to:
    OpenOCD + GDB + Eclipse i JTAG lock pick FreddiegoOpenOCD + GDB + Eclipse i JTAG lock pick FreddiegoOpenOCD + GDB + Eclipse i JTAG lock pick FreddiegoOpenOCD + GDB + Eclipse i JTAG lock pick Freddiego
    prosze o użytkowników a w szczegółności Freddiego o ukierunkowanie moich działań.
  • #27
    pawelek1990
    Level 10  
    Pierwsze trzy punkty spełnione i konsola wypluwa to:
    OpenOCD + GDB + Eclipse i JTAG lock pick Freddiego OpenOCD + GDB + Eclipse i JTAG lock pick Freddiego
    dodam że moja platforma to STM32F103VCT6
    na czym polega odblokowanie pamięci flash?
  • #29
    pawelek1990
    Level 10  
    dziekuje za wskazówki flash wydaje się być odblokowany ale nie mam pojecia dlaczego mój skompilowany program zajmuje aż tak duzo pamieci nie mieści się we flashu procka... (demko Freddiego dla STM32 blink_led)
    OpenOCD + GDB + Eclipse i JTAG lock pick Freddiego OpenOCD + GDB + Eclipse i JTAG lock pick Freddiego
    rozłączyłem połączenie OpenOCD w eclipse i po komendzie reset na płytce prototypowej na wyswietlaczu przestało się ukazywać demko czyli zapis do flasha działa ;) jak rozwiązać ten problem możliwy jest zapis skompilowanego programu do zewnętrznej pamięci flash ?
  • #30
    tymon_x
    Level 30  
    pawelek1990 wrote:
    dziekuje za wskazówki flash wydaje się być odblokowany ale nie mam pojecia dlaczego mój skompilowany program zajmuje aż tak duzo pamieci nie mieści się we flashu procka...

    Usuń zbędne sekcje:
    PPM na projekt->Properties->C/C++ Build->Settings->ARM Sourcery GCC Compiler->Optimization, zaznacz -ffuction-sections oraz -fdata-sections, możesz jeszcze zmienić poziom optymalizacji z -O0 na -Os (size, rozmiar). Oraz w ARM Sourcery GCC Linker->General zaznacz -Xllinker --gc-sections.
    pawelek1990 wrote:
    ... rozwiązać ten problem możliwy jest zapis skompilowanego programu do zewnętrznej pamięci flash

    Jak zrobisz jak wyżej to się spokojnie zmieści :D Ładowanie z zewnętrznej pamięci najlepiej przez FSMC.