winIDEA SDK
test_get_cpusfrs.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
7
8winidea_id = ''
9
10
11def test_getCPUSFRs():
12 connMgr = ic.ConnectionMgr()
13 connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
14
15 dataCtrl2 = ic.CDataController2(connMgr)
16
17 cpuSfrs = dataCtrl2.getCPUSFRs(ic.IConnectEclipse.gcsSFRs)
18 try:
19 print(f"CPU name: {cpuSfrs.CPUName()}")
20
21 # `cpuSfrs` data is a nested structure of SFRs, as in GUI view, for example:
22 # -> DAM
23 # -> DAM0_CLC 0x00000000 DISR ....
24 # -> ASCLIN
25 # -> ASCLIN0_CLC ...
26 # ...
27 # for an example we will print out only first SFR group and 3 of its registers + bitfields
28
29 sfrs = cpuSfrs.SFRs()
30 sfrs: ic.IVectorSFRs
31 for index in range(1): # to show all: sfrs.size()
32 sfrGroup = sfrs.at(index)
33 print(f"SFR group: {sfrGroup.Name()}")
34
35 sfrsInGroup = sfrGroup.SFRs()
36 for gIndex in range(sfrsInGroup.size()): # to show all: sfrsInGroup.size()
37 sfr: ic.ISFR = sfrsInGroup.at(gIndex)
38
39 print(f"\tName: {sfr.Name()}")
40 print(f"\tHas value: {sfr.HasValue()}")
41 print(f"\tHandle: {sfr.Handle()}")
42 print(f"\tBit size: {sfr.BitSize()}")
43 print(f"\tDescription: {sfr.Description()}")
44 print(f"\tAddress: {sfr.Address()}")
45 print(f"\tBit offset: {sfr.BitOffset()}")
46 print(f"\tProperties: {sfr.Properties()}")
47
48 bitFields = sfr.SFRs()
49 for bIndex in range(bitFields.size()):
50 bitField = bitFields.at(bIndex)
51 valMaps = bitField.ValueMaps()
52 valMaps: ic.IVectorValueMap
53 for vIndex in range(valMaps.size()):
54 valMap = valMaps.at(vIndex)
55 valMap: ic.ISFRValueMap
56 print(f"\t\tString: {valMap.String()}")
57 print(f"\t\tDescription: {valMap.Description()}")
58 print(f"\t\tValue: {valMap.Value()}\n")
59
60 print()
61 finally:
62 dataCtrl2.release(cpuSfrs)
63
64
65if __name__ == "__main__":
66 test_getCPUSFRs()