mirror of
https://git.code.sf.net/p/openocd/code
synced 2024-11-22 03:46:27 +00:00
52fbb85d2e
Add Ampere Altra ("Quicksilver") and Ampere Altra Max ("Mystique") target/board configuration files. The target configuration file supports silicon and emulation. The board configuration files support 1 and 2 socket platforms. Tested on Ampere emulation and silicon Change-Id: I036c798a50624e30ab51ccd2895b6f60c40be096 Signed-off-by: Daniel Goehring <dgoehrin@os.amperecomputing.com> Reviewed-on: https://review.openocd.org/c/openocd/+/5591 Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Tested-by: jenkins
165 lines
3.8 KiB
INI
165 lines
3.8 KiB
INI
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
# OpenOCD Board Configuration for Ampere Altra ("Quicksilver") and
|
|
# Ampere Altra Max ("Mystique") processors
|
|
#
|
|
# Copyright (c) 2019-2021, Ampere Computing LLC
|
|
|
|
# Argument Description
|
|
#
|
|
# JTAGFREQ
|
|
# Set the JTAG clock frequency
|
|
# Syntax: -c "set JTAGFREQ {freq_in_khz}"
|
|
#
|
|
# SYSNAME
|
|
# Set the system name
|
|
# If not specified, defaults to "qs"
|
|
# Syntax: -c "set SYSNAME {qs}"
|
|
#
|
|
# Life-Cycle State (LCS)
|
|
# If not specified, defaults to "Secure LCS"
|
|
# LCS=0, "Secure LCS"
|
|
# LCS=1, "Chip Manufacturing LCS"
|
|
# Syntax: -c "set LCS {0}"
|
|
# Syntax: -c "set LCS {1}"
|
|
#
|
|
# CORELIST_S0, CORELIST_S1
|
|
# Specify available physical cores by number
|
|
# Example syntax to connect to physical cores 16 and 17 for S0 and S1
|
|
# Syntax: -c "set CORELIST_S0 {16 17}"
|
|
# Syntax: -c "set CORELIST_S1 {16 17}"
|
|
#
|
|
# COREMASK_S0_LO, COREMASK_S1_LO
|
|
# Specify available physical cores 0-63 by mask
|
|
# Example syntax to connect to physical cores 16 and 17 for S0 and S1
|
|
# Syntax: -c "set COREMASK_S0_LO {0x0000000000030000}"
|
|
# Syntax: -c "set COREMASK_S1_LO {0x0000000000030000}"
|
|
#
|
|
# COREMASK_S0_HI, COREMASK_S1_HI
|
|
# Specify available physical cores 64 and above by mask
|
|
# Example syntax to connect to physical cores 94 and 95 for S0 and S1
|
|
# Syntax: -c "set COREMASK_S0_HI {0x00000000C0000000}"
|
|
# Syntax: -c "set COREMASK_S1_HI {0x00000000C0000000}"
|
|
#
|
|
# SPLITSMP
|
|
# Group all ARMv8 cores per socket into individual SMP sessions
|
|
# If not specified, group ARMv8 cores from both sockets into one SMP session
|
|
# Syntax: -c "set SPLITSMP {}"
|
|
#
|
|
# PHYS_IDX
|
|
# Enable OpenOCD ARMv8 core target physical indexing
|
|
# If not specified, defaults to OpenOCD ARMv8 core target logical indexing
|
|
# Syntax: -c "set PHYS_IDX {}"
|
|
|
|
#
|
|
# Configure JTAG speed
|
|
#
|
|
|
|
if { [info exists JTAGFREQ] } {
|
|
adapter speed $JTAGFREQ
|
|
} else {
|
|
adapter speed 100
|
|
}
|
|
|
|
#
|
|
# Set the system name
|
|
#
|
|
|
|
if { [info exists SYSNAME] } {
|
|
set _SYSNAME $SYSNAME
|
|
} else {
|
|
set _SYSNAME qs
|
|
}
|
|
|
|
#
|
|
# Configure Board level SMP configuration if necessary
|
|
#
|
|
|
|
if { ![info exists SPLITSMP] } {
|
|
# Group dual chip into a single SMP configuration
|
|
set SMP_STR "target smp"
|
|
set CORE_INDEX_OFFSET 0
|
|
set DUAL_SOCKET_SMP_ENABLED ""
|
|
}
|
|
|
|
#
|
|
# Configure Resets
|
|
#
|
|
|
|
jtag_ntrst_delay 100
|
|
reset_config trst_only
|
|
|
|
#
|
|
# Configure Targets
|
|
#
|
|
|
|
if { [info exists CORELIST_S0] || [info exists COREMASK_S0_LO] || [info exists COREMASK_S0_HI] || \
|
|
[info exists CORELIST_S1] || [info exists COREMASK_S1_LO] || [info exists COREMASK_S1_HI] } {
|
|
set CHIPNAME ${_SYSNAME}1
|
|
if { [info exists CORELIST_S1] } {
|
|
set CORELIST $CORELIST_S1
|
|
} else {
|
|
if { [info exists COREMASK_S1_LO] } {
|
|
set COREMASK_LO $COREMASK_S1_LO
|
|
} else {
|
|
set COREMASK_LO 0x0
|
|
}
|
|
|
|
if { [info exists COREMASK_S1_HI] } {
|
|
set COREMASK_HI $COREMASK_S1_HI
|
|
} else {
|
|
set COREMASK_HI 0x0
|
|
}
|
|
}
|
|
source [find target/ampere_qs_mq.cfg]
|
|
|
|
if { [info exists DUAL_SOCKET_SMP_ENABLED] && [info exists PHYS_IDX]} {
|
|
if { [info exists MQ_ENABLE] } {
|
|
set CORE_INDEX_OFFSET 128
|
|
} else {
|
|
set CORE_INDEX_OFFSET 80
|
|
}
|
|
}
|
|
|
|
set CHIPNAME ${_SYSNAME}0
|
|
if { [info exists CORELIST_S0] } {
|
|
set CORELIST $CORELIST_S0
|
|
} else {
|
|
if { [info exists COREMASK_S0_LO] } {
|
|
set COREMASK_LO $COREMASK_S0_LO
|
|
} else {
|
|
set COREMASK_LO 0x0
|
|
}
|
|
|
|
if { [info exists COREMASK_S0_HI] } {
|
|
set COREMASK_HI $COREMASK_S0_HI
|
|
} else {
|
|
set COREMASK_HI 0x0
|
|
}
|
|
}
|
|
source [find target/ampere_qs_mq.cfg]
|
|
} else {
|
|
set CHIPNAME ${_SYSNAME}1
|
|
set COREMASK_LO 0x0
|
|
set COREMASK_HI 0x0
|
|
source [find target/ampere_qs_mq.cfg]
|
|
|
|
if { [info exists DUAL_SOCKET_SMP_ENABLED] && [info exists PHYS_IDX]} {
|
|
if { [info exists MQ_ENABLE] } {
|
|
set CORE_INDEX_OFFSET 128
|
|
} else {
|
|
set CORE_INDEX_OFFSET 80
|
|
}
|
|
}
|
|
|
|
set CHIPNAME ${_SYSNAME}0
|
|
set COREMASK_LO 0x1
|
|
set COREMASK_HI 0x0
|
|
source [find target/ampere_qs_mq.cfg]
|
|
}
|
|
|
|
if { [info exists DUAL_SOCKET_SMP_ENABLED] } {
|
|
# For dual socket SMP configuration, evaluate the string
|
|
eval $SMP_STR
|
|
}
|