logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AT91SAM7S] OpenOCD - błąd przy programowaniu przez JTAG-lock-pick

pekaa 28 Wrz 2010 20:18 3460 23
REKLAMA
  • #1 8561644
    pekaa
    Poziom 11  
    Posty: 39
    Witam,
    Podcza programowanie przez openocd, za pomocą Jtag-lock-pick, wyskakuje mi cos takiego:
    
    C:\>openocd -f interface/jtagkey.cfg -f target/at91sam7sx.cfg -c "jtag_khz 1000"
     -c "init" -c "reset" -c "halt" -c "flash write_image erase C:\AT91SAM7S256_inc.
    hex" -c "reset run" -c "shutdown"
    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
    srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
    Warn : use 'at91sam7s.cpu' as target identifier, not '0'
    1000 kHz
    Info : clock speed 1000 kHz
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Info : Embedded ICE version 1
    Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    target state: halted
    target halted in ARM state due to debug-request, current mode: Supervisor
    cpsr: 0x60000013 pc: 0x000016ac
    auto erase enabled
    Error: No flash at address 0x00000000
    
    wrote 0 bytes from file C:AT91SAM7S256_inc.hex in 0.108000s (0.000 kb/s)
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    shutdown command invoked

    Czy ktoś może używał tego atmela mail podobny problem i wie jak go rozwiązać?
  • REKLAMA
  • #2 8563240
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    Witaj,

    No podpowiedź daje Ci samo openocd

    Cytat:

    Error: No flash at address 0x00000000



    Masz źle skonfigurowany adres obszaru pamięci flash mikrokontrolera

    Sprawdź w pliku gdzie definiowane są adresy i obszary pamięci.

    Próbujesz załadować pod adres 0x0 Twojego hexa a tam nie ma pod tym adresem obszaru pamięci flash.

    Sprawdź również w Twoim projekcie w pliku linkera jaki adres pamięci flash podałeś. Może on Ci skompilował plik Hez z błędnym adresem flasha.

    Jakbyś otworzył sobie wygenerowanego hexa to powienieneś w pierwszej linii mieć adres skoku do właściwego adresu pamięci flash.


    Popraw skrypty
  • #3 8563288
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    No ale przecież ten mikrokontroler ma flash dostępny pod tym adresem...

    Ja bym spróbował zastąpić dwie osobne komendy "reset" i "halt" jedną - "reset halt" - to może coś pomóc. Następnie można zgłębić skrypt reset-init w pliku konfiguracyjnym dla targeta i go użyć ("reset init").

    4\/3!!
  • #4 8563483
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    Zgadza się adres flasha zaczyna się od 0x00000000.

    Na mój gust coś jest nie halo z plikiem wynikowym prawdopodobnie nie zaczyna się od 0 tylko pewnie jest jakieś przesunięcie.

    Freddie log który zamieścił autor postu wydaje się raczej ok nic nie normalnego na nim nie widać.
  • REKLAMA
  • #6 8565426
    pekaa
    Poziom 11  
    Posty: 39
    piewsza linia pliku hex wygląda tak:
    10000000100000EAFEFFFFEAFEFFFFEAFEFFFFEA44

    wiec chyba adres sie nie zgadza ale nie wiem co jest tego przyczyna.
    Dodam, ze korzystam z projektu, który wczesniej był uzywany do programowania i dzialal bez problemu. Jedynie zmienilem plik makefile (wzialem go z projektu freddiego).

    W linkerze pamieć jest opisana tak:

    CODE (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000
      DATA (rw) : ORIGIN = 0x00200000, LENGTH = 0x00004000
      STACK (rw) : ORIGIN = 0x00204000,LENGTH = 0x00000000


    Próbowalem zemieniac komende "reset" i "halt" na "reset halt" ale nic to nie dalo.
  • #7 8566090
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    No tak miksowanie nie zawsze wychodzi za pierwszym razem.

    Ściągnij sobie przykłady ze stronki atmela tam są dobre gotowe przykłady. Uruchom najpierw gotowca a później zacznij porównywać które elementy masz inaczej. Tak krok po kroku dojdziesz.
  • #8 8568276
    pekaa
    Poziom 11  
    Posty: 39
    Myślę, że nie jest to wina tego, iż dodałem ten makefile od freddiego (jest on raczej na tyle uniwersalny, ze nie powinno byc problemów)
    Próbowałem wrzucać inne pliki .hex i .bin i wyskauje ten sam błąd (pliki sa raczej poprawne bo wczesniej te projekty działały).
    Wrzucałem je również do innego uC (też AT91SAM7S64) i ciągle to samo.

    Jesli chodzi o tę pirwszą linie hex to w innym projekcie wygląda ona podobnie ( a jest on raczej poprawny)

    Więc w ogóle nie ma pojęcia co jest nie tak...
    Ma ktoś może jakies inne pomysły, które mogą wskazać co nie działa?
  • REKLAMA
  • #9 8568395
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    Ja użyłem w swoim projekcie kiedyś At91sam7s128 i u mnie wykrywa flasha wypisując w logu informację typu "flash found at address 0x00100000".

    Może źle masz w skrypcie zdefiniowany adres pamięci flash zamieść ustawienia plików odpalanych w linijce z openocd ...... (plik at91sam7sx.cfg)

    Pozdrawiam
  • #10 8568441
    pekaa
    Poziom 11  
    Posty: 39
    plik at91sam7sx.cfg wygląda tak:
    
    #use combined on interfaces or targets that can't set TRST/SRST separately
    reset_config srst_only srst_pulls_trst
    
    if { [info exists CHIPNAME] } {
       set  _CHIPNAME $CHIPNAME
    } else {
       set  _CHIPNAME at91sam7s
    }
    
    if { [info exists ENDIAN] } {
       set  _ENDIAN $ENDIAN
    } else {
       set  _ENDIAN little
    }
    
    if { [info exists CPUTAPID ] } {
       set _CPUTAPID $CPUTAPID
    } else {
       set _CPUTAPID 0x3f0f0f0f
    }
    
    jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
    
    set _TARGETNAME $_CHIPNAME.cpu
    
    target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi
    $_TARGETNAME configure -event reset-init {
            soft_reset_halt
            # RSTC_CR : Reset peripherals
            mww 0xfffffd00 0xa5000004
            # disable watchdog
    	mww 0xfffffd44 0x00008000
    	# enable user reset
    	mww 0xfffffd08 0xa5000001
    	# CKGR_MOR : enable the main oscillator
    	mww 0xfffffc20 0x00000601
    	sleep 10
    	# CKGR_PLLR: 96.1097 MHz
    	mww 0xfffffc2c 0x00481c0e
    	sleep 10
    	# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
    	mww 0xfffffc30 0x00000007
    	sleep 10
    	# MC_FMR: flash mode (FWS=1,FMCN=73)
    	mww 0xffffff60 0x00490100
    	sleep 100
    }
    
    $_TARGETNAME configure -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0
    
    #flash bank <driver> <base_addr> <size> <chip_width> <bus_width> <target_number> [<target_name> <banks> <sectors_per_bank> <pages_per_sector> <page_size> <num_nvmbits> <ext_freq_khz>]
    set _FLASHNAME $_CHIPNAME.flash
    flash bank $_FLASHNAME at91sam7 0 0 0 0 0 0 0 0 0 0 0 0 18432
    
    # For more information about the configuration files, take a look at:
    # openocd.texi
    

    jest chyba ok...
    czy ma ktos jakiegos hexa, który działał na mikrokontrolerze at91sam7s64 i byl wrzucany przez jtag od freddiego?
  • Pomocny post
    #11 8570163
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    Spróbuj dodać jakoś w lini poleceń atrybut

    flash probe 0

    zobaczy co i jak z flashem
  • #12 8571926
    pekaa
    Poziom 11  
    Posty: 39
    nie wiem czy dobrze uzywam tej komendy, ale wyskakuje mi taki błąd:
    
    C:\>openocd -f interface/jtagkey.cfg -f target/at91sam7sx.cfg -c "jtag_khz 1000"
     -c "init" -c "flash probe 0" -c "reset halt" -c "flash write_image erase C:\mai
    n.hex" -c "reset run" -c "shutdown"
    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
    srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
    Warn : use 'at91sam7s.cpu' as target identifier, not '0'
    1000 kHz
    Info : clock speed 1000 kHz
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Info : Embedded ICE version 1
    Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units
    Error: Target not halted
    unknown error when probing flash bank '#0' at 0x00000000
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : srst pulls trst - can not reset into halted mode. Issuing halt after rese
    t.
    target state: halted
    target halted in ARM state due to debug-request, current mode: System
    cpsr: 0x200000df pc: 0x00000314
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    auto erase enabled
    Error: No flash at address 0x00000000
    
    wrote 0 bytes from file C:main.hex in 0.063000s (0.000 kb/s)
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    shutdown command invoked


    teraz zauważylem ze po połączeniu z przez mprog mam cos takiego (wczesniej bylo w porządku):
    Number Of Blank Devices = 0
    Number Of Programmed Devices = 0
    


    poprobuje przeinstalowac jeszcze sterowniki
  • #15 8572277
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    W procku na pewno da się coś przełączyć, żeby flash był dostępny też pod adresem 0 - mówiłem już wcześniej o podejrzeniu skryptu reset-init w pliku targeta, bo z komentarzy tam zawartych wynika, że skrypt m.in. tym się zajmuje. Po ewentualnych zmianach wystarczy tylko zastąpić "reset halt" rozkazem "reset init".

    Oczywiście rozwiązaniem jest też poprawka w skrypcie linkera.

    4\/3!!
  • REKLAMA
  • #16 8572884
    pekaa
    Poziom 11  
    Posty: 39
    zmienilem adres w linkerze ale teraz jakis inny błąd wyskakuje:
    
    C:\>openocd -f interface/jtagkey.cfg -f target/at91sam7sx.cfg -c "jtag_khz 1000"
     -c "init" -c "reset halt" -c "flash probe 0" -c "reset halt" -c "flash write_im
    age erase C:\AT91SAM7S256_inc.hex" -c "reset run" -c "shutdown"
    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
    srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
    Warn : use 'at91sam7s.cpu' as target identifier, not '0'
    1000 kHz
    Info : clock speed 1000 kHz
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Info : Embedded ICE version 1
    Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : srst pulls trst - can not reset into halted mode. Issuing halt after rese
    t.
    target state: halted
    target halted in ARM state due to debug-request, current mode: System
    cpsr: 0x200000df pc: 0x00000310
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    flash 'at91sam7' found at 0x00100000
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : srst pulls trst - can not reset into halted mode. Issuing halt after rese
    t.
    target state: halted
    target halted in ARM state due to debug-request, current mode: System
    cpsr: 0x200000df pc: 0x00000308
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    auto erase enabled
    wrote 4096 bytes from file C:AT91SAM7S256_inc.hex in 2.509000s (1.594 kb/s)
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Error: at91sam7s.cpu: IR capture error; saw 0x0f not 0x01
    error: -100
    Command handler execution failed



    Jesli chodzi o skrypt reset init w targecie to próbowalem go zeminic nastepująco:

    
    $_TARGETNAME configure -event reset-init {
            soft_reset_halt
            # RSTC_CR : Reset peripherals
            mww 0xfffffd00 0xa5000004
            # disable watchdog
    	mww 0xfffffd44 0x00008000
    	# enable user reset
    	mww 0xfffffd08 0xa5000001
    	# CKGR_MOR : enable the main oscillator
    	mww 0xfffffc20 0x00000601
    	sleep 10
    	# CKGR_PLLR: 96.1097 MHz
    	mww 0xfffffc2c 0x00481c0e
    	sleep 10
    	# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
    	mww 0xfffffc30 0x00000007
    	sleep 10
    	mww 0xffffff00 0x00000000
    	sleep 10
    	# MC_FMR: flash mode (FWS=1,FMCN=73)
    	mww 0xffffff60 0x00490100
    	sleep 100
    }

    nie wiem czy dobrze zrozumialem to co w nocie katalogowej jest napisane ale po prostu zmienilem bit RCB w rejestrze MC_RCR kontrolera pamieci.
    niestety cos nie dziala:/
  • #18 8573523
    pekaa
    Poziom 11  
    Posty: 39
    domyslam sie , ze cos trzeba zrobic:p
    Z tym skryptem to jeszcze cos spróbuje naprawic.
    Ale chodzi mi głównie o to co oznacza ten błąd jak programuje przy użyciu niezmienionego targeta, a po zmianie w adresu linkerze??
    bo nie mam pojecia skad sie on bierze.
  • Pomocny post
    #19 8574289
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Mówisz o tym - "at91sam7s.cpu: IR capture error; saw 0x0f not 0x01"? Jeśli tylko program został wgrany, a następnie uruchomiony, to ja bym się tym nie przejmował raczej, bo to niekoniecznie jest "błąd"...

    4\/3!!
  • #20 8580242
    pekaa
    Poziom 11  
    Posty: 39
    niby wszystko bylo ok, a teraz jak próbuje programowac, za każdym razem, wyrzuca mi ten błąd:
    C:\>openocd -f interface/jtagkey.cfg -f target/at91sam7sx.cfg -c "jtag_khz 1000"
     -c "init" -c "reset halt" -c "flash write_image erase C:\proj_arm.hex" -c "rese
    t run" -c "shutdown"
    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
    srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
    Warn : use 'at91sam7s.cpu' as target identifier, not '0'
    1000 kHz
    Info : clock speed 1000 kHz
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Info : Embedded ICE version 1
    Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Error: at91sam7s.cpu: IR capture error; saw 0x0f not 0x01
    error: -100
    Command handler execution failed

    Nie mam pojecia skad to sie wzieło. Czy ktos wie jaka jest przyczyna takiego errora?

    edit
    okazalo sie ze przerwala mi sie jedna linia tasmy od programatora, wiec po problemie.
  • #21 8980058
    tmkd
    Poziom 11  
    Posty: 86
    Ocena: 1
    Możesz mi powiedzieć z jakiego adresu na jaki zmieniłeś. Zakładam że zrobiłeś to w skryptach linkera. Ja obecnie mam w skryptach flash pod 0x100000
    pekaa napisał:
    zmienilem adres w linkerze ale teraz jakis inny błąd wyskakuje:
    
    C:\>openocd -f interface/jtagkey.cfg -f target/at91sam7sx.cfg -c "jtag_khz 1000"
     -c "init" -c "reset halt" -c "flash probe 0" -c "reset halt" -c "flash write_im
    age erase C:\AT91SAM7S256_inc.hex" -c "reset run" -c "shutdown"
    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
    srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
    Warn : use 'at91sam7s.cpu' as target identifier, not '0'
    1000 kHz
    Info : clock speed 1000 kHz
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Info : Embedded ICE version 1
    Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : srst pulls trst - can not reset into halted mode. Issuing halt after rese
    t.
    target state: halted
    target halted in ARM state due to debug-request, current mode: System
    cpsr: 0x200000df pc: 0x00000310
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    flash 'at91sam7' found at 0x00100000
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Warn : srst pulls trst - can not reset into halted mode. Issuing halt after rese
    t.
    target state: halted
    target halted in ARM state due to debug-request, current mode: System
    cpsr: 0x200000df pc: 0x00000308
    Warn : NOTE! DCC downloads have not been enabled, defaulting to slow memory writ
    es. Type 'help dcc'.
    Warn : NOTE! Severe performance degradation without fast memory access enabled.
    Type 'help fast'.
    auto erase enabled
    wrote 4096 bytes from file C:AT91SAM7S256_inc.hex in 2.509000s (1.594 kb/s)
    Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
    xf0f0, ver: 0x3)
    Error: at91sam7s.cpu: IR capture error; saw 0x0f not 0x01
    error: -100
    Command handler execution failed



    Jesli chodzi o skrypt reset init w targecie to próbowalem go zeminic nastepująco:

    
    $_TARGETNAME configure -event reset-init {
            soft_reset_halt
            # RSTC_CR : Reset peripherals
            mww 0xfffffd00 0xa5000004
            # disable watchdog
    	mww 0xfffffd44 0x00008000
    	# enable user reset
    	mww 0xfffffd08 0xa5000001
    	# CKGR_MOR : enable the main oscillator
    	mww 0xfffffc20 0x00000601
    	sleep 10
    	# CKGR_PLLR: 96.1097 MHz
    	mww 0xfffffc2c 0x00481c0e
    	sleep 10
    	# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
    	mww 0xfffffc30 0x00000007
    	sleep 10
    	mww 0xffffff00 0x00000000
    	sleep 10
    	# MC_FMR: flash mode (FWS=1,FMCN=73)
    	mww 0xffffff60 0x00490100
    	sleep 100
    }

    nie wiem czy dobrze zrozumialem to co w nocie katalogowej jest napisane ale po prostu zmienilem bit RCB w rejestrze MC_RCR kontrolera pamieci.
    niestety cos nie dziala:/
  • #22 8981612
    pekaa
    Poziom 11  
    Posty: 39
    o ile dobrze pamietam to zmienilem z 0x100000 na 0x00100000
  • #23 8982176
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    To źle pamiętasz na pewno, bo taka zmiana nie ma żadnego znaczenia. W skryptach linkera adresy początkowe pamięci mają odpowiadać tym rzeczywistym - 0x100000 dla flash, 0x200000 dla RAM.

    4\/3!!
  • #24 9018118
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    Witaj,

    Chyba coś źle sobie wywołujesz

    Cytat:
    C:\>openocd -f interface/jtagkey.cfg -f target/at91sam7sx.cfg -c "jtag_khz 1000"
    -c "init" -c "reset halt" -c "flash probe 0" -c "reset halt" -c "flash write_im
    age erase C:\AT91SAM7S256_inc.hex" -c "reset run" -c "shutdown"



    Spójrz na linię poleceń tylko ja ją trochę inaczej zapiszę

    C:\>openocd
    -f interface/jtagkey.cfg
    -f target/at91sam7sx.cfg
    -c "jtag_khz 1000"
    -c "init"
    -c "reset halt"
    -c "flash probe 0"
    -c "reset halt"
    -c "flash write_image erase C:\AT91SAM7S256_inc.hex"
    -c "reset run"
    -c "shutdown"

    Z lini poleceń odczytuję że Ty próbujesz drugi raz resetować zahaltowane urządzenie że się tak wyrażę.

    Wywal -c "reset halt" po komendzie -c "flash probe 0".

    Dodatkowo może warto w pierwszym wystąpieniu dać -c "reset init" żeby Ci wogóle wykonał to co masz w sekcji Atme.. .cfg w sekcji inicjalizacyjnej.

    W openocd w dokumentacji jest napisane że 'reset init' resetuje urządzenie natchmiast go zatrzymuje i uruchamia dla niego komendy czy instrukcje z procedury inicjalizacyjnej.

    Na koniec drobna uwaga może warto dać pomiędzy komendami małe opóźnienie np sleep 10-100.

    Pozdrawiam

Podsumowanie tematu

✨ Podczas programowania mikrokontrolera AT91SAM7S256 za pomocą OpenOCD i JTAG-lock-pick, użytkownik napotkał problemy związane z błędnym adresem pamięci flash. W odpowiedziach zasugerowano sprawdzenie konfiguracji adresów w pliku linkera oraz w pliku konfiguracyjnym OpenOCD. Użytkownik zauważył, że pierwsza linia pliku HEX wskazuje na nieprawidłowy adres, co może być przyczyną problemów. Wskazówki obejmowały również użycie komendy "reset init" zamiast "reset halt" oraz dodanie opóźnienia między komendami. Po zmianach w linkerze, użytkownik zdołał zidentyfikować flash pod adresem 0x00100000, co sugeruje konieczność dalszej korekty w skryptach.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA