Forum: Mikrocontroller und Digitale Elektronik openocd AT91SAM9260


von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Konfiguration
Linux: opensuse 11.0
Jtagger: ARM-USB-OCD von Olimex
Board: spezial mit AT91SAM9260

Das erste was auffällt; wenn openocd gestartet wird, dann kommt schon 
ein Fehler.
Bei dem Befehl Reset wird die CPU auch geresetet, kann aber nicht im 
halt verweilen. Dann gibt es immer ein Timing. Manchmal funktioniert es 
doch, eben nicht sichern.
Hat jemand eine Idee welchen Parameter ich falsch habe?



x1-6-00-1d-92-05-7d-7a:/home/red/trunk/src # ./openocd -f sam9.cfg
Open On-Chip Debugger 1.0 (2009-04-09-10:49) svn:1454


BUGS? Read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS


$URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
jtag_speed: 3
     TapName            | Enabled |   IdCode      Expected    IrLen 
IrCap  IrMask Instr
---|--------------------|---------|------------|------------|------|---- 
--|------|---------
 0 | at91sam9260.cpu    |    Y    | 0x00000000 | 0x0792603f | 0x04 | 
0x01 | 0x0f | 0x0f
Error: JTAG communication failure, check connection, JTAG interface, 
target power etc.
Error: trying to validate configured JTAG chain anyway...
Error: Could not validate JTAG scan chain, IR mismatch, scan returned 
0x00. tap=at91sam9260.cpu pos=0 expected 0x1 got 0
Warn : Could not validate JTAG chain, continuing anyway...
Warn : TAP at91sam9260.cpu:
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x0F
Warn : in_handler: w/o "in_value", mismatch in SIR
Warn : TAP at91sam9260.cpu:
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x0F
Warn : in_handler: w/o "in_value", mismatch in SIR
Warn : no tcl port specified, using default port 6666
Info : accepting 'telnet' connection from 0
Error: Target not examined yet
Runtime error, file "command.c", line 456:
    Info : JTAG tap: at91sam9260.cpu tap/device found: 0x0792603f 
(Manufacturer: 0x01f, Part: 0x7926, Version: 0x0)
Info : JTAG Tap/device matched
8 kHz
Error: timed out while waiting for target halted
Runtime error, file "sam9.cfg", line 79:


red@x1-6-00-1d-92-05-7d-7a:~> telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> reset
JTAG tap: at91sam9260.cpu tap/device found: 0x0792603f (Manufacturer: 
0x01f, Part: 0x7926, Version: 0x0)
JTAG Tap/device matched
8 kHz
target state: halted
target halted in ARM state due to debug-request, current mode: 
Supervisor
cpsr: 0x400000d3 pc: 0x00000500
MMU: disabled, D-Cache: disabled, I-Cache: enabled
6000 kHz
dcc downloads are enabled
flash 'cfi' found at 0x10000000

> mdw 0x10000000
0x10000000: ea000015

> Connection closed by foreign host.
red@x1-6-00-1d-92-05-7d-7a:~> telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
Target not examined yet
Runtime error, file "command.c", line 456:

> reset
JTAG tap: at91sam9260.cpu tap/device found: 0x0792603f (Manufacturer: 
0x01f, Part: 0x7926, Version: 0x0)
JTAG Tap/device matched
8 kHz
timed out while waiting for target halted
Runtime error, file "sam9.cfg", line 79:

in procedure 'at91sam_init' called at file "sam9.cfg", line 0

>

sam9.cfg :



 #daemon configuration
 telnet_port 4444
 gdb_port 8888


 # home-made jtag-interface

 interface ft2232
 ft2232_device_desc "Olimex OpenOCD JTAG A"
 ft2232_layout olimex-jtag
 ft2232_vid_pid 0x15ba 0x0003
# ft2232_latency 2

jtag_speed 3



######################################
# Target:    Atmel AT91SAM9260
######################################

if { [info exists CHIPNAME] } {
   set  _CHIPNAME $CHIPNAME
} else {
   set  _CHIPNAME at91sam9260
}

if { [info exists ENDIAN] } {
   set  _ENDIAN $ENDIAN
} else {
   set  _ENDIAN little
}

if { [info exists CPUTAPID ] } {
   set _CPUTAPID $CPUTAPID
} else {
  # force an error till we get a good number
   set _CPUTAPID 0x0792603f
}


reset_config trst_and_srst


jtag_nsrst_delay 200
jtag_ntrst_delay 200


jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf 
-expected-id $_CPUTAPID


######################
# Target configuration
######################

set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position 
$_TARGETNAME -variant arm926ejs

$_TARGETNAME invoke-event halted

# Internal sram1 memory
$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00300000 
-work-area-size 0x1000 -work-area-backup 1

scan_chain
$_TARGETNAME configure -event reset-deassert-post {at91sam_init}


# Flash configuration
#flash bank cfi <base> <size> <chip width> <bus width> <target#>
flash bank cfi 0x10000000 0x01000000 2 2 $_TARGETNAME


proc at91sam_init { } {

  # at reset chip runs at 32khz
  jtag_khz 8
  mww 0xfffffd08 0xa5000501         # RSTC_MR : enable user reset
  mww 0xfffffd44 0x00008000         # WDT_MR : disable watchdog

  mww 0xfffffc20 0x00004001         # CKGR_MOR : enable the main 
oscillator
  sleep 20                          # wait 20 ms
  mww 0xfffffc30 0x00000001         # PMC_MCKR : switch to main 
oscillator
  sleep 10                          # wait 10 ms
  mww 0xfffffc28 0x2060bf09         # CKGR_PLLAR: Set PLLA Register for 
198,656MHz
  sleep 20                          # wait 20 ms
  mww 0xfffffc30 0x00000101         # PMC_MCKR : Select prescaler
  sleep 10                          # wait 10 ms
  mww 0xfffffc30 0x00000102         # PMC_MCKR : Clock from PLLA is 
selected
  sleep 10                          # wait 10 ms

  # Now run at anything fast... ie: 10mhz!
  jtag_khz 10000                    # Increase JTAG Speed to 6 MHz
  arm7_9 dcc_downloads enable       # Enable faster DCC downloads

  mww 0xffffec00 0x0a0a0a0a         # SMC_SETUP0 : Setup SMC for Intel 
NOR Flash JS28F128P30T85 128MBit
  mww 0xffffec04 0x0b0b0b0b         # SMC_PULSE0
  mww 0xffffec08 0x00160016         # SMC_CYCLE0
  mww 0xffffec0c 0x00161003         # SMC_MODE0

  flash probe 0                     # Identify flash bank 0

  mww 0xfffff870 0xffff0000         # PIO_ASR : Select peripheral 
function for D15..D31
  mww 0xfffff804 0xffff0000         # PIO_PDR : Disable PIO function for 
D15..D31

  mww 0xffffef1c 0x2                # EBI_CSA : Assign EBI Chip Select 1 
to SDRAM

  mww 0xffffea08 0x85227259         # SDRAMC_CR : Configure SDRAM (2 x 
Samsung K4S561632H-UC75 : 4M x 16Bit x 4 Banks)
  #mww 0xffffea08 0x85227254         # SDRAMC_CR : Configure SDRAM (2 x 
Samsung K4S641632H-UC75 : 1M x 16Bit x 4 Banks)

  mww 0xffffea00 0x1                # SDRAMC_MR : issue a NOP command
  mww 0x20000000 0
  mww 0xffffea00 0x2                # SDRAMC_MR : issue an 'All Banks 
Precharge' command
  mww 0x20000000 0
  mww 0xffffea00 0x4                # SDRAMC_MR : issue 8 x 
'Auto-Refresh' Command
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x4
  mww 0x20000000 0
  mww 0xffffea00 0x3                # SDRAMC_MR : issue a 'Load Mode 
Register' command
  mww 0x20000000 0
  mww 0xffffea00 0x0                # SDRAMC_MR : normal mode
  mww 0x20000000 0
  mww 0xffffea04 0x5d2              # SDRAMC_TR : Set refresh timer 
count to 15us
}



************************************************************************ 
*********************************

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ich habe openocd mit strace gestartet. Es hängt in einer Schleife von 
der Zeitmessung.


gettimeofday({1239276615, 345621}, NULL) = 0
gettimeofday({1239276615, 345743}, NULL) = 0
gettimeofday({1239276615, 345862}, NULL) = 0
gettimeofday({1239276615, 345991}, NULL) = 0
select(10, [0 6 8 9], NULL, NULL, {0, 10000}) = 0 (Timeout)
gettimeofday({1239276615, 359025}, NULL) = 0
gettimeofday({1239276615, 359149}, NULL) = 0
gettimeofday({1239276615, 359272}, NULL) = 0
select(10, [0 6 8 9], NULL, NULL, {0, 10000}) = 0 (Timeout)
gettimeofday({1239276615, 370759}, NULL) = 0
gettimeofday({1239276615, 370881}, NULL) = 0
gettimeofday({1239276615, 371003}, NULL) = 0
select(10, [0 6 8 9], NULL, NULL, {0, 10000}) = 0 (Timeout)
gettimeofday({1239276615, 382815}, NULL) = 0

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.