6 releases

Uses old Rust 2015

0.3.1 Jul 5, 2018
0.3.0 Jul 5, 2018
0.2.1 Feb 25, 2018
0.2.0 Jan 11, 2018
0.1.1 Oct 20, 2016

#1491 in Command line utilities

Download history 56/week @ 2021-08-10 51/week @ 2021-08-17 51/week @ 2021-08-24 32/week @ 2021-08-31 42/week @ 2021-09-07 49/week @ 2021-09-14 36/week @ 2021-09-21 29/week @ 2021-09-28 43/week @ 2021-10-05 36/week @ 2021-10-12 33/week @ 2021-10-19 45/week @ 2021-10-26 44/week @ 2021-11-02 39/week @ 2021-11-09 34/week @ 2021-11-16 44/week @ 2021-11-23

169 downloads per month
Used in 2 crates


503 lines

crates.io crates.io


A Rust crate and tool itmdump to parse and dump ARM ITM packets.



Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


A library and tool (itmdump) to parse and dump ARM ITM packets.


itmdump  (de13e34 2017-12-19)

Reads data from an ARM CPU ITM and decodes it.

Input is from an existing file (or named pipe) at a supplied path, or else from standard input.

    itmdump [FLAGS] [OPTIONS]

    -F, --follow     Keep the file open after reading through it and append new output as it is written. Like `tail -f'.
    -h, --help       Prints help information
    -V, --version    Prints version information

    -f, --file <file>        Path to file (or named pipe) to read from
    -s, --stimulus <port>    Stimulus port to extract ITM data for. [default: 0]

Example: reading from saved ITM data in a file

$ itmdump -f /tmp/itm.dump
PANIC at 'Hello, world!', examples/panic.rs:13

Example: reading from OpenOCD via a named pipe

OpenOCD is an open-source tool to debug and flash microcontrollers.

Reading via a named pipe works well on POSIX machines; e.g. Linux or macOS, but not Windows.

$ mkfifo /tmp/itm.fifo
$ itmdump -f /tmp/itm.fifo

This will create a named pipe: /tmp/itm.fifo. Another application, e.g. OpenOCD, will have to connect to this pipe and write to it. Here's an example command for OpenOCD + GDB that does that. (OpenOCD documentation on ITM and TPIU).

(gdb) monitor tpiu config internal /tmp/itm.fifo uart off 8000000

itmdump will read from the pipe, parse the packets and write the payload to stdout:

PANIC at 'Hello, world!', examples/panic.rs:13

Example: monitoring a file

itmdump can monitor a file and dump new ITM data written to it (similar to tail -f).

This may be useful on Windows especially where POSIX named pipes are not available. Just let OpenOCD capture to a file and monitor it with itmdump.

$ itmdump -f /tmp/itm.live -F
PANIC at 'Hello, world!', examples/panic.rs:13


  • ARMv7-M Architecture Reference Manual - Appendix D4.2 Packet descriptions

Available to download as a PDF after a free registration.


~117K SLoC