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

Konfiguracja OpenOCD dla SAM7S256 z JTAG - błąd przy wgrywaniu programu

ullman 27 Kwi 2010 23:55 2292 9
REKLAMA
  • #1 8011286
    ullman
    Poziom 11  
    Posty: 74
    Ocena: 3
    Witam
    Mam problem z wgraniem programu do sam7s256 za pomocą JTAG i programu Openocd dostaje taki błąd:

    Konfiguracja OpenOCD dla SAM7S256 z JTAG - błąd przy wgrywaniu programu

    moje pliki konfiguracyjne:
    ft.cfg
    
    #interface
    interface ft2232
    ft2232_layout oocdlink
    ft2232_vid_pid 0x0403 0x6010
    ft2232_device_desc "OOCDLink A"
    

    sam7s256.cfg
    
    ######################################################### 
    # 
    # Target section, this example was tested with an 
    # Olimex SAM7-P256 board. 
    # 
    
    # Start slow, speed up after reset 
    jtag_khz 1000 
    
    #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 sam7s256 
    } 
    
    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 [format "%s.cpu" $_CHIPNAME] 
    
    target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi 
    $_TARGETNAME configure -event reset-init { 
       # 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=60) 
       mww 0xffffff60 0x003c0100    
       sleep 100 
    } 
    
    $_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0 
    
    #flash bank <driver> <base> <size> <chip_width> <bus_width> 
    flash bank at91sam7 0 0 0 0 0 
    init 
    reset halt 
    
    # For more information about the configuration files, take a look at: 
    # openocd.texi
    


    flash.script
    
    wait_halt                                 # halt the processor and wait 
    armv4_5 core_state arm                    # select the core state 
    mww 0xffffff60 0x00320100                 # set flash wait state (AT91C_MC_FMR) 
    mww 0xfffffd44 0xa0008000                 # watchdog disable (AT91C_WDTC_WDMR) 
    mww 0xfffffc20 0xa0000601                 # enable main oscillator (AT91C_PMC_MOR) 
    sleep 100                                 # wait 100 ms 
    mww 0xfffffc2c 0x00480a0e                 # set PLL register (AT91C_PMC_PLLR) 
    sleep 200                                 # wait 200 ms 
    mww 0xfffffc30 0x7                        # set master clock to PLL (AT91C_PMC_MCKR) 
    sleep 100                                 # wait 100 ms 
    mww 0xfffffd08 0xa5000401                 # enable user reset AT91C_RSTC_RMR 
    flash write_image erase main.elf 0x00100000 # program the onchip flash 
    reset run                                 # reset processor 
    shutdown                                  # stop OpenOCD
    


    Próbowałem zmienić reset-init na reset-halt ale nic to nie pomogło. Proszę o pomoc w rozwiązaniu tego problemu.
  • REKLAMA
  • #2 8011539
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    0. Zawsze w razie problemów warto zmniejszyć prędkość JTAGa, nawet do extremalnie małych wartości.

    1. Przecież do OpenOCD 0.3.1 są skrypty zarówno do tego procka jak i tego JTAGa - po co na siłę piszesz swoje? Użyj standardowych...

    2. Jest już nowsze OpenOCD

    (poniższe punkty na przyszłość, bo teraz problem następuje wcześniej niż flashowanie)

    3. Obraz .elf powinien być skompilowany tak, aby nie trzeba było go przesuwać, przesuwanie go to 99% szansy na problem.

    4. Kolejny raz zastanawiam się, czy tylko ja myślę, że gdy jest problem to trzeba sprawę upraszczać, a nie stosować niewiadomo-jak-rozbudowane-skrypty-do-flashowania... Połowa, nie - trzy czwarte tych komend jest ZBĘDNA i może powodować właśnie takie cuda, a pozostałe są po prostu bezsensu... Zastosuj TYLKO takie komendy:

    init
    reset halt (ewentualnie reset init)
    flash write_image erase main.elf
    reset run
    shutdown

    (uwagi natury technicznej)

    Jeśli tego JTAGa lub płytkę robiłeś sam, to stawiam na problem sprzętowy.

    4\/3!!
  • #3 8011826
    ullman
    Poziom 11  
    Posty: 74
    Ocena: 3
    Gdzie mogę znaleźć standardowe pliki konfiguracyjne do sam7s256? Szukając w internecie natrafiam na przeróbki. Na czym polega kompilacja programu tak aby nie trzeba było przesuwać obrazu.elf? Na czym polega to przesuwanie? Do kompilacji używam WinARM.
  • REKLAMA
  • REKLAMA
  • #5 8012097
    ullman
    Poziom 11  
    Posty: 74
    Ocena: 3
    Openocd wziąłem z płyty która była dodana do sondy JTAG. Czy nóżka JTAGSEL procesora podczas wgrywania programu powinna być podłączona do 3,3V? Ja ją właśnie tak podłączyłem.
  • REKLAMA
  • #7 8012248
    ullman
    Poziom 11  
    Posty: 74
    Ocena: 3
    Podłączyłem go do 3,3V bo tak wyczytałem w manualu, a zastanawiam się czy jest to poprawne bo nie mogę zaprogramować układu i na płytce którą mam z procesorem to wyprowadzenie wisiało w powietrzu.
  • #8 8029832
    ullman
    Poziom 11  
    Posty: 74
    Ocena: 3
    Połączyłem się przez telnet i przy próbie wgrania programu dostałem taką odpowiedź:
    Konfiguracja OpenOCD dla SAM7S256 z JTAG - błąd przy wgrywaniu programu
    Wygląda na to że sektory są zablokowane, jak możne je odblokować aby móc wgrać program?
  • Pomocny post
    #10 8031323
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam podaje na patelni:
    https://www.elektroda.pl/rtvforum/topic1485803.html#7989789

    Kolega ComaY napisał :
    Cytat:
    1. Się połączyć telnetem do OpenOCD
    2. wykonać tam takie polecenie: flash protect 0 0 1 off

    Procesor ma zasilanie core 1,8 Volta.... a to nie na temat. :)

Podsumowanie tematu

✨ Użytkownik ma problem z wgraniem programu do mikrokontrolera SAM7S256 za pomocą JTAG i OpenOCD, otrzymując błędy podczas procesu. W odpowiedziach zasugerowano zmniejszenie prędkości JTAG, użycie standardowych plików konfiguracyjnych do OpenOCD oraz uproszczenie skryptów do flashowania. Użytkownik pyta o standardowe pliki konfiguracyjne oraz o sposób kompilacji, aby uniknąć przesuwania obrazu .elf. Dodatkowo, pojawiły się pytania dotyczące podłączenia pinu JTAGSEL do 3,3V oraz problemu z zablokowanymi sektorami pamięci, które wymagają odblokowania zgodnie z dokumentacją.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA