From e7eb50fe25ef6462c6dca46beb88bc3c8dc86abc Mon Sep 17 00:00:00 2001 From: Joao Lima Date: Thu, 9 Oct 2025 18:23:44 +0100 Subject: [PATCH] openocd: add dmem support to am64xx and j784s4 platforms Platform support patches: - Add SWD native configuration files for AM64x and J784s4 boards - Configure DMEM access parameters in ti_k3.cfg for direct memory operations - Set up DAPBUS debugger and emulated AP descriptions Signed-off-by: Joao Lima Signed-off-by: Khem Raj --- ...wd_native.cfg-Add-support-for-direct.patch | 77 +++++++++++++++++++ ....cfg-Add-support-for-direct-memory-a.patch | 65 ++++++++++++++++ .../recipes-devtools/openocd/openocd_git.bb | 2 + 3 files changed, 144 insertions(+) create mode 100644 meta-oe/recipes-devtools/openocd/openocd/0001-tcl-board-ti_-_swd_native.cfg-Add-support-for-direct.patch create mode 100644 meta-oe/recipes-devtools/openocd/openocd/0002-tcl-target-ti_k3.cfg-Add-support-for-direct-memory-a.patch diff --git a/meta-oe/recipes-devtools/openocd/openocd/0001-tcl-board-ti_-_swd_native.cfg-Add-support-for-direct.patch b/meta-oe/recipes-devtools/openocd/openocd/0001-tcl-board-ti_-_swd_native.cfg-Add-support-for-direct.patch new file mode 100644 index 0000000000..8a3b72321f --- /dev/null +++ b/meta-oe/recipes-devtools/openocd/openocd/0001-tcl-board-ti_-_swd_native.cfg-Add-support-for-direct.patch @@ -0,0 +1,77 @@ +From 5c55d79ecfecc4a1b5a5ebcf649227ca1e1bf38e Mon Sep 17 00:00:00 2001 +From: Joao Lima +Date: Tue, 30 Sep 2025 12:13:04 +0000 +Subject: [PATCH 1/2] tcl/board/ti_*_swd_native.cfg: Add support for direct + memory access via SW + +Add support for SWD emulation as a transport method for +direct memory operations of boards TI AM64x and TI J784s4 + +Upstream-Status: Submitted [http://openocd.zylin.com/#/c/9020/] + +Change-Id: I17fe9b2bef5c58886625bfdb88d92645ba4d7da7 +Signed-off-by: Joao Lima +--- + tcl/board/ti_am64xx_swd_native.cfg | 23 +++++++++++++++++++++++ + tcl/board/ti_j784s4_swd_native.cfg | 22 ++++++++++++++++++++++ + 2 files changed, 45 insertions(+) + create mode 100644 tcl/board/ti_am64xx_swd_native.cfg + create mode 100644 tcl/board/ti_j784s4_swd_native.cfg + +diff --git a/tcl/board/ti_am64xx_swd_native.cfg b/tcl/board/ti_am64xx_swd_native.cfg +new file mode 100644 +index 000000000..d3727149e +--- /dev/null ++++ b/tcl/board/ti_am64xx_swd_native.cfg +@@ -0,0 +1,23 @@ ++# SPDX-License-Identifier: GPL-2.0-or-later ++# Copyright (C) 2022-2023 Texas Instruments Incorporated - http://www.ti.com/ ++# ++# Texas Instruments am642 ++# Link: https://www.ti.com/product/AM642 ++# ++# This configuration file is used as a self hosted debug configuration that ++# works on every AM642 platform based on firewall configuration permitted ++# in the system. ++# ++# In this system openOCD runs on one of the CPUs inside AM625 and provides ++# network ports that can then be used to debug the microcontrollers on the ++# SoC - either self hosted IDE OR remotely. ++ ++# We are using dmem, which uses dapdirect_swd transport ++adapter driver dmem ++transport select swd ++ ++if { ![info exists SOC] } { ++ set SOC am642 ++} ++ ++source [find target/ti_k3.cfg] +diff --git a/tcl/board/ti_j784s4_swd_native.cfg b/tcl/board/ti_j784s4_swd_native.cfg +new file mode 100644 +index 000000000..13b2ac3b8 +--- /dev/null ++++ b/tcl/board/ti_j784s4_swd_native.cfg +@@ -0,0 +1,22 @@ ++# SPDX-License-Identifier: GPL-2.0-or-later ++# Copyright (C) 2022-2023 Texas Instruments Incorporated - http://www.ti.com/ ++# ++# Texas Instruments TDA4VM/J721E ++# Link: https://www.ti.com/product/TDA4VM ++# ++# This configuration file is used as a self hosted debug configuration that ++# works on every TDA4VM platform based on firewall configuration permitted ++# in the system. ++# ++# In this system openOCD runs on one of the CPUs inside TDA4VM and provides ++# network ports that can then be used to debug the microcontrollers on the ++# SoC - either self hosted IDE OR remotely. ++ ++# We are using dmem, which uses dapdirect_swd transport ++adapter driver dmem ++transport select swd ++ ++if { ![info exists SOC] } { ++ set SOC j784s4 ++} ++source [find target/ti_k3.cfg] diff --git a/meta-oe/recipes-devtools/openocd/openocd/0002-tcl-target-ti_k3.cfg-Add-support-for-direct-memory-a.patch b/meta-oe/recipes-devtools/openocd/openocd/0002-tcl-target-ti_k3.cfg-Add-support-for-direct-memory-a.patch new file mode 100644 index 0000000000..c879696ef5 --- /dev/null +++ b/meta-oe/recipes-devtools/openocd/openocd/0002-tcl-target-ti_k3.cfg-Add-support-for-direct-memory-a.patch @@ -0,0 +1,65 @@ +From 39bc4461642eaaf993d0a6cf772d51cdde8c0ae8 Mon Sep 17 00:00:00 2001 +From: Joao Lima +Date: Tue, 30 Sep 2025 12:13:30 +0000 +Subject: [PATCH 2/2] tcl/target/ti_k3.cfg: Add support for direct memory + access via SWD + +Adds support for direct memory access via SWD emulation for AM64x and +J784s4 boards, configuring addresses and parameters required for +direct memory operations. + +Upstream-Status: Submitted [http://openocd.zylin.com/#/c/9021/] + +Change-Id: Iebc16612b3990b2ef19ddc4143b66ab1bcbfe0f3 +Signed-off-by: Joao Lima +--- + tcl/target/ti_k3.cfg | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +diff --git a/tcl/target/ti_k3.cfg b/tcl/target/ti_k3.cfg +index 0dee74e5e..6b0ac2e52 100644 +--- a/tcl/target/ti_k3.cfg ++++ b/tcl/target/ti_k3.cfg +@@ -176,6 +176,16 @@ switch $_soc { + # Uses the same JTAG ID + set _armv8_cores 0 + } ++ ++ # Setup DMEM access descriptions ++ # DAPBUS (Debugger) description ++ set _dmem_base_address 0x740002000 ++ set _dmem_ap_address_offset 0x100 ++ set _dmem_max_aps 10 ++ # Emulated AP description ++ set _dmem_emu_base_address 0x760000000 ++ set _dmem_emu_base_address_map_to 0x1d500000 ++ set _dmem_emu_ap_list 1 + } + am625 { + set _K3_DAP_TAPID 0x0bb7e02f +@@ -333,7 +343,7 @@ switch $_soc { + set ARMV8_CTIBASE {0x90420000 0x90520000 0x90620000 0x90720000 + 0x90820000 0x90920000 0x90a20000 0x90b20000} + +- # J721s2 has 4 clusters of 2 R5 cores each. ++ # J784s4 has 4 clusters of 2 R5 cores each. + set _r5_cores 8 + set R5_DBGBASE {0x9d010000 0x9d012000 + 0x9d410000 0x9d412000 +@@ -348,6 +358,16 @@ switch $_soc { + main1_r5.0 main1_r5.1 + main2_r5.0 main2_r5.1} + ++ # Setup DMEM access descriptions ++ # DAPBUS (Debugger) description ++ set _dmem_base_address 0x4c40002000 ++ set _dmem_ap_address_offset 0x100 ++ set _dmem_max_aps 8 ++ # Emulated AP description ++ set _dmem_emu_base_address 0x4c60000000 ++ set _dmem_emu_base_address_map_to 0x1d600000 ++ set _dmem_emu_ap_list 1 ++ + # sysctrl CTI base + set CM3_CTIBASE {0x20001000} + # Sysctrl power-ap unlock offsets diff --git a/meta-oe/recipes-devtools/openocd/openocd_git.bb b/meta-oe/recipes-devtools/openocd/openocd_git.bb index eb6ca888ab..b0c509988c 100644 --- a/meta-oe/recipes-devtools/openocd/openocd_git.bb +++ b/meta-oe/recipes-devtools/openocd/openocd_git.bb @@ -9,6 +9,8 @@ SRC_URI = " \ git://repo.or.cz/r/git2cl.git;protocol=http;destsuffix=tools/git2cl;name=git2cl;branch=master \ git://github.com/msteveb/jimtcl.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/jimtcl;name=jimtcl;branch=master \ git://repo.or.cz/r/libjaylink.git;protocol=http;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/src/jtag/drivers/libjaylink;name=libjaylink;branch=master \ + file://0001-tcl-board-ti_-_swd_native.cfg-Add-support-for-direct.patch \ + file://0002-tcl-target-ti_k3.cfg-Add-support-for-direct-memory-a.patch \ " SRCREV_FORMAT = "openocd"