Hello,
Hope this is the right list, otherwise please let me know where I can
get help on the following issue.
I'm trying to flash a ATSAM3X8E on an Arduino Due using OpenOCD via
ST-LINK adapter. Arduino Due exposes a 4-pin SWD interface they call the
"Debug" pins.
I have connected ST-Link's pins 1 (VCC), 3 (TRST), 7 (SWDIO), 9 (SWCLK)
and 20 (GND) to Arduino Due's IOREF, RESET, TMS, TCK and GND
respectively.
Then I run the following command to flash the program.
# openocd -f openocd-due.cfg -c "program a.elf verify reset exit"
When I run that, I get the following output:
Open On-Chip Debugger 0.11.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Warn : Could not determine executable path, using configured BINDIR.
Info : The selected transport took over low-level target control. The
results might differ compared to plain JTAG/SWD
Info : clock speed 500 kHz
Info : STLINK V2J29S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.197910
Info : sam3.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for sam3.cpu on 3333
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0010004c msp: 0x20001000
** Programming Started **
flash
flash bank bank_id driver_name base_address size_bytes
chip_width_bytes
bus_width_bytes target [driver_options ...]
flash banks
flash init
flash list
gdb_flash_program ('enable'|'disable')
nand
program <filename> [address] [pre-verify] [verify] [reset] [exit]
Error: invalid subcommand "write_image erase a.elf"
** Programming Failed **
shutdown command invoked
embedded:startup.tcl:583: Error:
at file "embedded:startup.tcl", line 583
The openocd-due.cfg contains the following config.
source [find interface/stlink.cfg]
transport select hla_swd
adapter speed 1800
set CPUTAPID 0x2ba01477
source [find target/at91sam3XXX.cfg]
If it's of use, the program is just a main.c containing the following
code.
#include <stdio.h>
int main(void)
{
printf("hello, world!\n");
return 0;
}
and is compiled using the following commands.
$ arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -o a.elf main.c
$ arm-none-eabi-objcopy -O ihex -j .text -j .data a.elf a.hex
Some additional information. If I run $ openocd -f openocd-due.cfg and
press the reset button on the board I see the following log. The "Error"
line is when I press the reset button.
Open On-Chip Debugger 0.11.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Warn : Could not determine executable path, using configured BINDIR.
Info : The selected transport took over low-level target control. The
results might differ compared to plain JTAG/SWD
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 500 kHz
Info : STLINK V2J29S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.200000
Info : sam3.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for sam3.cpu on 3333
Info : Listening on port 3333 for gdb connections
Error: jtag status contains invalid mode value - communication failure
Polling target sam3.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
Info : Previous state query failed, trying to reconnect
Polling target sam3.cpu failed, trying to reexamine
Info : sam3.cpu: hardware has 6 breakpoints, 4 watchpoints
--
Sadeep Madurange
PGP: 103BF9E3E750BF7E