Skip to content

Commit 6ca9915

Browse files
grasci-armbrondani
andauthored
[cbuild-run] Fix effective datapatch handling (#2075)
Co-authored-by: Daniel Brondani <[email protected]>
1 parent 1ba3895 commit 6ca9915

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

test/packs/ARM/RteTest_DFP/0.2.0/ARM.RteTest_DFP.pdsc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
__var TraceD0_Pin = 0x00040003; // PE3
3838
__var TraceD1_Pin = 0x00040004; // PE4
3939
</debugvars>
40+
<debug>
41+
<datapatch address="0x1000FFFF" value="0xCC" info="Family level datapatch"/>
42+
</debug>
4043
<sequences>
4144
<!-- Override for Pre-Defined Sequences -->
4245
<sequence name="DebugDeviceUnlock">

tools/projmgr/src/ProjMgrRunDebug.cpp

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -374,23 +374,24 @@ void ProjMgrRunDebug::CollectDebugTopology(const ContextItem& context, const vec
374374

375375
// datapatches
376376
for (const auto& [debug, _] : debugs) {
377-
Collection<RteItem*> datapatches;
378-
debug->GetChildrenByTag("datapatch", datapatches);
379-
for (const auto& datapatch : datapatches) {
380-
DatapatchType patch;
381-
patch.address = datapatch->GetAttributeAsULL("address");
382-
patch.value = datapatch->GetAttributeAsULL("value");
383-
if (datapatch->HasAttribute("mask")) {
384-
patch.mask = datapatch->GetAttributeAsULL("mask");
385-
}
386-
patch.type = datapatch->GetAttribute("type");
387-
patch.info = datapatch->GetAttribute("info");
388-
if (datapatch->HasAttribute("__apid")) {
389-
datapatchById[datapatch->GetAttributeAsInt("__apid")].push_back(patch);
390-
} else {
391-
const auto& dp = datapatch->GetAttributeAsInt("__dp", defaultDp);
392-
const auto& apIndex = datapatch->GetAttributeAsInt("__ap", debug->GetAttributeAsInt("__ap", 0));
393-
datapatchByIndex[dp][apIndex].push_back(patch);
377+
const RteDevicePropertyGroup* properties = dynamic_cast<const RteDeviceDebug*>(debug);
378+
for (const auto& datapatch : properties->GetEffectiveContent()) {
379+
if (datapatch->GetTag() == "datapatch") {
380+
DatapatchType patch;
381+
patch.address = datapatch->GetAttributeAsULL("address");
382+
patch.value = datapatch->GetAttributeAsULL("value");
383+
if (datapatch->HasAttribute("mask")) {
384+
patch.mask = datapatch->GetAttributeAsULL("mask");
385+
}
386+
patch.type = datapatch->GetAttribute("type");
387+
patch.info = datapatch->GetAttribute("info");
388+
if (datapatch->HasAttribute("__apid")) {
389+
datapatchById[datapatch->GetAttributeAsInt("__apid")].push_back(patch);
390+
} else {
391+
const auto& dp = datapatch->GetAttributeAsInt("__dp", defaultDp);
392+
const auto& apIndex = datapatch->GetAttributeAsInt("__ap", debug->GetAttributeAsInt("__ap", 0));
393+
datapatchByIndex[dp][apIndex].push_back(patch);
394+
}
394395
}
395396
}
396397
}

tools/projmgr/test/data/TestRunDebug/ref/run-debug+TestHW3.cbuild-run.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ cbuild-run:
146146
- address: 0xE0040FF0
147147
value: 0x0000000D
148148
info: CIDR0
149+
- address: 0x1000FFFF
150+
value: 0x000000CC
151+
info: Family level datapatch
149152
- dpid: 1
150153
accessports:
151154
- apid: 1

0 commit comments

Comments
 (0)