| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # SPDX-License-Identifier: GPL-2.0-or-later
- #
- # OpenOCD Target Configuration for eMAG ARMv8 Processor
- #
- # Copyright (c) 2019-2021, Ampere Computing LLC
- #
- #
- # Configure defaults for target
- # Can be overriden in board configuration file
- #
- if { [info exists CHIPNAME] } {
- set _CHIPNAME $CHIPNAME
- } else {
- set _CHIPNAME emag
- }
- if { [info exists NUMCORES] } {
- set _NUMCORES $NUMCORES
- } else {
- set _NUMCORES 32
- }
- if { [info exists ENDIAN] } {
- set _ENDIAN $ENDIAN
- } else {
- set _ENDIAN little
- }
- if { [info exists CPUTAPID ] } {
- set _CPUTAPID $CPUTAPID
- } else {
- set _CPUTAPID 0x4BA00477
- }
- #
- # Configure JTAG TAP
- #
- jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x3 -expected-id $_CPUTAPID
- set _TAPNAME $_CHIPNAME.cpu
- set _DAPNAME ${_TAPNAME}_dap
- set _APNUM 1
- dap create $_DAPNAME -chain-position $_TAPNAME
- $_DAPNAME apsel $_APNUM
- # Create the DAP AP0 MEM-AP AHB-AP target
- target create AHB mem_ap -endian $_ENDIAN -dap $_DAPNAME -ap-num 0
- # Create the DAP AP1 MEM-AP APB-AP target
- target create APB mem_ap -endian $_ENDIAN -dap $_DAPNAME -ap-num 1
- #
- # Configure target CPUs
- #
- # Build string used to enable smp mode
- set _SMP_STR "target smp"
- for {set _i 0} {$_i < $_NUMCORES} {incr _i} {
- # Format a string to reference which CPU target to use
- set _TARGETNAME [format "${_TAPNAME}_%02d" $_i]
- # Create and configure Cross Trigger Interface (CTI) - required for halt and resume
- set _CTINAME $_TARGETNAME.cti
- cti create $_CTINAME -dap $_DAPNAME -ap-num $_APNUM -baseaddr [expr {0xFC020000 + ($_i << 20)}]
- # Create the target
- target create $_TARGETNAME aarch64 -endian $_ENDIAN -dap $_DAPNAME -ap-num $_APNUM -cti $_CTINAME -coreid $_i
- set _SMP_STR "$_SMP_STR $_TARGETNAME"
- # Clear CTI output/input enables that are not configured by OpenOCD for aarch64
- $_TARGETNAME configure -event examine-start [subst {
- $_CTINAME write INEN0 0x00000000
- $_CTINAME write INEN1 0x00000000
- $_CTINAME write INEN2 0x00000000
- $_CTINAME write INEN3 0x00000000
- $_CTINAME write INEN4 0x00000000
- $_CTINAME write INEN5 0x00000000
- $_CTINAME write INEN6 0x00000000
- $_CTINAME write INEN7 0x00000000
- $_CTINAME write INEN8 0x00000000
- $_CTINAME write OUTEN2 0x00000000
- $_CTINAME write OUTEN3 0x00000000
- $_CTINAME write OUTEN4 0x00000000
- $_CTINAME write OUTEN5 0x00000000
- $_CTINAME write OUTEN6 0x00000000
- $_CTINAME write OUTEN7 0x00000000
- $_CTINAME write OUTEN8 0x00000000
- }]
- # Enable OpenOCD HWTHREAD RTOS feature for GDB thread (CPU) selection support
- # This feature presents CPU cores ("hardware threads") in an SMP system as threads to GDB
- $_TARGETNAME configure -rtos hwthread
- }
- eval $_SMP_STR
|