Skip to content
A debugging toolset and library for debugging ARM cores on a separate host
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
cli Cleanup work, remove all warnings May 21, 2019
coresight Cleanup work, remove all warnings May 21, 2019
doc AP interface experiments Feb 24, 2019
memory Cleanup work, remove all warnings May 21, 2019
probe Cleanup work, remove all warnings May 21, 2019
.gitignore Initial commit with a very rough and preliminary proposal of an API. Feb 10, 2019
.travis.yml Fixed some more clippy hints and disabled clippy again because it exh… Feb 23, 2019 Create Feb 18, 2019
Cargo.toml Move jep106 crate to a new repositoryMove jep106 crate to a new May 19, 2019 Relocated the DAPAccess and DebugProbe traits to respective repositor… Feb 13, 2019 Update May 27, 2019
heart.hex Fixed some issues with the flashing code. May 20, 2019
init_sequence_pyocd.txt Merge remote-tracking branch 'origin/daplink' into daplink May 6, 2019


Build Status

A debugging toolset and library for debugging ARM cores on a separate host.


The goal of this library is to provide a toolset to interact with a variety of embedded MCUs and debug probes. For starters, ARM cores will be supported with use of the CoreSight protocol. If there is high demand and more contributors, it is intended to add support for other architectures.

Similar projects like OpenOCD, PyOCD, Segger Toolset, ST Tooling, etc. exist. They all implement the GDB protocol and their own protocol on top of it to enable GDB to commuicate with the debug probe. This is not standardized and also little bit unstable sometimes. For every tool the commands are different and so on.

This project gets rid of the GDB layer and provides a direct interface to the debug probe, which then enables other software, for example VisualStudio to use it's debug functionality.

What's more is that we can use CoreSight to its full extent. We can trace and modify memory as well as registers in real time.

The end goal is a complete library toolset to enable other tools to use the functionality of CoreSight.


The lib can connect to a DAPLink and read and write memory correctly. It can read ROM tables and extract CoreSight component information. Writing an entire hex file is halfaways there. The lib can also connect to an ST-Link, attach to an STM32F429 (it should be able to connect to any target; this one was just used for testing) and read DAP registers. Reading ROM tables is buggy because of some STLink troubles but should possibly fixed in the long run.

Focus of the development is having a full implementation (CoreSight, Flashing, Debugging) working for the DAPLink and go from there.


To demonstrate the functionality a small cli was written. Fire it up with

cargo run -p cli -- help

The help dialog should then tell you how to use the CLI.

For using the tracer fire

cargo run -p cli -- trace <n> <address> | python3 cli/

The pipe interface is binary for now.

Here is how it looks if you do everything correct and you trace a memory location with a changing value:

counter plot


I need help!

Don't hesitate to file an issue, ask questions on irc, or contact @Yatekii by e-mail.

How can I help?

Please have a look at the issues or open one if you feel that something is needed.

Any contibutions are very welcome!

Also have a look at


Licensed under either of


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.

You can’t perform that action at this time.