#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!" } }