From bffe824df6f92a2e88932c9b6d01b26b3a0cc598 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Harboe?= Date: Fri, 9 Oct 2009 09:03:53 +0200 Subject: [PATCH] Added tip in documentation on how to translate quirky syntax --- doc/openocd.texi | 42 +++++++++++++++++++++++++++++++++++++++++- tcl/board/imx35pdk.cfg | 3 +++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/doc/openocd.texi b/doc/openocd.texi index 11bd7e0a..daa94609 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -66,6 +66,7 @@ Free Documentation License''. * Running:: Running OpenOCD * OpenOCD Project Setup:: OpenOCD Project Setup * Config File Guidelines:: Config File Guidelines +* Translating Configuration Files:: Translating Configuration Files * Daemon Configuration:: Daemon Configuration * Interface - Dongle Configuration:: Interface - Dongle Configuration * Reset Configuration:: Reset Configuration @@ -911,7 +912,6 @@ It provides guidelines for creating those files. You should find the following directories under @t{$(INSTALLDIR)/scripts}, with files including the ones listed here. Use them as-is where you can; or as models for new files. - @itemize @bullet @item @file{interface} ... think JTAG Dongle. Files that configure JTAG adapters go here. @@ -1464,6 +1464,46 @@ Examples: @item pxa270 - again - CS0 flash - it goes in the board file. @end itemize +@node Translating Configuration Files +@chapter Translating Configuration Files +@cindex translation +If you have a configuration file for another hardware debugger(Abatron, +BDI2000, BDI3000, Lauterbach, Segger, MacRaigor, etc.), translating +it into OpenOCD syntax is often quite straightforward. The most tricky +part of creating a configuration script is oftentimes the reset init +sequence where e.g. PLLs, DRAM and the like is set up. + +One trick that you can use when translating is to write small +Tcl proc's to translate the syntax into OpenOCD syntax. This +can avoid manual translation errors and make it easier to +convert other scripts later on. + +Example of transforming quirky arguments to a simple search and +replace job: + +@example +# rewrite commands of the form below to arm11 mcr... +# +# Lauterbach syntax(?) +# +# Data.Set c15:0x042f %long 0x40000015 +# +# OpenOCD syntax when using procedure below. +# +# setc15 0x01 0x00050078 +# +# +proc setc15 @{regs value@} @{ + global TARGETNAME + + echo [format "set p15 0x%04x, 0x%08x" $regs $value] + + arm11 mcr $TARGETNAME 15 [expr ($regs>>12)&0x7] [expr ($regs>>0)&0xf] [expr ($regs>>4)&0xf] [expr ($regs>>8)&0x7] $value +@} +@end example + + + @node Daemon Configuration @chapter Daemon Configuration @cindex initialization diff --git a/tcl/board/imx35pdk.cfg b/tcl/board/imx35pdk.cfg index 3e0bf6b3..05d83ee5 100644 --- a/tcl/board/imx35pdk.cfg +++ b/tcl/board/imx35pdk.cfg @@ -21,6 +21,9 @@ proc setc15 {regs value} { proc imx35pdk_init { } { + # this reset script comes from the Freescale PDK + # + # http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX35PDK echo "Target Setup: initialize DRAM controller and peripherals" -- 2.39.5