Split out OSK5912 board support from the omap5912 target config, and make
it pass sanity checks on my (Rev C/original) hardware:

 - Fix syntax error ("-irlen" not "irlen")
 - Provide real TAP ids for the ARM926ejs and the C55x dsp
 - Label both CPUs appropriately (DSP, ARM)
 - List both flash chips

The scan chain looks like this (note truncated DSP instruction code):

      TapName            | Enabled |   IdCode      Expected    IrLen IrCap  
IrMask Instr
 
---|--------------------|---------|------------|------------|------|------|------|---------
  0 | omap5912.dsp       |    Y    | 0x03df1d81 | 0x03df1d81 | 0x26 | 0x00 | 
0x00 | 0xffffffff
  1 | omap5912.arm       |    Y    | 0x0692602f | 0x0692602f | 0x04 | 0x01 | 
0x00 | 0x0c
  2 | omap5912.unknown   |    Y    | 0x00000000 | 0x00000000 | 0x08 | 0x00 | 
0x00 | 0xff

I still don't know what that third TAP is; maybe an early version of
an ICEpick JTAG router.
---
 tcl/board/osk5912.cfg   |   28 ++++++++++++++++++++++++++++
 tcl/target/omap5912.cfg |   34 ++++++++++++++--------------------
 2 files changed, 42 insertions(+), 20 deletions(-)

Split out OSK5912 board support from the omap5912 target config, and make
it pass sanity checks on my (Rev C/original) hardware:

 - Fix syntax error ("-irlen" not "irlen")
 - Provide real TAP ids for the ARM926ejs and the C55x dsp
 - Label both CPUs appropriately (DSP, ARM)
 - List both flash chips

The scan chain looks like this (note truncated DSP instruction code):

      TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMask Instr
 ---|--------------------|---------|------------|------------|------|------|------|---------
  0 | omap5912.dsp       |    Y    | 0x03df1d81 | 0x03df1d81 | 0x26 | 0x00 | 0x00 | 0xffffffff
  1 | omap5912.arm       |    Y    | 0x0692602f | 0x0692602f | 0x04 | 0x01 | 0x00 | 0x0c
  2 | omap5912.unknown   |    Y    | 0x00000000 | 0x00000000 | 0x08 | 0x00 | 0x00 | 0xff

I still don't know what that third TAP is; maybe an early version of
an ICEpick JTAG router.
---
 tcl/board/osk5912.cfg   |   28 ++++++++++++++++++++++++++++
 tcl/target/omap5912.cfg |   34 ++++++++++++++--------------------
 2 files changed, 42 insertions(+), 20 deletions(-)

--- /dev/null
+++ b/tcl/board/osk5912.cfg
@@ -0,0 +1,28 @@
+# http://omap.spectrumdigital.com/osk5912/
+
+source [find target/omap5912.cfg]
+
+# NOTE: this assumes you're using the ARM 20-pin ("Multi-ICE")
+# JTAG connector, and accordingly have J1 connecting pins 1 & 2.
+# The TI-14 pin needs "trst_only", and J1 connecting 2 & 3.
+reset_config trst_and_srst separate
+
+# NOTE:  an expansion board could add a trace connector ... if
+# it does, change this appropriately.  And reset_config too,
+# assuming JTAG_DIS reroutes JTAG to that connector.
+etm config $_TARGETNAME 8 demultiplexed full dummy
+etm_dummy config $_TARGETNAME
+
+# standard boards populate two 16 MB chips, but manufacturing
+# options or an expansion board could change this config.
+flash bank cfi 0x00000000 0x01000000 2 2 $_TARGETNAME
+flash bank cfi 0x01000000 0x01000000 2 2 $_TARGETNAME
+
+proc osk5912_init {} {
+	omap5912_reset
+
+	# detect flash
+	flash probe 0
+	flash probe 1
+}
+$_TARGETNAME configure -event reset-init { osk5912_init }
--- a/tcl/target/omap5912.cfg
+++ b/tcl/target/omap5912.cfg
@@ -1,5 +1,5 @@
-#TI OMAP5912 dual core processor - http://www.ti.com 
-#on a OMAP5912 OSK board http://www.spectrumdigital.com.
+# TI OMAP5912 dual core processor
+# http://focus.ti.com/docs/prod/folders/print/omap5912.html
 
 if { [info exists CHIPNAME] } {	
    set  _CHIPNAME $CHIPNAME    
@@ -17,22 +17,22 @@ if { [info exists ENDIAN] } {	
 if { [info exists CPUTAPID ] } {
    set _CPUTAPID $CPUTAPID
 } else {
-  # force an error till we get a good number
-   set _CPUTAPID 0xffffffff
+   # NOTE: validated with XOMAP5912 part
+   set _CPUTAPID 0x0692602f
 }
 
-#use combined on interfaces or targets that can't set TRST/SRST separately
-reset_config trst_and_srst
+# NOTE:  presumes irlen 38 is the C55x DSP, matching BSDL for
+# its standalone siblings (like TMS320VC5502) of the same era
 
 #jtag scan chain
-jtag newtap $_CHIPNAME unknown1 -irlen 38 -ircapture 0x0 -irmask 0x0 
-jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0 -expected-id $_CPUTAPID
-jtag newtap $_CHIPNAME unknown2 irlen 8 -ircapture  0x0 -irmask 0x0 
+jtag newtap $_CHIPNAME dsp -irlen 38 -ircapture 0x0 -irmask 0x0 -expected-id 0x03df1d81
+jtag newtap $_CHIPNAME arm -irlen 4 -ircapture 0x1 -irmask 0x0 -expected-id $_CPUTAPID
+jtag newtap $_CHIPNAME unknown -irlen 8 -ircapture  0x0 -irmask 0x0
 
-set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
-target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs
+set _TARGETNAME $_CHIPNAME.arm
+target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME
 
-$_TARGETNAME configure -event reset-init {
+proc omap5912_reset {} {
 	#
 	# halt target
 	#
@@ -50,14 +50,8 @@ $_TARGETNAME configure -event reset-init
 	sleep 500
 	mww 0xfffeb048 0x00005555
 	sleep 500
-	#
-	# detect flash
-	#
-	flash probe 0
 }
 
 # omap5912 lcd frame buffer as working area
-$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 0x3e800 -work-area-backup 0
-
-#flash bank <driver> <base> <size> <chip_width> <bus_width>
-flash bank cfi 0x00000000 0x1000000 2 2 0
+$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 \
+	-work-area-size 0x3e800 -work-area-backup 0
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to