aboutsummaryrefslogtreecommitdiff
path: root/tcl/target/hilscher_netx500.cfg
blob: 93375fd819f65f85198dcbb5da49b5936c874ae6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#Hilscher netX 500 CPU

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

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

if { [info exists CPUTAPID] } {
   set _CPUTAPID $CPUTAPID
} else {
   set _CPUTAPID 0x07926021
}

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

# that TAP is associated with a target
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME

proc mread32 {addr} {
  set value(0) 0
  mem2array value 32 $addr 1
  return $value(0)
}

# This function must be called on netX100/500 right after halt
# If it is called later the needed register cannot be written anymore
proc sdram_fix { } {

  set accesskey [mread32 0x00100070]
  mww 0x00100070 [expr $accesskey]
  mww 0x0010002c 0x00000001

  if {[expr [mread32 0x0010002c] & 0x07] == 0x07} {
	 puts "SDRAM Fix was not executed. Probably your CPU halted too late and the register is already locked!"
  } else {
	 puts "SDRAM Fix succeeded!"
  }
}