예제 #1
0
    def __init__(self, root):
        DTSLv1.__init__(self, root)

        # locate devices on the platform and create corresponding objects
        self.discoverDevices()

        self.mgdPlatformDevs = set()

        # tracks which devices are managed when a trace mode is enabled
        self.mgdTraceDevs = {}

        # only DAP device is managed by default - others will be added when enabling trace, SMP etc
        self.mgdPlatformDevs.add(self.dap)

        self.exposeCores()

        self.setupSMP()

        self.setupSystemETBTrace()
        self.setupCCNETBTrace()
        for c in range(NUM_CLUSTERS):
            self.setupClusterETBTrace(c)

        # use internal trace range to limit trace to e.g. kernel
        self.traceRangeOptions = [
            TraceRangeOptions(),  # Cortex-A15 trace options
        ]

        self.setManagedDevices(self.mgdPlatformDevs)
예제 #2
0
    def __init__(self, root):
        DTSLv1.__init__(self, root)
        '''Do not add directly to this list - first check if the item you are adding is already present'''
        self.mgdPlatformDevs = []

        # Tracks which devices are managed when a trace mode is enabled
        self.mgdTraceDevs = {}

        # Locate devices on the platform and create corresponding objects
        self.discoverDevices()

        # Only DAP device is managed by default - others will be added when enabling trace, SMP etc
        if self.dap not in self.mgdPlatformDevs:
            self.mgdPlatformDevs.append(self.dap)

        self.exposeCores()

        self.traceRangeIDs = {}

        traceComponentOrder = [self.Funnel0]
        managedDevices = [self.Funnel0, self.OutCTI0, self.ETF0Trace]
        self.setupETFTrace(self.ETF0Trace, "ETF0", traceComponentOrder,
                           managedDevices)

        traceComponentOrder = [self.Funnel0, self.ETF0]
        managedDevices = [self.Funnel0, self.ETF0, self.OutCTI0, self.ETR0]
        self.setupETRTrace(self.ETR0, "ETR0", traceComponentOrder,
                           managedDevices)

        self.setupCTISyncSMP()

        self.setManagedDeviceList(self.mgdPlatformDevs)
예제 #3
0
    def postConnect(self):
        DTSLv1.postConnect(self)

        freq = self.getOptionValue("options.trace.timestampFrequency")

        # Update the value so the trace decoder can access it
        tsInfo = TimestampInfo(freq)
        self.setTimestampInfo(tsInfo)
예제 #4
0
    def __init__(self, root):
        DTSLv1.__init__(self, root)
        '''Do not add directly to this list - first check if the item you are adding is already present'''
        self.mgdPlatformDevs = []

        # Tracks which devices are managed when a trace mode is enabled
        self.mgdTraceDevs = {}

        # Locate devices on the platform and create corresponding objects
        self.discoverDevices()

        # Only MEM_AP devices are managed by default - others will be added when enabling trace, SMP etc
        if self.AXI not in self.mgdPlatformDevs:
            self.mgdPlatformDevs.append(self.AXI)
        if self.APB not in self.mgdPlatformDevs:
            self.mgdPlatformDevs.append(self.APB)

        self.exposeCores()

        traceComponentOrder = [self.Funnel6]
        managedDevices = [self.Funnel6, self.ETF0Trace]
        self.setupETFTrace(self.ETF0Trace, "ETF0", traceComponentOrder,
                           managedDevices)

        traceComponentOrder = []
        managedDevices = [self.ETF1Trace]
        self.setupETFTrace(self.ETF1Trace, "ETF1", traceComponentOrder,
                           managedDevices)

        traceComponentOrder = []
        managedDevices = [self.ETF2Trace]
        self.setupETFTrace(self.ETF2Trace, "ETF2", traceComponentOrder,
                           managedDevices)

        traceComponentOrder = [
            self.Funnel6, self.ETF0, self.Funnel0, self.Funnel5
        ]
        managedDevices = [
            self.Funnel6, self.ETF0, self.Funnel0, self.Funnel5, self.ETF3Trace
        ]
        self.setupETFTrace(self.ETF3Trace, "ETF3", traceComponentOrder,
                           managedDevices)

        traceComponentOrder = [
            self.Funnel6, self.ETF0, self.Funnel0, self.Funnel5, self.ETF3
        ]
        managedDevices = [
            self.Funnel6, self.ETF0, self.Funnel0, self.Funnel5, self.ETF3,
            self.ETR0
        ]
        self.setupETRTrace(self.ETR0, "ETR0", traceComponentOrder,
                           managedDevices)

        self.setupSimpleSyncSMP()

        self.setManagedDeviceList(self.mgdPlatformDevs)
예제 #5
0
 def getOptionList():
     return [
         DTSLv1.tabSet("options", "Options", childOptions=
             [DTSLv1.tabPage("rams", "Cache RAMs", childOptions=[
                 # Turn cache debug mode on/off
                 DTSLv1.booleanOption('cacheDebug', 'Cache debug mode',
                                      description='Turning cache debug mode on enables reading the cache RAMs. Enabling it may adversely impact debug performance.',
                                      defaultValue=False, isDynamic=True),
                 DTSLv1.booleanOption('cachePreserve', 'Preserve cache contents in debug state',
                                      description='Preserve the contents of caches while the core is stopped.',
                                      defaultValue=False, isDynamic=True),
             ])]
         )
     ]
예제 #6
0
 def __init__(self, root):
     DTSLv1.__init__(self, root)
     
     '''Do not add directly to this list - first check if the item you are adding is already present'''
     self.mgdPlatformDevs = []
     
     # locate devices on the platform and create corresponding objects
     self.discoverDevices()
     
     # only DAP device is managed by default - others will be added when enabling trace, SMP etc
     if self.dap not in self.mgdPlatformDevs:
         self.mgdPlatformDevs.append(self.dap)
     
     self.exposeCores()
     
     self.setupSimpleSyncSMP()
     self.setManagedDeviceList(self.mgdPlatformDevs)
예제 #7
0
 def __init__(self, root):
     DTSLv1.__init__(self, root)
     
     '''Do not add directly to this list - first check if the item you are adding is already present'''
     self.mgdPlatformDevs = []
     
     # Locate devices on the platform and create corresponding objects
     self.discoverDevices()
     
     # Only MEM_AP devices are managed by default - others will be added when enabling trace, SMP etc
     for i in range(len(self.APBs)):
         if self.APBs[i] not in self.mgdPlatformDevs:
             self.mgdPlatformDevs.append(self.APBs[i])
     
     for i in range(len(self.AXIs)):
         if self.AXIs[i] not in self.mgdPlatformDevs:
             self.mgdPlatformDevs.append(self.AXIs[i])
     
     self.exposeCores()
     
     self.setupSimpleSyncSMP()
     
     self.setManagedDeviceList(self.mgdPlatformDevs)
예제 #8
0
 def __init__(self, root):
     DTSLv1.__init__(self, root)
     
     '''Do not add directly to this list - first check if the item you are adding is already present'''
     self.mgdPlatformDevs = []
     
     # Tracks which devices are managed when a trace mode is enabled
     self.mgdTraceDevs = {}
     
     # Locate devices on the platform and create corresponding objects
     self.discoverDevices()
     
     # Only DAP device is managed by default - others will be added when enabling trace, SMP etc
     if self.dap not in self.mgdPlatformDevs:
         self.mgdPlatformDevs.append(self.dap)
     
     self.exposeCores()
     
     traceComponentOrder = [ self.TPIU ]
     managedDevices = [ self.TPIU, self.DSTREAM ]
     self.setupDSTREAMTrace(DSTREAM_PORTWIDTH, traceComponentOrder, managedDevices)
     
     self.setManagedDeviceList(self.mgdPlatformDevs)
 def __init__(self, root):
     DTSLv1.__init__(self, root)
     
     '''Do not add directly to this list - first check if the item you are adding is already present'''
     self.mgdPlatformDevs = []
     
     # Tracks which devices are managed when a trace mode is enabled
     self.mgdTraceDevs = {}
     
     # Locate devices on the platform and create corresponding objects
     self.discoverDevices()
     
     # Only DAP device is managed by default - others will be added when enabling trace, SMP etc
     if self.dap not in self.mgdPlatformDevs:
         self.mgdPlatformDevs.append(self.dap)
     
     self.exposeCores()
     
     traceComponentOrder = [ self.TPIU ]
     managedDevices = [ self.TPIU, self.DSTREAM ]
     self.setupDSTREAMTrace(DSTREAM_PORTWIDTH, traceComponentOrder, managedDevices)
     
     self.setManagedDeviceList(self.mgdPlatformDevs)
예제 #10
0
 def getOptionList():
     return [
         DTSLv1.tabSet("options", "Options", childOptions=[
             DTSLv1.tabPage("trace", "Trace Capture", childOptions=[
                 DTSLv1.enumOption('traceCapture', 'Trace capture method', defaultValue="none",
                     values = [("none", "None"), ("DSTREAM", "DSTREAM 4GB Trace Buffer")],
                     setter=DtslScript.setTraceCaptureMethod),
             ]),
             DTSLv1.tabPage("cortexM3", "Cortex-M3", childOptions=[
                 DTSLv1.booleanOption('coreTrace', 'Enable Cortex-M3 core trace', defaultValue=False,
                     childOptions =
                         # Allow each source to be enabled/disabled individually
                         [ DTSLv1.booleanOption('Cortex_M3_%d' % c, "Enable Cortex-M3 %d trace" % c, defaultValue=True)
                         for c in range(0, NUM_CORES_CORTEX_M3) ]
                     ),
             ]),
             DTSLv1.tabPage("itm", "ITM", childOptions=[
                 DTSLv1.booleanOption('ITM0', 'Enable ITM 0 trace', defaultValue=False),
             ]),
         ])
     ]
 def getOptionList():
     return [
         DTSLv1.tabSet("options", "Options", childOptions=[
             DTSLv1.tabPage("trace", "Trace Capture", childOptions=[
                 DTSLv1.enumOption('traceCapture', 'Trace capture method', defaultValue="none",
                     values = [("none", "None"), ("DSTREAM", "DSTREAM 4GB Trace Buffer")],
                     setter=DtslScript.setTraceCaptureMethod),
             ]),
             DTSLv1.tabPage("cortexM3", "Cortex-M3", childOptions=[
                 DTSLv1.booleanOption('coreTrace', 'Enable Cortex-M3 core trace', defaultValue=False,
                     childOptions =
                         # Allow each source to be enabled/disabled individually
                         [ DTSLv1.booleanOption('Cortex_M3_%d' % c, "Enable Cortex-M3 %d trace" % c, defaultValue=True)
                         for c in range(0, NUM_CORES_CORTEX_M3) ]
                     ),
             ]),
             DTSLv1.tabPage("itm", "ITM", childOptions=[
                 DTSLv1.booleanOption('ITM0', 'Enable ITM 0 trace', defaultValue=False),
             ]),
         ])
     ]
예제 #12
0
 def getOptionList():
     return [
         DTSLv1.tabSet(
             "options",
             "Options",
             childOptions=[
                 DTSLv1.tabPage(
                     "trace",
                     "Trace Capture",
                     childOptions=[
                         DTSLv1.enumOption(
                             'traceCapture',
                             'Trace capture method',
                             defaultValue="none",
                             values=[
                                 ("none", "None"),
                                 ("ETF0",
                                  "On Chip Trace Buffer (ETF0/TMC)"),
                                 ("ETR0",
                                  "System Memory Trace Buffer (ETR0/TMC)")
                             ],
                             setter=DtslScript.setTraceCaptureMethod),
                     ]),
                 DTSLv1.tabPage(
                     "cortexA57",
                     "Cortex-A57",
                     childOptions=[
                         DTSLv1.booleanOption(
                             'coreTrace',
                             'Enable Cortex-A57 core trace',
                             defaultValue=False,
                             childOptions=
                             # Allow each source to be enabled/disabled individually
                             [
                                 DTSLv1.booleanOption(
                                     'Cortex_A57_%d' % c,
                                     "Enable Cortex-A57 %d trace" % c,
                                     defaultValue=True)
                                 for c in range(0, NUM_CORES_CORTEX_A57)
                             ] + [
                                 ETMv4TraceSource.cycleAccurateOption(
                                     DtslScript.getETMsForCortex_A57)
                             ] +
                             [  # Trace range selection (e.g. for linux kernel)
                                 DTSLv1.booleanOption(
                                     'traceRange',
                                     'Trace capture range',
                                     description=TRACE_RANGE_DESCRIPTION,
                                     defaultValue=False,
                                     childOptions=[
                                         DTSLv1.integerOption(
                                             'start',
                                             'Start address',
                                             description=
                                             'Start address for trace capture',
                                             defaultValue=0,
                                             display=IIntegerOption.
                                             DisplayFormat.HEX),
                                         DTSLv1.integerOption(
                                             'end',
                                             'End address',
                                             description=
                                             'End address for trace capture',
                                             defaultValue=0xFFFFFFFF,
                                             display=IIntegerOption.
                                             DisplayFormat.HEX)
                                     ])
                             ]),
                     ]),
                 DTSLv1.tabPage(
                     "ETR",
                     "ETR",
                     childOptions=[
                         DTSLv1.booleanOption(
                             'etrBuffer0',
                             'Configure the system memory trace buffer to be used by the ETR0/TMC device',
                             defaultValue=False,
                             childOptions=[
                                 DTSLv1.integerOption(
                                     'start',
                                     'Start address',
                                     description=
                                     'Start address of the system memory trace buffer to be used by the ETR0/TMC device',
                                     defaultValue=0x00100000,
                                     display=IIntegerOption.DisplayFormat.
                                     HEX),
                                 DTSLv1.integerOption(
                                     'size',
                                     'Size in Words',
                                     description=
                                     'Size of the system memory trace buffer in Words (total bytes/system memory width)',
                                     defaultValue=0x8000,
                                     isDynamic=True,
                                     display=IIntegerOption.DisplayFormat.
                                     HEX),
                                 DTSLv1.booleanOption(
                                     'scatterGather',
                                     'Enable scatter-gather mode',
                                     defaultValue=False,
                                     description=
                                     'When enabling scatter-gather mode, the start address of the on-chip trace buffer must point to a configured scatter-gather table'
                                 )
                             ]),
                     ]),
                 DTSLv1.tabPage(
                     "stm",
                     "STM",
                     childOptions=[
                         DTSLv1.booleanOption('STM0',
                                              'Enable STM 0 trace',
                                              defaultValue=False),
                         DTSLv1.booleanOption('STM1',
                                              'Enable STM 1 trace',
                                              defaultValue=False),
                     ]),
                 DTSLv1.tabPage(
                     "rams",
                     "Cache RAMs",
                     childOptions=[
                         # Turn cache debug mode on/off
                         DTSLv1.booleanOption(
                             'cacheDebug',
                             'Cache debug mode',
                             description=
                             'Turning cache debug mode on enables reading the cache RAMs. Enabling it may adversely impact debug performance.',
                             defaultValue=False,
                             isDynamic=True),
                         DTSLv1.booleanOption(
                             'cachePreserve',
                             'Preserve cache contents in debug state',
                             description=
                             'Preserve the contents of caches while the core is stopped.',
                             defaultValue=False,
                             isDynamic=True),
                     ]),
             ])
     ]
예제 #13
0
 def getOptionList():
     return [
         DTSLv1.tabSet("options", "Options", childOptions=[
         ])
     ]
예제 #14
0
 def getOptionList():
     return [
         DTSLv1.tabSet(
             "options",
             "Options",
             childOptions=[
                 DTSLv1.tabPage(
                     "trace",
                     "Trace Capture",
                     childOptions=[
                         DTSLv1.enumOption(
                             'traceCapture',
                             'Trace capture method',
                             defaultValue="none",
                             values=[
                                 ("none", "None"),
                                 ("ETF0",
                                  "On Chip Trace Buffer (ETF0/TMC)"),
                                 ("ETF1",
                                  "On Chip Trace Buffer (ETF1/TMC)"),
                                 ("ETF2",
                                  "On Chip Trace Buffer (ETF2/TMC)"),
                                 ("ETF3",
                                  "On Chip Trace Buffer (ETF3/TMC)"),
                                 ("ETR0",
                                  "System Memory Trace Buffer (ETR0/TMC)")
                             ],
                             setter=DtslScript.setTraceCaptureMethod),
                         DTSLv1.integerOption(
                             'timestampFrequency',
                             'Timestamp frequency',
                             defaultValue=25000000,
                             isDynamic=False,
                             description=
                             "This value will be used to set the Counter Base Frequency ID Register of the Timestamp generator.\nIt represents the number of ticks per second and is used to translate the timestamp value reported into a number of seconds.\nNote that changing this value may not result in a change in the observed frequency."
                         ),
                     ]),
                 DTSLv1.tabPage(
                     "cortexA53",
                     "Cortex-A53",
                     childOptions=[
                         DTSLv1.booleanOption(
                             'coreTrace',
                             'Enable Cortex-A53 core trace',
                             defaultValue=False,
                             childOptions=
                             # Allow each source to be enabled/disabled individually
                             [
                                 DTSLv1.booleanOption(
                                     'Cortex_A53_%d' % c,
                                     "Enable Cortex-A53 %d trace" % c,
                                     defaultValue=True)
                                 for c in range(0, NUM_CORES_CORTEX_A53)
                             ] + [
                                 DTSLv1.booleanOption(
                                     'timestamp',
                                     "Enable ETM Timestamps",
                                     description=
                                     "Controls the output of timestamps into the ETM output streams",
                                     defaultValue=True)
                             ] + [
                                 DTSLv1.booleanOption(
                                     'contextIDs',
                                     "Enable ETM Context IDs",
                                     description=
                                     "Controls the output of context ID values into the ETM output streams",
                                     defaultValue=True,
                                     childOptions=[
                                         DTSLv1.enumOption(
                                             'contextIDsSize',
                                             'Context ID Size',
                                             defaultValue="32",
                                             values=[("8", "8 bit"),
                                                     ("16", "16 bit"),
                                                     ("32", "32 bit")])
                                     ]),
                             ] + [
                                 ETMv4TraceSource.cycleAccurateOption(
                                     DtslScript.getETMsForCortex_A53)
                             ]),
                     ]),
                 DTSLv1.tabPage(
                     "ETR",
                     "ETR",
                     childOptions=[
                         DTSLv1.booleanOption(
                             'etrBuffer0',
                             'Configure the system memory trace buffer to be used by the ETR0/TMC device',
                             defaultValue=False,
                             childOptions=[
                                 DTSLv1.integerOption(
                                     'start',
                                     'Start address',
                                     description=
                                     'Start address of the system memory trace buffer to be used by the ETR0/TMC device',
                                     defaultValue=0x00100000,
                                     display=IIntegerOption.DisplayFormat.
                                     HEX),
                                 DTSLv1.integerOption(
                                     'size',
                                     'Size in Words',
                                     description=
                                     'Size of the system memory trace buffer in Words (total bytes/system memory width)',
                                     defaultValue=0x8000,
                                     isDynamic=True,
                                     display=IIntegerOption.DisplayFormat.
                                     HEX),
                                 DTSLv1.booleanOption(
                                     'scatterGather',
                                     'Enable scatter-gather mode',
                                     defaultValue=False,
                                     description=
                                     'When enabling scatter-gather mode, the start address of the on-chip trace buffer must point to a configured scatter-gather table'
                                 )
                             ]),
                     ]),
                 DTSLv1.tabPage(
                     "stm",
                     "STM",
                     childOptions=[
                         DTSLv1.booleanOption('STM0',
                                              'Enable STM 0 trace',
                                              defaultValue=False),
                         DTSLv1.booleanOption('STM1',
                                              'Enable STM 1 trace',
                                              defaultValue=False),
                     ]),
                 DTSLv1.tabPage(
                     "rams",
                     "Cache RAMs",
                     childOptions=[
                         # Turn cache debug mode on/off
                         DTSLv1.booleanOption(
                             'cacheDebug',
                             'Cache debug mode',
                             description=
                             'Turning cache debug mode on enables reading the cache RAMs. Enabling it may adversely impact debug performance.',
                             defaultValue=False,
                             isDynamic=True),
                         DTSLv1.booleanOption(
                             'cachePreserve',
                             'Preserve cache contents in debug state',
                             description=
                             'Preserve the contents of caches while the core is stopped.',
                             defaultValue=False,
                             isDynamic=True),
                     ]),
             ])
     ]
예제 #15
0
 def getOptionList():
     return [
         DTSLv1.tabSet(
             "options",
             "Options",
             childOptions=[
                 DTSLv1.tabPage(
                     "trace_%d" % c,
                     "Cluster %d Trace" % c,
                     childOptions=[
                         DTSLv1.enumOption(
                             'traceCapture',
                             'Trace capture method',
                             defaultValue="none",
                             values=[("none", "None"),
                                     ("ETB_%d" % c,
                                      "On Chip Trace Buffer (ETB)")]),
                         DTSLv1.booleanOption(
                             'cortexA15coreTrace',
                             'Enable Cortex-A15 core trace',
                             defaultValue=False,
                             childOptions=
                             # Allow each source to be enabled/disabled individually
                             [
                                 DTSLv1.booleanOption(
                                     'Cortex_A15_%d' % core,
                                     "Enable Cortex-A15 %d trace" % core,
                                     defaultValue=True)
                                 for core in range(CLUSTER_SIZES[c])
                             ] +
                             # Pull in common options for PTMs (cycle accurate etc)
                             PTMTraceSource.defaultOptions(
                                 DtslScript.getPTMs) +
                             [  # Trace range selection (e.g. for linux kernel)
                                 DTSLv1.booleanOption(
                                     'traceRange',
                                     'Trace capture range',
                                     description=TRACE_RANGE_DESCRIPTION,
                                     defaultValue=False,
                                     childOptions=[
                                         DTSLv1.integerOption(
                                             'start',
                                             'Start address',
                                             description=
                                             'Start address for trace capture',
                                             defaultValue=0,
                                             display=IIntegerOption.
                                             DisplayFormat.HEX),
                                         DTSLv1.integerOption(
                                             'end',
                                             'End address',
                                             description=
                                             'End address for trace capture',
                                             defaultValue=0xFFFFFFFF,
                                             display=IIntegerOption.
                                             DisplayFormat.HEX)
                                     ])
                             ]),
                     ]) for c in range(NUM_CLUSTERS)
             ] + [
                 DTSLv1.tabPage(
                     "trace_sys",
                     "System Trace",
                     childOptions=[
                         DTSLv1.booleanOption(
                             'sys', 'System STM trace', defaultValue=False),
                         DTSLv1.booleanOption('ccn',
                                              'CCN-504 STM trace',
                                              defaultValue=False),
                     ])
             ])
     ]
 def getOptionList():
     return [
         DTSLv1.tabSet("options", "Options", childOptions=[
         ])
     ]