2022-06-12 16:42:27 -05:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
2011-01-24 01:06:48 -06:00
|
|
|
# OMAP4430
|
|
|
|
|
|
|
|
if { [info exists CHIPNAME] } {
|
|
|
|
set _CHIPNAME $CHIPNAME
|
|
|
|
} else {
|
|
|
|
set _CHIPNAME omap4430
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Although the OMAP4430 supposedly has an ICEpick-D, only the
|
|
|
|
# ICEpick-C router commands seem to work.
|
|
|
|
# See http://processors.wiki.ti.com/index.php/ICEPICK
|
|
|
|
source [find target/icepick.cfg]
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# A9 DAP
|
|
|
|
#
|
2011-10-29 16:32:17 -05:00
|
|
|
if { [info exists DAP_TAPID] } {
|
2011-01-24 01:06:48 -06:00
|
|
|
set _DAP_TAPID $DAP_TAPID
|
|
|
|
} else {
|
|
|
|
set _DAP_TAPID 0x3BA00477
|
|
|
|
}
|
|
|
|
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf \
|
2011-01-24 01:06:48 -06:00
|
|
|
-expected-id $_DAP_TAPID -disable
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag configure $_CHIPNAME.cpu -event tap-enable \
|
2011-01-24 01:06:48 -06:00
|
|
|
"icepick_c_tapenable $_CHIPNAME.jrc 9"
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# M3 DAPs, one per core
|
|
|
|
#
|
2011-10-29 16:32:17 -05:00
|
|
|
if { [info exists M3_DAP_TAPID] } {
|
2011-01-24 01:06:48 -06:00
|
|
|
set _M3_DAP_TAPID $M3_DAP_TAPID
|
|
|
|
} else {
|
|
|
|
set _M3_DAP_TAPID 0x4BA00477
|
|
|
|
}
|
|
|
|
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag newtap $_CHIPNAME m31 -irlen 4 -ircapture 0x1 -irmask 0xf \
|
2011-01-24 01:06:48 -06:00
|
|
|
-expected-id $_M3_DAP_TAPID -disable
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag configure $_CHIPNAME.m31 -event tap-enable \
|
2011-01-24 01:06:48 -06:00
|
|
|
"icepick_c_tapenable $_CHIPNAME.jrc 5"
|
|
|
|
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag newtap $_CHIPNAME m30 -irlen 4 -ircapture 0x1 -irmask 0xf \
|
2011-01-24 01:06:48 -06:00
|
|
|
-expected-id $_M3_DAP_TAPID -disable
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag configure $_CHIPNAME.m30 -event tap-enable \
|
2011-01-24 01:06:48 -06:00
|
|
|
"icepick_c_tapenable $_CHIPNAME.jrc 4"
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# ICEpick-D JRC (JTAG route controller)
|
|
|
|
#
|
2011-10-29 16:32:17 -05:00
|
|
|
if { [info exists JRC_TAPID] } {
|
2011-01-24 01:06:48 -06:00
|
|
|
set _JRC_TAPID $JRC_TAPID
|
|
|
|
} else {
|
2011-02-07 16:47:15 -06:00
|
|
|
set _JRC_TAPID 0x3b95c02f
|
|
|
|
set _JRC_TAPID2 0x1b85202f
|
2011-01-24 01:06:48 -06:00
|
|
|
}
|
|
|
|
|
2011-02-07 16:47:15 -06:00
|
|
|
# PandaBoard REV EA1 (PEAP platforms)
|
2011-10-29 16:32:17 -05:00
|
|
|
if { [info exists JRC_TAPID2] } {
|
2011-02-07 16:47:15 -06:00
|
|
|
set _JRC_TAPID2 $JRC_TAPID2
|
|
|
|
} else {
|
|
|
|
set _JRC_TAPID2 0x1b85202f
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-01-24 01:06:48 -06:00
|
|
|
jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f \
|
2011-10-29 16:32:17 -05:00
|
|
|
-expected-id $_JRC_TAPID -expected-id $_JRC_TAPID2
|
2011-01-24 01:06:48 -06:00
|
|
|
|
|
|
|
# Required by ICEpick to power-up the debug domain
|
|
|
|
jtag configure $_CHIPNAME.jrc -event post-reset "runtest 200"
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# GDB target: Cortex-A9, using DAP
|
|
|
|
#
|
|
|
|
# The debugger can connect to either core of the A9, but currently
|
|
|
|
# not both simultaneously. Change -coreid to 1 to connect to the
|
|
|
|
# second core.
|
|
|
|
#
|
|
|
|
set _TARGETNAME $_CHIPNAME.cpu
|
2011-04-02 02:00:01 -05:00
|
|
|
|
|
|
|
# APB DBGBASE reads 0x80040000, but this points to an empty ROM table.
|
|
|
|
# 0x80000000 is cpu0 coresight region
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# CORTEX_A8_PADDRDBG_CPU_SHIFT 13
|
|
|
|
# 0x80000000 | (coreid << CORTEX_A8_PADDRDBG_CPU_SHIFT)
|
|
|
|
|
|
|
|
set _coreid 0
|
2021-04-09 18:23:57 -05:00
|
|
|
set _dbgbase [expr {0x80000000 | ($_coreid << 13)}]
|
2011-04-02 02:00:01 -05:00
|
|
|
echo "Using dbgbase = [format 0x%x $_dbgbase]"
|
2018-03-23 15:17:29 -05:00
|
|
|
|
|
|
|
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
|
|
|
|
target create $_TARGETNAME cortex_a -dap $_CHIPNAME.dap \
|
2011-04-02 02:00:01 -05:00
|
|
|
-coreid 0 -dbgbase $_dbgbase
|
2011-01-24 01:06:48 -06:00
|
|
|
|
|
|
|
# SRAM: 56KiB at 0x4030.0000
|
|
|
|
$_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x1000
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# M3 targets, separate TAP/DAP for each core
|
|
|
|
#
|
2018-03-23 15:17:29 -05:00
|
|
|
dap create $_CHIPNAME.m30_dap -chain-position $_CHIPNAME.m30
|
|
|
|
dap create $_CHIPNAME.m31_dap -chain-position $_CHIPNAME.m31
|
|
|
|
target create $_CHIPNAME.m30 cortex_m -dap $_CHIPNAME.m30_dap
|
|
|
|
target create $_CHIPNAME.m31 cortex_m -dap $_CHIPNAME.m31_dap
|
2011-01-24 01:06:48 -06:00
|
|
|
|
|
|
|
|
|
|
|
# Once the JRC is up, enable our TAPs
|
|
|
|
jtag configure $_CHIPNAME.jrc -event setup "
|
2018-03-23 15:17:29 -05:00
|
|
|
jtag tapenable $_CHIPNAME.cpu
|
|
|
|
jtag tapenable $_CHIPNAME.m30
|
|
|
|
jtag tapenable $_CHIPNAME.m31
|
2011-01-24 01:06:48 -06:00
|
|
|
"
|
|
|
|
|
|
|
|
# Assume SRST is unavailable (e.g. TI-14 JTAG), so we must assert reset
|
|
|
|
# ourselves using PRM_RSTCTRL. 1 is a warm reset, 2 a cold reset.
|
|
|
|
set PRM_RSTCTRL 0x4A307B00
|
2011-02-02 01:16:26 -06:00
|
|
|
$_TARGETNAME configure -event reset-assert "$_TARGETNAME mww phys $PRM_RSTCTRL 0x1"
|
|
|
|
$_CHIPNAME.m30 configure -event reset-assert { }
|
|
|
|
$_CHIPNAME.m31 configure -event reset-assert { }
|
2011-01-24 01:06:48 -06:00
|
|
|
|
2011-03-09 13:39:55 -06:00
|
|
|
# Soft breakpoints don't currently work due to broken cache handling
|
|
|
|
gdb_breakpoint_override hard
|