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

[STM32][OpenOCD] - JLink problem z konfiguracją

MAR_c_i_n 04 Oct 2010 10:48 5660 11
Nazwa.pl
  • #1
    MAR_c_i_n
    Level 2  
    Witam

    Posiadam oryginalnego JLinka firmy Segger + sterowniki libusb-win32 1.2.2. Mam problem z połączeniem z targetem w OpenOCD. Używam mikrokontrolera STM32. Takie błędy mi wyskakują:

    
    C:\>openocd -f interface/jlink.cfg -f target/stm32.cfg
    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
    100 kHz
    jtag_nsrst_delay: 100
    jtag_ntrst_delay: 100
    Info : J-Link initialization started / target CPU reset ini
    Info : J-Link ARM V8 compiled Sep 30 2010 13:08:47
    Info : JLink caps 0xb9ff7bbf
    Info : JLink hw version 80000
    Info : JLink max mem block 8376
    Info : Vref = 3.267 TCK = 1 TDI = 0 TDO = 0 TMS = 0 SRST =
    
    Info : J-Link JTAG Interface ready
    Error: usb_bulk_read failed (requested=1, result=-5)
    Error: jlink_tap_execute, wrong result -107 (expected 1)
    Info : clock speed 100 kHz
    Error: usb_bulk_read failed (requested=1, result=-116)
    Error: jlink_tap_execute, wrong result -107 (expected 1)
    Error: usb_bulk_read failed (requested=1, result=-116)
    Error: jlink_tap_execute, wrong result -107 (expected 1)
    Command handler execution failed
    Warn : jtag initialization failed; try 'jtag init' again.
    


    Mój plik stm32.cfg wygląda następująco:

    
    # script for stm32
    
    if { [info exists CHIPNAME] } {
       set  _CHIPNAME $CHIPNAME
    } else {
       set  _CHIPNAME stm32
    }
    
    if { [info exists ENDIAN] } {
       set  _ENDIAN $ENDIAN
    } else {
       set  _ENDIAN little
    }
    
    # Work-area is a space in RAM used for flash programming
    # By default use 16kB
    if { [info exists WORKAREASIZE] } {
       set  _WORKAREASIZE $WORKAREASIZE
    } else {
       set  _WORKAREASIZE 0x4000
    }
    
    # JTAG speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so use F_JTAG = 1MHz
    jtag_khz 100
    
    jtag_nsrst_delay 100
    jtag_ntrst_delay 100
    
    
    
    
    #jtag scan chain
    if { [info exists CPUTAPID ] } {
       set _CPUTAPID $CPUTAPID
    } else {
      # See STM Document RM0008
      # Section 26.6.3
       set _CPUTAPID 0x3ba00477
    }
    jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
    
    if { [info exists BSTAPID ] } {
       # FIXME this never gets used to override defaults...
       set _BSTAPID $BSTAPID
    } else {
      # See STM Document RM0008
      # Section 29.6.2
      # Low density devices, Rev A
      set _BSTAPID1 0x06412041
      # Medium density devices, Rev A
      set _BSTAPID2 0x06410041
      # Medium density devices, Rev B and Rev Z
      set _BSTAPID3 0x16410041
      # High density devices, Rev A
      set _BSTAPID4 0x06414041
      # Connectivity line devices, Rev A and Rev Z
      set _BSTAPID5 0x06418041
    }
    jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 \
    	-expected-id $_BSTAPID2 -expected-id $_BSTAPID3 \
    	-expected-id $_BSTAPID4 -expected-id $_BSTAPID5
    
    set _TARGETNAME $_CHIPNAME.cpu
    target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
    
    $_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
    
    set _FLASHNAME $_CHIPNAME.flash
    flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME
    
    # For more information about the configuration files, take a look at:
    # openocd.texi
    


    Zmiany speed-a jtaga nic nie dały.

    Bardzo proszę o wszelkie sugestie jak temu zaradzić bez zmiany jtaga. Może już się ktoś z czymś takim spotkał - będę wdzięczny za każdą pomoc.
    Pozdrawiam
  • Nazwa.pl
  • #2
    Freddie Chopin
    MCUs specialist
    Poszukaj informacji na liście dyskusyjnej OpenOCD i/lub libusb-win32 - wydaje mi się, że ktoś kiedyś poruszał tam ten problem. Jeśli nic nie znajdziesz, to najlepiej będzie jeśli zadasz to pytanie na liście dyskusyjnej OpenOCD.

    4\/3!!
  • Nazwa.pl
  • #4
    MAR_c_i_n
    Level 2  
    Niestety nie mam licencji serwera GDB, dlatego potrzebuje to odpalić z OpenOCD - udało się to komuś??
  • #5
    romanek26
    Level 10  
    Witam, również mam problemy z odpalaniem J-LINKa z openOCD. Chcę korzystać z aplikacji WINARM ale nie mogę skonfigurować J-Linka z OpenOCD. Potrzebuję do pracy inżynierskiej zaprogramować układ AT91SAM7XC256 wykorzystując oprogramowania WinARM. Kupiłem programator Segger J-link ale nie mogę sobie z tym poradzić. Kombinowałem z lib32 uzyskałem połączenie, aczkolwiek wysypywały się błędy. Jak ewentualnie mogę skonfigurować GDB server aby flashować poprzez WinARM?
  • #6
    voland
    Level 15  
    Witam mam taki sam problem, niezależnie od tego czy arm jest podłączony pod jlinka czy nie, wywala to samo co widać w pierwszym poście. Dodam, że gdy wpinam jlinka w usb dioda zapala sie na zielono, gdy podłączam jlink pod arma dioda zapala się na czerwono. Następnie po odpaleniu openocd wyrzuca mi serię errorów no i dioda gaśnie na ponad minute. Czy ktoś z forumowiczów rozgryzł już ten problem

    Dodano po 4 [godziny] 42 [minuty]:

    Witam ponownie. Temat może już stary ale ponieważ spędziłem trochę czasu na znalezieniu rozwiązania to stwierdzam, że opisanie go tu może się jeszcze komuś przydać. Ogólnie freddi na jednym z postów zasugerował, że jlinki z nowym firmware nie dzialają z openocd, więcej szczegułów znalazłem pod linkiem:
    http://forum.sparkfun.com/viewtopic.php?f=18&t=25327&p=116028&hilit=jlink+8.0+jlink+80000#p116028
    Uściślając, należy pobrać starszą wersję softu do jlinka dostępną np. pod adresem:
    http://www.segger.com/cms/admin/uploads/userfiles/file/J-Link/Setup_JLinkARM_V410i.zip
    po czym podłączyć owy jlink do portu usb i uruchomić "j-link commander" z menu start. Otworzy się konsola w której należy wydać polecenie "exec invalidateFw". Jeżeli wszystko poszło pomyślnie jlink powinien mieć zmieniony firmware na starszy. Używam openocd 0.3.1 dla ścisłości. Pozdrawiam wszystkich forumowiczów.
  • #7
    md23
    Level 10  
    Mam nowy hardware bazujacy na LPC1768 i chce go zaprogramowac pod (Windowsami XP) Eclipse przy uzyciu openocd (0.5.0) i interfaceu jlink.

    Problem jaki mam to:

    Code: bash
    Log in, to see the code


    Czy w takim przypadku rowniez rekomandowana jest starsza wersja drivera do jlinka?

    pozdrawiam

    md23
  • #10
    Freddie Chopin
    MCUs specialist
    W OpenOCD 0.5.0 w istocie nie ma plików dla JLinka, ale jak zajrzysz do pliku dla RLinka, to wystarczy tam zmienić PID i VID na właściwy dla Twojego interfejsu. Ewentualnie ściągnij program zadig http://sourceforge.net/projects/libwdi/files/zadig/ i po jego uruchomieniu możesz trzema kliknięciami podmienić sterownik dla JLinka na inny (wybierz libusb-win32).

    4\/3!!
  • #11
    md23
    Level 10  
    Witaj Freddie,

    Dzieki za wskazowki. Sprobuje libusb-win32 gdy tylko bede mial jlinka z powrotem w domu. Czy wymagny jest jednak downgrade firmware'u jlinka do poprwanej wspolpracy z openocd versji 0.5.0.

    podzrawiam

    md23