winIDEA SDK
Loading...
Searching...
No Matches
test_multi_core_session.py
# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
#
# (c) TASKING Germany GmbH, 2023
import isystem.connect as ic
winidea_id = ''
def dump_topology_CoreIndexes(strIndent,CoreIndexes):
print(strIndent, 'CoreIndexes:', end='')
for coreIndex in CoreIndexes:
print(strIndent, coreIndex, end=',')
print()
def dump_topology_CoreBinding(strIndent, sessionTopology_CoreBindings):
for sessionTopology_CoreBinding in sessionTopology_CoreBindings:
print(strIndent, 'Name:', sessionTopology_CoreBinding.name())
dump_topology_CoreIndexes(strIndent + ' ', sessionTopology_CoreBinding.core_indexes())
def dump_topology(sessionTopology):
print('SoCs')
strIndent1 = ' '
for sessionTopology_SoC in sessionTopology.SoCs():
print(strIndent1 + 'Name:' + sessionTopology_SoC.name())
print(strIndent1 + 'Cores')
strIndent2 = strIndent1 + ' '
for sessionTopology_Core in sessionTopology_SoC.cores():
print(strIndent2, 'Name:', sessionTopology_Core.name(), ' Type:', sessionTopology_Core.core_type())
print(strIndent1 + 'SMPs')
dump_topology_CoreBinding(strIndent2, sessionTopology_SoC.SMPs())
print('Processes')
for sessionTopology_Process in sessionTopology.processes():
print(strIndent1 + 'URL:' + sessionTopology_Process.URL())
# print(strIndent1 + 'Application:' + sessionTopology_Process.m_strApplication)
def dump_status(sessionStatus):
print('Status')
strIndent1 = ' '
for sSoC in sessionStatus.SoCs():
print(strIndent1 + 'Status:', sSoC.status_string())
print(strIndent1 + 'Cores')
strIndent2 = strIndent1 + ' '
for sCore in sSoC.cores():
print(strIndent2 + 'Status:', sCore.status_string(), ' PC:', hex(sCore.PC()))
def test_debug(sessionCtrl, SoCCtrl, Binding):
try:
cmgr = sessionCtrl.instance_attach(Binding.name())
dbg = ic.CDebugFacade(cmgr)
strStatus = dbg.getCPUStatus().toString()
for dwCoreIndex in Binding.core_indexes():
dwFocusedCore = SoCCtrl.SMP_get_focused_core(dwCoreIndex)
SoCCtrl.SMP_set_focused_core(dwCoreIndex)
dwFocusedCore = SoCCtrl.SMP_get_focused_core(Binding.core_indexes()[0])
except:
pass
if __name__ == "__main__":
cmgr0 = ic.ConnectionMgr()
cmgr0.connect(ic.CConnectionConfig().instanceId(winidea_id))
# ws = ic.CWorkspaceController(cmgr0)
sessionCtrl = ic.CSessionCtrl(cmgr0)
# sessionCtrl.begin_reset()
sessionTopology = sessionCtrl.get_topology()
dump_topology(sessionTopology)
# get SMPs and non-SMP cores in a unified container
dwSoCIndex = 0
sessionTopology_SoC_core_SMP = sessionCtrl.get_core_SMP_bindings(dwSoCIndex)
print('core and SMP for SoC[0]')
dump_topology_CoreBinding(' ', sessionTopology_SoC_core_SMP)
#session controllers
SoCCtrl = sessionCtrl.get_SoC('') #using single SoC - no need for name
for Binding in sessionTopology_SoC_core_SMP:
test_debug(sessionCtrl, SoCCtrl, Binding)
#test_debug(sessionCtrl, SoCCtrl, sessionTopology_SoC_core_SMP[1])
sessionStatus = sessionCtrl.get_status()
dump_status(sessionStatus)
sessionCtrl.end()