Enum itm_decode::TracePacket[][src]

pub enum TracePacket {
    Sync,
    Overflow,
    LocalTimestamp1 {
        ts: u64,
        data_relation: TimestampDataRelation,
    },
    LocalTimestamp2 {
        ts: u8,
    },
    GlobalTimestamp1 {
        ts: u64,
        wrap: bool,
        clkch: bool,
    },
    GlobalTimestamp2 {
        ts: u64,
    },
    Extension {
        page: u8,
    },
    Instrumentation {
        port: u8,
        payload: Vec<u8>,
    },
    EventCounterWrap {
        cyc: bool,
        fold: bool,
        lsu: bool,
        sleep: bool,
        exc: bool,
        cpi: bool,
    },
    ExceptionTrace {
        exception: ExceptionType,
        action: ExceptionAction,
    },
    PCSample {
        pc: Option<u32>,
    },
    DataTracePC {
        comparator: u8,
        pc: u32,
    },
    DataTraceAddress {
        comparator: u8,
        data: Vec<u8>,
    },
    DataTraceValue {
        comparator: u8,
        access_type: MemoryAccessType,
        value: Vec<u8>,
    },
}

The set of possible packet types that may be decoded.

Specification would suggest an implementation of two enum types, but that structure is here flattened to simplify the implementation.

Variants

Sync

A synchronization packet is a unique pattern in the bitstream. It is identified and used to provide the alignment of other packet bytes in the bitstream. (Appendix D4.2.1)

Overflow

Found in the bitstream if

  • Software has written to an ITM stimulus port register when the stimulus port output buffer is full.
  • The DWT attempts to generate a hardware source packet when the DWT output buffer is full.
  • The local timestamp counter overflows.

See (Appendix D4.2.3).

LocalTimestamp1

A delta timestamp that measures the interval since the generation of the last local timestamp and its relation to the corresponding ITM/DWT data packets. (Appendix D4.2.4)

Fields of LocalTimestamp1

ts: u64

Timestamp value.

data_relation: TimestampDataRelation

Indicates the relationship between the generation of ts and the corresponding ITM or DWT data packet.

LocalTimestamp2

A derivative of LocalTimestamp1 for timestamp values between 1-6. Always synchronous to te associated ITM/DWT data. (Appendix D4.2.4)

Fields of LocalTimestamp2

ts: u8

Timestamp value.

GlobalTimestamp1

An absolute timestamp based on the global timestamp clock that contain the timestamp’s lower-order bits. (Appendix D4.2.5)

Fields of GlobalTimestamp1

ts: u64

Lower-order bits of the timestamp; bits[25:0].

wrap: bool

Set if higher order bits output by the last GTS2 have changed.

clkch: bool

Set if the system has asserted a clock change input to the processor since the last generated global timestamp.

GlobalTimestamp2

An absolute timestamp based on the global timestamp clock that contain the timestamp’s higher-order bits. (Appendix D4.2.5)

Fields of GlobalTimestamp2

ts: u64

Higher-order bits of the timestamp value; bits[63:26] or bits[47:26] depending on implementation.

Extension

A packet that provides additional information about the identified source (one of two possible, theoretically). On ARMv7-M this packet is only used to denote on which ITM stimulus port a payload was written. (Appendix D4.2.6)

Fields of Extension

page: u8

Source port page number.

Instrumentation

Contains the payload written to the ITM stimulus ports.

Fields of Instrumentation

port: u8

Stimulus port number.

payload: Vec<u8>

Instrumentation data written to the stimulus port. MSB, BE.

EventCounterWrap

One or more event counters have wrapped. (Appendix D4.3.1)

Fields of EventCounterWrap

cyc: bool

POSTCNT wrap (see Appendix C1, p. 732).

fold: bool

FOLDCNT wrap (see Appendix C1, p. 734).

lsu: bool

LSUCNT wrap (see Appendix C1, p. 734).

sleep: bool

SLEEPCNT wrap (see Appendix C1, p. 734).

exc: bool

EXCCNT wrap (see Appendix C1, p. 734).

cpi: bool

CPICNT wrap (see Appendix C1, p. 734).

ExceptionTrace

The processor has entered, exit, or returned to an exception. (Appendix D4.3.2)

Fields of ExceptionTrace

exception: ExceptionTypeaction: ExceptionAction
PCSample

Periodic PC sample. (Appendix D4.3.3)

Fields of PCSample

pc: Option<u32>

The value of the PC. None if periodic PC sleep packet.

DataTracePC

A DWT comparator matched a PC value. (Appendix D4.3.4)

Fields of DataTracePC

comparator: u8

The comparator number that generated the data.

pc: u32

The PC value for the instruction that caused the successful address comparison.

DataTraceAddress

A DWT comparator matched an address. (Appendix D4.3.4)

Fields of DataTraceAddress

comparator: u8

The comparator number that generated the data.

data: Vec<u8>

Data address content; bits[15:0]. MSB, BE.

DataTraceValue

A data trace packet with a value. (Appendix D4.3.4)

Fields of DataTraceValue

comparator: u8

The comparator number that generated the data.

access_type: MemoryAccessType

Whether the data was read or written.

value: Vec<u8>

The data value. MSB, BE.

Trait Implementations

impl Clone for TracePacket[src]

impl Debug for TracePacket[src]

impl PartialEq<TracePacket> for TracePacket[src]

impl StructuralPartialEq for TracePacket[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Conv for T

impl<T> Conv for T

impl<T> FmtForward for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> TryConv for T

impl<T> TryConv for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.