OpenOCD 0.4.0 cofiguration for OLIMEX ARM-USB-TINY-H

Oke, now I got some LEDs to blink.

It seems that the stuff I get to compile (without errors) does not do anything useful.

But I managed to flash the SAM7_Pxxx_led.bin file from Olimex’s site…

Go to their [development site, click ARM, click SAM7-P256, download the [SAM7-P256 blinking LED project, extract and flash the binary file.

I used a mixture between afinko’s configuration file and sam7x256.cfg. Here it is, I call it sam7-p256.cfg and currently it resides right next to my sources and Makefile:

#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config srst_only srst_pulls_trst

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

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

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

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

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

$_TARGETNAME configure -event reset-init {
	# disable watchdog
	mww 0xfffffd44 0x00008000
	# enable user reset
	mww 0xfffffd08 0xa5000001
	# CKGR_MOR : enable the main oscillator
	mww 0xfffffc20 0x00000601
	sleep 10
	# CKGR_PLLR: 96.1097 MHz
	mww 0xfffffc2c 0x00481c0e
	sleep 10
	# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
	mww 0xfffffc30 0x00000007
	sleep 10
	# MC_FMR: flash mode (FWS=1,FMCN=60)
	mww 0xffffff60 0x003c0100
	sleep 100

	wait_halt
	flash probe 0
}

$_TARGETNAME configure -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0

#flash bank <driver> <base_addr> <size> <chip_width> <bus_width> <target_number> [<target_name> <banks> <sectors_per_bank> <pages_per_sector> <page_size> <num_nvmbits> <ext_freq_khz>]
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME at91sam7 0 0 0 0 $_TARGETNAME 0 0 0 0 0 0 0 18432

# For more information about the configuration files, take a look at:
# openocd.texi

init
reset init

First, the chip has to be unlocked, as it’s locked when you receive it:

openocd -f interface/olimex-arm-usb-tiny-h.cfg -f sam7-p256.cfg --command "flash protect 0 0 1 off" --command "mww 0xfffffd08 0xa5000401" --command "resume" --command "shutdown"

I then flash using this command:

openocd -f interface/olimex-arm-usb-tiny-h.cfg -f sam7-p256.cfg --command "flash write_bank 0 SAM7_Pxxx_led.bin 0x0" --command "mww 0xfffffd08 0xa5000401" --command "resume" --command "shutdown"

I may not do things ‘by the book’, but it worked for me so far, and I can control from the Makefile what to do. Hopefully this will all be improved (both by me and by others).

So far, thank you everyone for all the help. My next step is to figure out how to actually make my own ‘blink-a-LED’ code! If I succeed, I will make it so simple that it will probably compile on most systems; eg. I won’t be initializing timers, communicating via RS232, sending rockets to the sky, making floating-point calculations on the space-shuttle wings, etc…; just blink a single LED. Sounds awesome, eh? ;)](http://www.olimex.com/dev/soft/arm/SAM7/SAM7-P256-blinking-LED.zip)](Products)