6This script demonstrates usage of trace with isystem.connect API.
9from __future__
import print_function
13import isystem.connect
as ic
18print(
'isystem.connect version: ' + ic.getModuleVersion())
23 debugCtrl = ic.CDebugFacade(cmgr)
26 debugCtrl.runUntilFunction(
"main")
27 debugCtrl.waitUntilStopped()
32def recordTrace(debugCtrl, traceDoc):
37 traceDoc.removeTrigger(
'testTraceTrigger')
38 triggerIdx = traceDoc.createTrigger(
'testTraceTrigger')
41 traceDoc.select(triggerIdx)
44 traceCfgWizard = ic.CTraceConfigWizard.createCodeExecTrigger(
'test_fibonacci')
54 traceDoc.applyTriggerWizard(traceCfgWizard, triggerIdx)
57 traceDoc.setTriggerOption(triggerIdx,
'HW.Recorder.BufferSize',
'1 MB')
59 print(
'Target is running, trace_doc is recording data...')
65 print(
'Target stopped, loading trace data...')
66 traceDoc.waitUntilLoaded()
69def recordTraceAdvanced(debugCtrl, traceDoc):
70 traceDoc.removeTrigger(
'testTraceTrigger')
71 triggerIdx = traceDoc.createTrigger(
'testTraceTrigger')
72 traceDoc.select(triggerIdx)
75 traceCfgWizard = ic.CTraceConfigWizard.createImmediateTrigger()
76 traceCfgWizard.setRecordingContent(ic.CTraceConfigWizard.ERecordProgramFlow,
79 ic.CTraceConfigWizard.EReadWrite)
81 traceDoc.applyTriggerWizard(traceCfgWizard, triggerIdx)
84 traceDoc.setTriggerOption(triggerIdx,
'HW.Recorder.BufferSize',
'1 MB')
86 print(
'Target is running, trace_doc is recording data...')
92 print(
'Target stopped, loading trace data...')
93 traceDoc.waitUntilLoaded()
96def exportTrace(traceDoc):
98 exportCfg = ic.CTraceExportConfig()
99 print(exportCfg.toString())
101 print(
'-------------------------\nWriting export file in XML format with default settings:\n')
102 formatter = ic.CTraceXMLExportFormat()
103 exportCfg.setFileName(
'traceSample-default.xml') \
104 .setFormatter(formatter)
105 traceDoc.exportData(exportCfg)
107 print(
'-------------------------\nWriting export file in binary format with full contents:\n')
108 formatter = ic.CTraceBinExportFormat()
111 formatter.setTraceItemFlags(0)
112 formatter.setHeader(
True) \
113 .setHeaderVersion(ic.CTraceBinExportFormat.EHeaderVer2) \
114 .addTraceItem(ic.CTraceBinExportFormat.EPresenceFlagsItem) \
115 .addTraceItem(ic.CTraceBinExportFormat.EDataItem) \
116 .addTraceItem(ic.CTraceBinExportFormat.EAddressItem) \
117 .addTraceItem(ic.CTraceBinExportFormat.EMemAreaItem) \
118 .addTraceItem(ic.CTraceBinExportFormat.ETimeStampItem) \
119 .addTraceItem(ic.CTraceBinExportFormat.ETraceSourceIdItem) \
120 .addTraceItem(ic.CTraceBinExportFormat.EBusStatusItem) \
121 .addTraceItem(ic.CTraceBinExportFormat.ESampleIndexItem) \
122 .addTraceItem(ic.CTraceBinExportFormat.EOCDItem) \
123 .addTraceItem(ic.CTraceBinExportFormat.EAUXItem)
125 exportCfg.setFileName(
'traceSample-full.bin') \
126 .setFormatter(formatter)
128 startTime = time.time()
129 traceDoc.exportData(exportCfg)
130 print(
't[s] = ', time.time() - startTime,
' ', exportCfg.getFileName())
132 print(
'-------------------------\nWriting export file in XML format with '
133 +
'customized settings (same info as bin export):\n')
134 formatter = ic.CTraceXMLExportFormat()
135 formatter.setIndex(
True) \
137 .setTraceSourceId(
True) \
142 .setDasmData(
False) \
143 .setDasmAddress(
False) \
144 .setFunction(
False) \
146 .setActivity(
False) \
149 exportCfg.setFileName(
'traceSample-customized.xml') \
150 .setFormatter(formatter)
152 startTime = time.time()
153 traceDoc.exportData(exportCfg)
154 print(
't[s] = ', time.time() - startTime,
' ', exportCfg.getFileName())
157def parse(trace_doc: ic.CTraceController):
159 binTraceData = ic.CTraceData.createInstance(trace_doc,
160 'traceSample-full.bin',
164 warnings = binTraceData.getParserWarnings()
166 print(
'WARNING(S) (bin): ', warnings)
168 binExportFromFile = binTraceData.getBinaryExportConfig()
169 print(
'header version: ', binExportFromFile.getHeaderVersionAsStr())
170 print(
'is data: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.EDataItem))
171 print(
'is address: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.EAddressItem))
172 print(
'is mem area: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.EMemAreaItem))
173 print(
'is time: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.ETimeStampItem))
174 print(
'is source ID: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.ETraceSourceIdItem))
175 print(
'is bus status: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.EBusStatusItem))
176 print(
'is index: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.ESampleIndexItem))
177 print(
'is OCD: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.EOCDItem))
178 print(
'is AUX: ', binExportFromFile.isTraceItem(ic.CTraceBinExportFormat.EAUXItem))
181 binIter = binTraceData.getTimelineIterator()
183 print(
"Binary export:")
184 while binIter.hasNext():
185 binEvent = binIter.next()
186 print(binEvent.toString(),
'\n')
188 binTraceData.closeParser()
191 print(
"\n\n\n---------------------------------------------------\n\nXML export:\n")
193 xmlTraceData = ic.CTraceData.createInstance(trace_doc,
194 'traceSample-default.xml',
198 warnings = xmlTraceData.getParserWarnings()
200 print(
'WARNING(S) (bin): ', warnings)
203 xmlIter = xmlTraceData.getTimelineIterator()
204 while xmlIter.hasNext():
205 xmlEvent = xmlIter.next()
206 print(xmlEvent.toString(),
'\n')
208 xmlTraceData.closeParser()
212 status = doc.getStatus()
214 print(
'Status after tracing:')
215 print(
'Was there an error?', status.isErrorInBuffer())
216 print(
'Was there a buffer overrun?', status.isBufferOverrun())
217 print(
'Was there a recording error?', status.isRecordingError())
218 print(
'Was there an error?', status.isError() )
219 print(
'Full status:')
220 print(status.toString())
224cmgr = ic.ConnectionMgr()
225cmgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
227debugCtrl = initTarget(cmgr)
230traceDoc = ic.CTraceController(cmgr,
'sample_trace.trd',
'w')
231recordTrace(debugCtrl, traceDoc)
238print(
"Recording trace with custom range setting...")
239recordTraceAdvanced(debugCtrl, traceDoc)
240exportCfg = ic.CTraceExportConfig()
241exportCfg.setFileName(
'traceAdvanced.xml')
242traceDoc.exportData(exportCfg)