4d7c48fb80
On CC32xx family of devices, sysrequest is disabled, and vectreset is blocked by the boot loader (stops in a while(1) statement). srst reset can leave the target in a state that prevents debug. This change enables using vectreset on SF variants by moving the PC to the start of the user application in internal flash. This allows for a more reliable reset, but with two caveats: 1) This only works for the SF variant with internal flash. 2) This only resets the CPU and not any peripherals. Tested on CC3220SF rev B Launchpad in both SWD and JTAG modes. Confirmed proper behavior of reset, reset init, reset halt, and reset run commands. Update: reworked per comment in code review. Re-tested with CC3220SF Launchpad as both CC3220SF and as CC32xx board to confirm reset behavior as expected. Update: Added adapter srst delay 1100 line to the CC3200 LaunchXL configuration file. Change-Id: Ibc042d785c846c2223ae55b8f2410b75ed2df354 Signed-off-by: Edward Fewell <efewell@ti.com> Reviewed-on: http://openocd.zylin.com/5489 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
62 lines
1.4 KiB
INI
62 lines
1.4 KiB
INI
#
|
|
# Texas Instruments CC32xx - ARM Cortex-M4
|
|
#
|
|
# http://www.ti.com/product/CC3200
|
|
# http://www.ti.com/product/CC3220
|
|
#
|
|
|
|
source [find target/swj-dp.tcl]
|
|
source [find target/icepick.cfg]
|
|
|
|
if { [info exists CHIPNAME] } {
|
|
set _CHIPNAME $CHIPNAME
|
|
} else {
|
|
set _CHIPNAME cc32xx
|
|
}
|
|
|
|
#
|
|
# Main DAP
|
|
#
|
|
if { [info exists DAP_TAPID] } {
|
|
set _DAP_TAPID $DAP_TAPID
|
|
} else {
|
|
if {[using_jtag]} {
|
|
set _DAP_TAPID 0x4BA00477
|
|
} else {
|
|
set _DAP_TAPID 0x2BA01477
|
|
}
|
|
}
|
|
|
|
if {[using_jtag]} {
|
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -disable
|
|
jtag configure $_CHIPNAME.cpu -event tap-enable "icepick_c_tapenable $_CHIPNAME.jrc 0"
|
|
} else {
|
|
swj_newdap $_CHIPNAME cpu -expected-id $_DAP_TAPID
|
|
}
|
|
|
|
#
|
|
# ICEpick-C (JTAG route controller)
|
|
#
|
|
if { [info exists JRC_TAPID] } {
|
|
set _JRC_TAPID $JRC_TAPID
|
|
} else {
|
|
set _JRC_TAPID 0x0B97C02F
|
|
}
|
|
|
|
if {[using_jtag]} {
|
|
jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID -ignore-version
|
|
jtag configure $_CHIPNAME.jrc -event setup "jtag tapenable $_CHIPNAME.cpu"
|
|
}
|
|
|
|
set _TARGETNAME $_CHIPNAME.cpu
|
|
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
|
|
target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap
|
|
|
|
if { [info exists WORKAREASIZE] } {
|
|
set _WORKAREASIZE $WORKAREASIZE
|
|
} else {
|
|
set _WORKAREASIZE 0x2000
|
|
}
|
|
|
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|