doc/services/debugging/mipi_stp_decoder.rst
.. _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:
API documentation
.. doxygengroup:: mipi_stp_decoder_apis