winIDEA SDK
test_multi_core_session.py
1# This script is licensed under BSD License, see file LICENSE.txt.
2#
3# (c) TASKING Germany GmbH, 2023
4
5import isystem.connect as ic
6
7winidea_id = ''
8
9
10def dump_topology_CoreIndexes(strIndent,CoreIndexes):
11 print(strIndent, 'CoreIndexes:', end='')
12 for coreIndex in CoreIndexes:
13 print(strIndent, coreIndex, end=',')
14 print()
15
16
17def dump_topology_CoreBinding(strIndent, sessionTopology_CoreBindings):
18 for sessionTopology_CoreBinding in sessionTopology_CoreBindings:
19 print(strIndent, 'Name:', sessionTopology_CoreBinding.name())
20 dump_topology_CoreIndexes(strIndent + ' ', sessionTopology_CoreBinding.core_indexes())
21
22def dump_topology(sessionTopology):
23 print('SoCs')
24 strIndent1 = ' '
25 for sessionTopology_SoC in sessionTopology.SoCs():
26 print(strIndent1 + 'Name:' + sessionTopology_SoC.name())
27 print(strIndent1 + 'Cores')
28 strIndent2 = strIndent1 + ' '
29 for sessionTopology_Core in sessionTopology_SoC.cores():
30 print(strIndent2, 'Name:', sessionTopology_Core.name(), ' Type:', sessionTopology_Core.core_type())
31 print(strIndent1 + 'SMPs')
32 dump_topology_CoreBinding(strIndent2, sessionTopology_SoC.SMPs())
33
34 print('Processes')
35 for sessionTopology_Process in sessionTopology.processes():
36 print(strIndent1 + 'URL:' + sessionTopology_Process.URL())
37 # print(strIndent1 + 'Application:' + sessionTopology_Process.m_strApplication)
38
39def dump_status(sessionStatus):
40 print('Status')
41 strIndent1 = ' '
42 for sSoC in sessionStatus.SoCs():
43 print(strIndent1 + 'Status:', sSoC.status_string())
44 print(strIndent1 + 'Cores')
45 strIndent2 = strIndent1 + ' '
46 for sCore in sSoC.cores():
47 print(strIndent2 + 'Status:', sCore.status_string(), ' PC:', hex(sCore.PC()))
48
49
50def test_debug(sessionCtrl, SoCCtrl, Binding):
51 try:
52 cmgr = sessionCtrl.instance_attach(Binding.name())
53 dbg = ic.CDebugFacade(cmgr)
54 strStatus = dbg.getCPUStatus().toString()
55 for dwCoreIndex in Binding.core_indexes():
56 dwFocusedCore = SoCCtrl.SMP_get_focused_core(dwCoreIndex)
57 SoCCtrl.SMP_set_focused_core(dwCoreIndex)
58 dwFocusedCore = SoCCtrl.SMP_get_focused_core(Binding.core_indexes()[0])
59 except:
60 pass
61
62cmgr0 = ic.ConnectionMgr()
63cmgr0.connect(ic.CConnectionConfig().instanceId(winidea_id))
64
65# ws = ic.CWorkspaceController(cmgr0)
66
67sessionCtrl = ic.CSessionCtrl(cmgr0)
68# sessionCtrl.begin_reset()
69sessionTopology = sessionCtrl.get_topology()
70dump_topology(sessionTopology)
71
72# get SMPs and non-SMP cores in a unified container
73dwSoCIndex = 0
74sessionTopology_SoC_core_SMP = sessionCtrl.get_core_SMP_bindings(dwSoCIndex)
75print('core and SMP for SoC[0]')
76dump_topology_CoreBinding(' ', sessionTopology_SoC_core_SMP)
77
78#session controllers
79SoCCtrl = sessionCtrl.get_SoC('') #using single SoC - no need for name
80
81for Binding in sessionTopology_SoC_core_SMP:
82 test_debug(sessionCtrl, SoCCtrl, Binding)
83#test_debug(sessionCtrl, SoCCtrl, sessionTopology_SoC_core_SMP[1])
84
85sessionStatus = sessionCtrl.get_status()
86dump_status(sessionStatus)
87
88sessionCtrl.end()