From 8503cc22d6700512a83a4935889ec35867533a3e Mon Sep 17 00:00:00 2001 From: Daniel Brondani Date: Fri, 9 May 2025 17:29:31 +0200 Subject: [PATCH] [cbuild-run] Fix effective `datapatch` handling --- .../RteTest_DFP/0.2.0/ARM.RteTest_DFP.pdsc | 3 ++ tools/projmgr/src/ProjMgrRunDebug.cpp | 35 ++++++++++--------- .../ref/run-debug+TestHW3.cbuild-run.yml | 3 ++ 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/test/packs/ARM/RteTest_DFP/0.2.0/ARM.RteTest_DFP.pdsc b/test/packs/ARM/RteTest_DFP/0.2.0/ARM.RteTest_DFP.pdsc index 8d54fe6af..3e9fef067 100644 --- a/test/packs/ARM/RteTest_DFP/0.2.0/ARM.RteTest_DFP.pdsc +++ b/test/packs/ARM/RteTest_DFP/0.2.0/ARM.RteTest_DFP.pdsc @@ -37,6 +37,9 @@ __var TraceD0_Pin = 0x00040003; // PE3 __var TraceD1_Pin = 0x00040004; // PE4 + + + diff --git a/tools/projmgr/src/ProjMgrRunDebug.cpp b/tools/projmgr/src/ProjMgrRunDebug.cpp index 0543a2bdc..09b22529b 100644 --- a/tools/projmgr/src/ProjMgrRunDebug.cpp +++ b/tools/projmgr/src/ProjMgrRunDebug.cpp @@ -374,23 +374,24 @@ void ProjMgrRunDebug::CollectDebugTopology(const ContextItem& context, const vec // datapatches for (const auto& [debug, _] : debugs) { - Collection datapatches; - debug->GetChildrenByTag("datapatch", datapatches); - for (const auto& datapatch : datapatches) { - DatapatchType patch; - patch.address = datapatch->GetAttributeAsULL("address"); - patch.value = datapatch->GetAttributeAsULL("value"); - if (datapatch->HasAttribute("mask")) { - patch.mask = datapatch->GetAttributeAsULL("mask"); - } - patch.type = datapatch->GetAttribute("type"); - patch.info = datapatch->GetAttribute("info"); - if (datapatch->HasAttribute("__apid")) { - datapatchById[datapatch->GetAttributeAsInt("__apid")].push_back(patch); - } else { - const auto& dp = datapatch->GetAttributeAsInt("__dp", defaultDp); - const auto& apIndex = datapatch->GetAttributeAsInt("__ap", debug->GetAttributeAsInt("__ap", 0)); - datapatchByIndex[dp][apIndex].push_back(patch); + const RteDevicePropertyGroup* properties = dynamic_cast(debug); + for (const auto& datapatch : properties->GetEffectiveContent()) { + if (datapatch->GetTag() == "datapatch") { + DatapatchType patch; + patch.address = datapatch->GetAttributeAsULL("address"); + patch.value = datapatch->GetAttributeAsULL("value"); + if (datapatch->HasAttribute("mask")) { + patch.mask = datapatch->GetAttributeAsULL("mask"); + } + patch.type = datapatch->GetAttribute("type"); + patch.info = datapatch->GetAttribute("info"); + if (datapatch->HasAttribute("__apid")) { + datapatchById[datapatch->GetAttributeAsInt("__apid")].push_back(patch); + } else { + const auto& dp = datapatch->GetAttributeAsInt("__dp", defaultDp); + const auto& apIndex = datapatch->GetAttributeAsInt("__ap", debug->GetAttributeAsInt("__ap", 0)); + datapatchByIndex[dp][apIndex].push_back(patch); + } } } } diff --git a/tools/projmgr/test/data/TestRunDebug/ref/run-debug+TestHW3.cbuild-run.yml b/tools/projmgr/test/data/TestRunDebug/ref/run-debug+TestHW3.cbuild-run.yml index 81aaa28db..3087d480f 100644 --- a/tools/projmgr/test/data/TestRunDebug/ref/run-debug+TestHW3.cbuild-run.yml +++ b/tools/projmgr/test/data/TestRunDebug/ref/run-debug+TestHW3.cbuild-run.yml @@ -146,6 +146,9 @@ cbuild-run: - address: 0xE0040FF0 value: 0x0000000D info: CIDR0 + - address: 0x1000FFFF + value: 0x000000CC + info: Family level datapatch - dpid: 1 accessports: - apid: 1