AT91SAM4L: handle reset run/halt in SMAP

This is a remake of http://openocd.zylin.com/1966
originally written by Angus Gratton <gus@projectgus.com>

ATSAM4L has a "System Manager Access Port" (SMAP) that holds the CPU
in reset if TCK is low when srst (RESET_N) is deasserted.
Without this change any use of sysresetreq or srst locks the chip
in reset state until power is cycled.

A new function smap_reset_deassert is called as reset-deassert-post event handler.
It optionally prepares reset vector catch and SMAP reset is released then.

Change-Id: Iad736357b0f551725befa2b9e00f3bc54504f3d8
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/2604
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
This commit is contained in:
Tomas Vanek
2015-03-14 12:03:47 +01:00
committed by Paul Fertser
parent bdfd5bbe04
commit f3b1405fdd
3 changed files with 77 additions and 7 deletions

View File

@@ -5,3 +5,23 @@ source [find target/at91sam4XXX.cfg]
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME at91sam4l 0x00000000 0 1 1 $_TARGETNAME
# SAM4L SMAP will hold the CPU in reset if TCK is low when RESET_N
# deasserts (see datasheet 42023E-SAM-07/2013 sec 8.11.3).
#
# smap_reset_deassert configures whether we want to run or halt out of reset,
# then instruct the SMAP to let us out of reset.
$_TARGETNAME configure -event reset-deassert-post "at91sam4l smap_reset_deassert"
# SRST (wired to RESET_N) resets debug circuitry
# srst_pulls_trst is not configured here to avoid an error raised in reset halt
reset_config srst_gates_jtag
# SAM4L starts from POR with SYSCLK set to 115kHz RCSYS, needs slow JTAG speed.
# Datasheet does not specify SYSCLK to JTAG/SWD clock ratio.
# Usually used SYSCLK/6 is hell slow, testing shows that debugging can work @ SYSCLK/2
# but your mileage may vary.
adapter_khz 50
# System RC oscillator RCSYS starts in 3 cycles
adapter_nsrst_delay 0