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

LPC1754 - OpenOCD i Versaloon

markosik20 19 Jan 2013 23:05 2676 9
Computer Controls
  • #1
    markosik20
    Level 33  
    Może ktoś podzielić się skryptem .cfg dla LPC1768/54 dla openocd współpracującego z Versaloon'em?
    Niestety openocd "wypluwa" takie coś:

    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.sourceforge.net/doc/doxygen/bugs.html
    adapter_nsrst_delay: 200
    jtag_ntrst_delay: 200
    10 kHz
    1000 kHz
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Info : Versaloon(0x15)by Simon(compiled on Dec 22 2011)
    Info : USB_TO_XXX abilities: 0x0000076E:0x010001EF:0xC0000007
    Info : clock speed 1000 kHz
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed


    Program vsprog wykrywa bez problemu uC.

    Code: bash
    Log in, to see the code


    Pobrałem paczkę openocd ze strony http://www.versaloon.com/download/openocd_swd_versaloon.7z jednak podczas kompilacji wyskoczył błąd związany z paczką jimtcl

    Code: bash
    Log in, to see the code


    wobec czego ściągnąłem najnowszą z http://jim.tcl.tk/index.html/doc/www/www/download/, podmieniłem i kompilacja zakończyła się sukcesem.
  • Computer Controls
  • #2
    mickpr
    Level 39  
    markosik20 wrote:
    Info : clock speed 1000 kHz
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed
    Error: SWD-DP OVERRUN - check clock, memaccess, or reduce swd speed

    Przesadziłeś z zegarem - zmniejsz go na max 800 (z mojego doświadczenia).

    Config dla LPC1768 (używam do LPC1758)
    Musisz zmodyfikować, bo masz mniej flash.

    # Versaloon
    #
    interface vsllink
    #transport select swd
    transport select jtag
    #swd_delay 4
    adapter_khz 800
    #adapter_khz 1000
    
    
    # NXP LPC1768 Cortex-M3 with 512kB Flash and 32kB+32kB Local On-Chip SRAM, clocked with 4MHz internal RC oscillator
    
    if { [info exists CHIPNAME] } {
    	set  _CHIPNAME $CHIPNAME
    } else {
    	set  _CHIPNAME lpc1758
    }
    
    if { [info exists ENDIAN] } {
    	set  _ENDIAN $ENDIAN
    } else {
    	set  _ENDIAN little
    }
    
    if { [info exists CPUTAPID ] } {
    	set _CPUTAPID $CPUTAPID
    } else {
    	set _CPUTAPID 0x4ba00477
    }
    
    #delays on reset lines
    #jtag_khz 50
    #mickpr (was deprecated):jtag_nsrst_delay 200
    adapter_nsrst_delay 200
    jtag_ntrst_delay 200
    
    # LPC2000 & LPC1700 -> SRST causes TRST
    reset_config trst_and_srst separate
    #reset_config srst_pulls_trst
    
    jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
    
    set _TARGETNAME $_CHIPNAME.cpu
    target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
    
    # LPC1768 has 32kB of SRAM on its main system bus (so-called Local On-Chip SRAM)
    $_TARGETNAME configure -work-area-phys 0x10000000 -work-area-size 0x10000 -work-area-backup 0
    
    # REVISIT is there any good reason to have this reset-init event handler??
    # Normally they should set up (board-specific) clocking then probe the flash...
    $_TARGETNAME configure -event reset-init {
    	mww 0x400FC040 0x01
    }
    
    # LPC1768 has 512kB of user-available FLASH (bootloader is located in separate dedicated region).
    # flash bank lpc1700 <base> <size> 0 0 <target#> <variant> <cclk> [calc_checksum]
    
    set _FLASHNAME $_CHIPNAME.flash
    flash bank $_FLASHNAME lpc2000 0x0 0x80000 0 0 $_TARGETNAME lpc1700 4000 calc_checksum
    
    # 4MHz / 6 = 666kHz, so use 500
    #jtag_khz 1200
    
    gdb_port 3333
    telnet_port 4444
    


    W tym wypadku JTAG. SWD działa równie dobrze, choć - minimalnie wolniej.
    Testowane z OpenOCD 0.7.0 (ostatnie opublikowane dirty)

    Quote:
    Open On-Chip Debugger 0.7.0-dev-00046-g14e12c3-dirty (2012-10-16-18:14)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
    adapter speed: 800 kHz
    adapter_nsrst_delay: 200
    jtag_ntrst_delay: 200
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Info : Versaloon(0x15)by Simon(compiled on Dec 22 2011)
    Info : USB_TO_XXX abilities: 0x0000076E:0x010001EF:0xC0000007
    Info : clock speed 800 kHz
    Info : JTAG tap: lpc1758.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
    Info : lpc1758.cpu: hardware has 6 breakpoints, 4 watchpoints


    Dla kompletu załączam openocd.exe (Pod Windows)
  • Computer Controls
  • #3
    markosik20
    Level 33  
    No nie wiem czy SWD dla najnowszego openocd działa poprawnie :)
    Open On-Chip Debugger 0.7.0-dev-00079-g08ddb19 (2013-01-20-10:29)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.sourceforge.net/doc/doxygen/bugs.html
    Error: BUG: current_target out of bounds


    OpenOCD przed chwilą kompilowane z najnowszego repozytorium (z opcją --enable-vsllink).
    Dla JTAG'a wydaje się działać poprawnie, mój drugi programator na FT2232 również działa OK...... tylko ten tryb SWD :( jest "głuchy".
  • #4
    mickpr
    Level 39  
    markosik20 wrote:
    Dla JTAG'a wydaje się działać poprawnie, mój drugi programator na FT2232 również działa OK...... tylko ten tryb SWD :( jest "głuchy".
    Chyba niestety masz rację - sprawdziłem starszy OpenOCD - (0.5.0) i tutaj SWD działa. 0.7.0 napisałem z rozpędu - że działa - ale faktycznie są jakieś kłopoty. Nie wiem czy przypadkiem nie ma patch'a dla SWD. Po więcej musiałbyś się udać na grupę http://tech.groups.yahoo.com/group/versaloon/

    Załączam działający SWD - konfiguracja ta sama, wystarczy wybrać:

    transport select swd
    #transport select jtag
    
  • #5
    markosik20
    Level 33  
    To Twoje openocd 0.5.0 to kompilowane jest z repozytorium openocd czy od autora versaloon'a? Niestety plik .exe to mi się nie przyda ;)
  • #6
    mickpr
    Level 39  
    markosik20 wrote:
    To Twoje openocd 0.5.0 to kompilowane jest z repozytorium openocd czy od autora versaloon'a? Niestety plik .exe to mi się nie przyda
    Od autora. Jestem zbyt leniwy aby kompilować pod Windows. Pod Linux'em to inna para kaloszy.
  • #7
    markosik20
    Level 33  
    Pod Windowsem Twój openocd działa i w trybie SWD i JTAG. Niestety pod linuksem nie udaje mi się skompilować openocd z patcha jaki autor udostępnia (wersja 0.5.0). Kompilacja całych źródeł z linku autora http://www.versaloon.com/download/openocd_swd_versaloon.7z (wersja 0.6.0) powoduje że Versaloon pracuje poprawnie tylko w trybie JTAG. W trybie SWD łączy się z targetem (rozpoznaje uC) lecz wywala błędy
    Invalid ACK 0x6 in JTAG-DP transaction Polling target failed, GDB will be halted. Polling again in 100ms
    .
    Sprawdzę jeszcze jak sprawa ma się dla LPC1114 gdzie występuje tylko SWD.

    _____________________

    Po przeczytaniu kilunastu postów na grupie dyskusyjnej udało się w końcu uruchomić interfejs SWD. Plik vsllink_swd.cfg powinien wyglądać jak poniżej.

    #
    # Versaloon Link -- VSLLink
    #
    # http://www.versaloon.com/
    #
    
    interface vsllink
    transport select swd
    swd_trn 2
    swd_delay 3
    
  • #8
    mickpr
    Level 39  
    Jeśli rozwiążesz problem - podziel się rozwiązaniem :)
    Mam zainstalowane Ubuntu 12 LTS, ale nie próbowałem jeszcze odpalić Versalon'a pod nim.
  • #9
    linder
    Level 2  
    Can openocd rely support lpc? I think it stm32 only
  • #10
    gaskoin
    Level 38  
    linder wrote:
    Can openocd rely support lpc? I think it stm32 only


    It can