Projekt badawczy Polska-Namibia 2010

Witam. W jednym z numerów elektroniki praktycznej znalazłem artykół odnośnie czytnika kart SD w oparciu o ARM AT91SAM7S64. Czy wie ktoś w jaki sposób można najszybciej go zaprogramować ponieważ próbowałem przez JTaga i program H-Jtag nie może się z nim w żaden sposób połączyć.

Proszę używać przycisku "Pisownia" przed wysłaniem postu.
Przeniosłem z Programowanie Początkujący.
[Dr.Vee]



Witam,

jestem nowy w dziedzinie programowania ARM.
Używam środowiska Cross Studio 2.0 (zarejestrowana wersja próbna) posiadam jtag ARMCABLE I propox'a procesor to at91sam7s64 (na module MMsam7) i płycie EVBsam7
mam problem z zaprogramowaniem procesora. Jak w Cross studio uruchamiam debugger program startuje jak należy. Natomiast po zdjęciu zasilania procesor wogóle nie reaguje. Zakładam ze program nie został wgrany do flash'a. Co trzeba zmienić w Cross Studio aby programowało pamieć flash?

proszę o pomoc

pozdrawiam.



Korzystam z boardu Olimex SAM7-P64 oraz z Jtaga Olimex ARM-Jtag. Uczę się programować na podstawie książki mikrokontrolery AT91SAM7 w przykładach.

Udało mi się skonfigurować WinARMa tak, żeby kompilacja przebiegła bezproblemowo, podczas programowania za pomocą OpenOCD wszystko przebiega sprawnie, oto wynik:


> "C:WinARMmake_progr.bat"

D:Blink_SAM7S>make.exe program
Programming with OPENOCD
C:WinARMutilsopenocdinopenocd-pp.exe -d2 -f C:WinARMutilsopenocdsam7_flashoocd_flash_sam7_wig.cfg
Info:    openocd.c:82 main(): Open On-Chip Debugger (2006-08-17 17:00 CEST)
Info:    target.c:219 target_init_handler(): executing reset script 'C:WinARMutilsopenocdsam7_flashoocd_flash_sam7.script'

> Process Exit Code: 0
> Time Taken: 00:02



Jednak program nie rusza. Dowiedziałem się, że w serii SAM7S można programować jtagiem nawet jeśli SAM-BA jest aktywna. Przeczytałem również, że może to być wina LPT ustawionego w tryb ECP. Przestawiłem na EPP i również nic z tego. Czy możliwe, że któreś ze zworek mają na to wpływ? Lub może trzeba zmienić jakieś magiczne ustawienie, o którym nic nie wiem? Proszę bardzo o pomoc.

EDIT:

Jednak zworki nie miały nic do tego. Po zaprogramowaniu muszę nacisnąć reset na płytce i program rusza. Czy to jest normalne? Czy program nie powinien ruszac od razu po wgraniu?



Witam.
Rok temu dokupiłem sobie do zestawu ZL11ARM(+ZL12ARM czyli AT91SAM7S64) programator jtag zl14prg(wszystko z kamami).
Zakupiłem to cudo, gdyż programując przez sam-ba już dostaje nerwicy(trzeba poświęcić więcej czasu na programowanie) - oczywiście sam-ba działa, a programatora jtag próbuje uruchomić od zeszłego roku...
Postanowiłem, że dziś znowu posiedzę nad tym problemem i mam nadzieje że w końcu to ruszy.
Jeśli chodzi o sprawy "elektroniczne" to programator jest sprawny, wszystkie sygnały przez programator przechodzą wte i wewte. Podłączony jest "oryginalnym" kablem do zestawu z prockiem. O ile pamiętam to przesiedziałem tydzień na sprawdzaniu czy wszystko jest dobrze podłączone, czy przypadkiem nie dostałem jakiegoś wadliwego egzemplarza.

System win98 lpt 378(port nie jest uszkodzony, gdyż skaner działa).
Kiedyś próbowałem na XP'ku(to samo sie dzieje)

Ustawiam zworkę jtag na on i off(czytałem gdzieś że walneli się z opisem).
Odpalam H-JTAG V0.9.2 [BUILD 20090425].
Konfiguracja jest taka sama jak tu http://www.elektroda.pl/rtvforum/topic1422136.html w pierwszym poście.
Lecz wywala mi błąd:
"Unable to find target. Please make sure that the hardware is properly connected and powered up". Pokazuje się układzik "UNKNOWN 0xDB69B6DA" gdy zworka jtag jest ustawiona w pozycji ON, a jak przestawię na OFF to wywala "UNKNOWN 0x00000000".
Skończyły mi się już pomysły, co może być nie tak. Próbowałem już wszystkich prędkości...
Zasilanie układu mam zrealizowane trochę w nietypowy sposób. Dokupiona jest przejściówka ZL1USB, która służy do programowania(gdyż w lapku nie mam rs'a) przez sam-bę(po odpowiednim podłączeniu 2 przewodów), oraz z tej przejściówki(USB) jest pobierane zasilanie.
Przy próbach z jtagiem zworka TST jest na 0, a druga na NORMAL.
Próbowałem resetować układ przed każdą próbą komunikacji.
Co jest nie tak?



Ja przy AT91SAM7S korzystam z takiej konfiguracji, co prawda mój JTAG to ARM-USB-OCD ale jest podobny do turtelizera:
plik /interface/olimex-arm-usb-ocd.cfg (konfiguruje parametry serwera gdb oraz sam interfejs do JTAG):

# daemon configuration
telnet_port 4444
gdb_port 3333
tcl_port 6666

# tell gdb our flash memory map
# and enable flash programming
gdb_memory_map enable
gdb_flash_program enable

interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15ba 0x0003


plik /target/sam7s256.cfg(konfiguruje tap i łaczy z targetem, jest to zmodyfikowany plik sam7x256):

#########################################################
#
# 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

i na sam koniec skrypt do programowania projektu, flash.script (umieszczony w katalogu projektu):
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 RTOSDemo/RTOSDemo.elf 0x0  # program the onchip flash
reset run                                 # reset processor
shutdown                                  # stop OpenOCD

Serwer debugowania startuje tak:
openocd -f /usr/local/lib/openocd/interface/olimex-arm-usb-ocd.cfg -f /usr/local/lib/openocd/target/sam7s256.cfg
Natomiast programowanie tak:
openocd -f /usr/local/lib/openocd/interface/olimex-arm-usb-ocd.cfg -f /usr/local/lib/openocd/target/sam7s256.cfg -f flash.script
Skoro pracujesz na win to te dwa pliki powinny się znajdować w katalogu instalacyjnym openocd. Możliwe że będziesz musiał pozmieniać ścieżki nieco. Dodam że używam wersji 0.1 svn:1353.



Szablon by Sliffka (© Projekt badawczy Polska-Namibia 2010)