OpenOCD and AT91SAM7 flash programming

aturowski wrote on Sunday, May 17, 2009:

I am trying to get OpenOCD working and I’ve managed to connect it with GDB and AT91SAM7X256. Debugging seems to work fine. Unfortunately I’ve tried to use OpenOCD to program MCU internal flash, but without success. Can you please provide me example of OpenOCD/GDB configuration file/commands which allows you to program internal flash?

Thanks,
Adam

rtel wrote on Sunday, May 17, 2009:

There are some example scripts in the FreeRTOS download - with documentation provided on the FreeRTOS.org WEB site.  However the version in the download is rather old and the commands are different if you are using a newer version of OpenOCD.

You can also use the Atmel provided SAM-BA program to program the flash rather than using OpenOCD for this.

Regards.

joelcote wrote on Tuesday, June 30, 2009:

I already use SAM-BA to program the flash and it’s work, but I need to program the flash with the JTAGkey_tiny Amontec. I want a know if someone have some cfg file with the new command who work with open ocd 0.1.0. when I try to program the flash with open ocd with the external tool of eclipse i have this error :

OLD SYNTAX: DEPRECATED - translating to new syntax
jtag newtap CHIP TAP -irlen 4 -ircapture 0x1 -irvalue 0xf
Example: STM32 has 2 taps, the cortexM3(len4) + boundryscan(len5)
jtag newtap stm32 cortexm3  …, thus creating the tap: "stm32.cortexm3"
jtag newtap stm32 boundry  …, and the tap: "stm32.boundery"
And then refer to the taps by the dotted name.
NEW COMMAND:
Runtime error, file "C:\0Data\SAM7_flash.cfg", line 23:
    bad option "arm7tdmi": must be one of count, create, current, names, number, or types

Can someone help me?, I really don’t know what to do.

thank

Joël

joelcote wrote on Tuesday, June 30, 2009:

I have also this error

NEW COMMAND:
invalid command name "daemon_startup_reset"

joelcote wrote on Tuesday, June 30, 2009:

I have also this error

NEW COMMAND:
invalid command name "daemon_startup_reset"

stf12 wrote on Friday, July 03, 2009:

Hi all,

I received a working configuration file for AT91SAM7x / OpenOCD 0.1.0 / Amontec JTAGkey-Tiny. It uses only one big .cfg file. I can’t test it because I have not board based on that MCU! But people are reporting that this file work fine, and… you can quickly try it!

Regards,
Stefano

SAM7_flash.cfg
----------------------------------------------------------------------------------------------------------------------
#JC default ports
telnet_port 4444
gdb_port 3333
tcl_port 6666

# tell gdb our flash memory map
# and enable flash programming
gdb_memory_map enable
gdb_flash_program enable

#interface
interface ft2232
ft2232_device_desc "Amontec JTAGkey A"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xcff8

jtag_khz 2000

jtag_nsrst_delay 200
jtag_ntrst_delay 200

#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 [format "%s.cpu" $_CHIPNAME]

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
}

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

#flash bank <driver> <base> <size> <chip_width> <bus_width>
flash bank at91sam7 0 0 0 0 0

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

#jc truc ajouté
init
reset halt
#flash write_image erase C:\0Data\AxesNetwork\0Firm\ARM7\SourceEL\getting-started-project-1.3-at91sam7x-ek\getting-started-project\bin\getting-started-project-at91sam7x256-flash.elf 0x0 elf
flash write_image C:/0Data/AxesNetwork/0Firm/ARM7/FreeRTOSV5.2.0/Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/RTOSDemo.bin 0x00100000 bin
#verify_image getting-started-project-at91sam7x256-flash.elf
reset run
shutdown
----------------------------------------------------------------------------------------------------------------------

joelcote wrote on Tuesday, July 07, 2009:

Thank for your post stefano, I forgot to post that I have find the answer. Also this file is the one I wrote and send you be e-mail.