AnsweredAssumed Answered

Using openocd to debug smp linux on sabre sdp

Question asked by nagla dhana on Feb 12, 2017
Latest reply on Feb 13, 2017 by igorpadykov

Hi,

 

I am trying to setup jtag for debugging smp linux on sabre sdp using olimex-jtag-tiny.

 

Basic connection is working with imx6.cfg :

 

~/openocd/openocd-0.10.0$ openocd -f tcl/interface/ftdi/olimex-jtag-tiny.cfg -f tcl/target/imx6.cfg
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
Warn : imx6.sdma: nonstandard IR value
adapter speed: 1000 kHz
Info : clock speed 1000 kHz
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: imx6.dap: IR capture error; saw 0x0f not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : imx6.cpu.0: hardware has 6 breakpoints, 4 watchpoints

 

 

I'm not sure with only imx6.cfg I'll be able to debug linux on other cores. Reading through openocd configuration help and various forum posts, it looks like I need to modify imx6.cfg file to add more target cores. So I have modi fied the imx6.cfg as below:

 

# Freescale i.MX6 series single/dual/quad core processor

if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME imx6
}

# CoreSight Debug Access Port
if { [info exists DAP_TAPID] } {
set _DAP_TAPID $DAP_TAPID
} else {
set _DAP_TAPID 0x4ba00477
}

jtag newtap $_CHIPNAME dap -irlen 4 -ircapture 0x01 -irmask 0x0f \
-expected-id $_DAP_TAPID

# SDMA / no IDCODE
jtag newtap $_CHIPNAME sdma -irlen 4 -ircapture 0x00 -irmask 0x0f

# System JTAG Controller
if { [info exists SJC_TAPID] } {
set _SJC_TAPID $SJC_TAPID
} else {
set _SJC_TAPID 0x0191c01d
}
set _SJC_TAPID2 0x2191c01d
set _SJC_TAPID3 0x2191e01d
set _SJC_TAPID4 0x1191c01d

jtag newtap $_CHIPNAME sjc -irlen 5 -ircapture 0x01 -irmask 0x1f \
-expected-id $_SJC_TAPID -expected-id $_SJC_TAPID2 \
-expected-id $_SJC_TAPID3 -expected-id $_SJC_TAPID4
# GDB target: Cortex-A9, using DAP, configuring only one core
# Base addresses of cores:
# core 0 - 0x82150000
# core 1 - 0x82152000
# core 2 - 0x82154000
# core 3 - 0x82156000
set _TARGETNAME_1 $_CHIPNAME.cpu.0
target create $_TARGETNAME_1 cortex_a -chain-position $_CHIPNAME.dap \
-coreid 0 -dbgbase 0x82150000
set _TARGETNAME_2 $_CHIPNAME.cpu.1
target create imx6.cpu.1 cortex_a -chain-position $_CHIPNAME.dap \
-coreid 1 -dbgbase 0x82152000
set _TARGETNAME_3 $_CHIPNAME.cpu.2
target create $_TARGETNAME_3 cortex_a -chain-position $_CHIPNAME.dap \
-coreid 2 -dbgbase 0x82154000
set _TARGETNAME_4 $_CHIPNAME.cpu.3
target create $_TARGETNAME_4 cortex_a -chain-position $_CHIPNAME.dap \
-coreid 3 -dbgbase 0x82156000

target smp $_TARGETNAME_1 $_TARGETNAME_2 $_TARGETNAME_3 $_TARGETNAME_4
#
# some TCK cycles are required to activate the DEBUG power domain
jtag configure $_CHIPNAME.sjc -event post-reset "runtest 100"

proc imx6_dbginit {target} {
# General Cortex-A8/A9 debug initialisation
cortex_a dbginit
}

# Slow speed to be sure it will work
adapter_khz 1000
$_TARGETNAME_1 configure -event reset-start { adapter_khz 1000 }

$_TARGETNAME_1 configure -event reset-assert-post "imx6_dbginit $_TARGETNAME_1"
$_TARGETNAME_1 configure -event gdb-attach { halt }

 

 

But now with this configuration I am getting 

 

 

 

~/openocd/openocd-0.10.0$ openocd -f tcl/interface/ftdi/olimex-jtag-tiny.cfg -f tcl/target/imx6_understood.cfg
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
Warn : imx6.sdma: nonstandard IR value
adapter speed: 1000 kHz
Info : clock speed 1000 kHz
Info : JTAG tap: imx6.dap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : TAP imx6.sdma does not have IDCODE
Info : JTAG tap: imx6.sjc tap/device found: 0x2191c01d (mfg: 0x00e (Freescale (Motorola)), part: 0x191c, ver: 0x2)
Info : imx6.cpu.0: hardware has 6 breakpoints, 4 watchpoints
Error: Timeout during WAIT recovery
Error: JTAG-DP STICKY ERROR
Polling target imx6.cpu.0 failed, trying to reexamine
Error: JTAG-DP STICKY ERROR
Error: Could not initialize the APB-AP
Examination failed, GDB will be halted. Polling again in 100ms
Error: JTAG-DP STICKY ERROR
Polling target imx6.cpu.0 failed, trying to reexamine
Error: JTAG-DP STICKY ERROR
Error: Could not initialize the APB-AP
Examination failed, GDB will be halted. Polling again in 300ms
Error: JTAG-DP STICKY ERROR
Polling target imx6.cpu.0 failed, trying to reexamine
Error: JTAG-DP STICKY ERROR
Error: Could not initialize the APB-AP
Examination failed, GDB will be halted. Polling again in 700ms
Error: JTAG-DP STICKY ERROR
Polling target imx6.cpu.0 failed, trying to reexamine
Error: JTAG-DP STICKY ERROR
Error: Could not initialize the APB-AP
Examination failed, GDB will be halted. Polling again in 1500ms

 

Has anyone been able to get openocd for multiple cores working on imx6. Any board config files or any help/pointers 

will be deeply appreciated :-)

Outcomes