44 lines
1.9 KiB
ReStructuredText
44 lines
1.9 KiB
ReStructuredText
.. _mipi_stp_decoder:
|
|
|
|
MIPI STP Decoder
|
|
################
|
|
|
|
The MIPI System Trace Protocol (MIPI STP) was developed as a generic base protocol that can
|
|
be shared by multiple application-specific trace protocols. It serves as a wrapper protocol
|
|
that merges disparate streams that typically contain different trace protocols from different
|
|
trace sources. Stream consists of opcode (shortest is 4 bit long) followed by optional data and
|
|
optional timestamp. There are opcodes for data (8, 16, 32, 64 bit data marked/not marked, with or
|
|
without timestamp), stream recognition (master and channel), synchronization (ASYNC opcode) and
|
|
others.
|
|
|
|
One example where protocol is used is ARM Coresight STM (System Trace Macrocell) where data
|
|
written to Stimulus Port registers maps directly to STP stream.
|
|
|
|
This module can be used to perform on-chip decoding of the data stream. STP v2 is used.
|
|
|
|
Usage
|
|
*****
|
|
|
|
Decoder is initialized with a callback. A callback is called on each decoded opcode.
|
|
Decoder has internal state since there are dependency between opcodes (e.g. timestamp can be
|
|
relative). Decoder can be in synchronization or not. Initial state is configurable.
|
|
If decoder is not synchronized to the stream then it decodes each nibble in search for ASYNC opcode.
|
|
Loss of synchronization can be indicated to the decoder by calling
|
|
:c:func:`mipi_stp_decoder_sync_loss`. :c:func:`mipi_stp_decoder_decode` is used to decode the data.
|
|
|
|
Limitations
|
|
***********
|
|
|
|
There are following limitations:
|
|
|
|
* Decoder supports only little endian architectures.
|
|
* When decoding nibbles, it is more efficient when core supports unaligned memory access.
|
|
Implementation supports optimized version with unaligned memory access and generic one.
|
|
Optimized version is used for ARM Cortex-M (expect for M0).
|
|
* Limited set of the most common opcodes is implemented.
|
|
|
|
API documentation
|
|
*****************
|
|
|
|
.. doxygengroup:: mipi_stp_decoder_apis
|