Actions

EmSys

OpenOCD Config Files

From EdWiki

Revision as of 03:58, 9 April 2022 by Jshankar (Talk | contribs) (Installing Config Files)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


This page contains OpenOCD config files created by Embedded Systems Lab. OpenOCD reads config files to configure itself for different hardware. OpenOCD is packaged with config files for many devices; the files on this page add support for CEDT-USB-JTAG dongle.

Installing Config Files

To download a config file from this page, right-click the link and select "Save As." Save the file somewhere in OpenOCD's search path. If you're not sure what directories OpenOCD searches and you compiled OpenOCD yourself, save the config file to the same directory as your OpenOCD executable. If you have installed the OpenOCD Ubuntu Package, save the config file to /usr/local/share/openocd/scripts.

You can run OpenOCD with the script like this:

openocd -f yourconfigfile.cfg -f yourotherfile.cfg

By convention, config files for processors go in a folder called /target, files for target boards go in /board, and files for interface devices go in /interface. Many config files for boards search in /target for the file for their processor, so always save files for processor to /target. You aren't required to save your config files to /interface or /board, but it may help you keep your files organized. Just remember to include the folder in the file path when you run OpenOCD:

openocd -f interface/yourconfigfile.cfg -f board/yourotherfile.cfg

For a more in-depth discussion of how to use config files and how OpenOCD searches for them, see OpenOCD Config File Paths.

Board Config Files

These files add support for different target boards. Board config files usually go in the OpenOCD's /board folder, although this is not required.

olimex_str912.cfg

This is the config file for the Olimex STR912 board.


Download olimex_str912.cfg
Right-click the link and select "Save As"

Full text of olimex_str912.cfg:

# 
source [find interface/cedt-arm-jtag.cfg]

# set jtag speed
adapter_khz 3000

adapter_nsrst_delay 100
jtag_ntrst_delay 100
#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst

#
# FIXME use the standard str912 target config; that script might need
# updating to "-ignore-version" for the boundary scan TAP
#
#	source [find target/str912.cfg]
#

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

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

if { [info exists FLASHTAPID ] } {
   set _FLASHTAPID $FLASHTAPID
} else {
   set _FLASHTAPID 0x04570041
}
jtag newtap $_CHIPNAME flash -irlen 8 -ircapture 0x1 -irmask 0x1 -expected-id $_FLASHTAPID

if { [info exists CPUTAPID ] } {
   set _CPUTAPID $CPUTAPID
} else {
   set _CPUTAPID 0x25966041
}
jtag newtap $_CHIPNAME cpu   -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID

if { [info exists BSTAPID ] } {
   set _BSTAPID $BSTAPID
} else {
   # Found on STR9-comStick, revision STR912CS-A1
   set _BSTAPID1 0x1457f041
   # Found on STR9-comStick, revision STR912CS-A2
   set _BSTAPID2 0x2457f041
}
jtag newtap $_CHIPNAME bs -irlen 5 -ircapture 0x1 -irmask 0x1 -expected-id $_BSTAPID1 -expected-id $_BSTAPID2

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm966e -endian $_ENDIAN -chain-position $_TARGETNAME

$_TARGETNAME configure -event reset-init {
	# We can increase speed now that we know the target is halted.
	#jtag_rclk 3000

	# -- Enable 96K RAM
	# PFQBC enabled / DTCM & AHB wait-states disabled
	mww 0x5C002034 0x0191

	str9x flash_config 0 4 2 0 0x80000
	flash protect 0 0 7 off
}

$_TARGETNAME configure -work-area-phys 0x50000000 -work-area-size 16384 -work-area-backup 0

#flash bank <driver> <base> <size> <chip_width> <bus_width>
set _FLASHNAME $_CHIPNAME.flash0
flash bank $_FLASHNAME str9x 0x00000000 0x00080000 0 0 0
set _FLASHNAME $_CHIPNAME.flash1
flash bank $_FLASHNAME str9x 0x00080000 0x00008000 0 0 0

Processor Config Files

Processor config files must go in a folder called /target somewhere in OpenOCD's search path. These config files are provided by OpenOCD.