Adding Bus Pirate/..-style debugging & probing features to regular MCU boards such as the Raspberry Pi Pico
Go to file
Triss 071a67b39c clean up a bit 2021-08-02 01:05:07 +02:00
CMSIS_5@13b9f72f21 cherry-pick more haskal stuff, update CMSIS-DAP to 5.0.8 release, fix warnings 2021-06-28 21:42:18 +02:00
bsp ugh, still not working. im seeing activity using my dmm so idk what exactly is wrong 2021-08-01 23:09:00 +02:00
cmake move pico_sdk_import.cmake to a cmake subdir 2021-06-28 20:10:01 -04:00
host clean up a bit 2021-08-02 01:05:07 +02:00
libco started on new usb itf, it compiles and it lsusbs 2021-06-30 19:32:22 +02:00
scripts cherry-pick more haskal stuff, update CMSIS-DAP to 5.0.8 release, fix warnings 2021-06-28 21:42:18 +02:00
src clean up a bit 2021-08-02 01:05:07 +02:00
tinyusb@d49938d0f5 update to use sdk 1.2.0 2021-06-13 20:07:54 +02:00
.clang-format clang formatting stuff 2021-06-29 01:03:02 +02:00
.gitignore started on new usb itf, it compiles and it lsusbs 2021-06-30 19:32:22 +02:00
.gitmodules was advised to directly use CMSIS_5 submodule 2021-02-01 10:25:49 -06:00
CMakeLists.txt mode 3 (jtag etc pinout scan): firmware side of things 2021-08-01 04:18:29 +02:00
COPYING add license files 2021-06-28 22:13:17 +02:00
LICENSE add license files 2021-06-28 22:13:17 +02:00
LICENSE.dappermime add license files 2021-06-28 22:13:17 +02:00
LICENSE.picoprobe-sump update README 2021-07-30 01:39:09 +02:00
README.md move docs to wiki 2021-07-30 20:30:15 +02:00

README.md

DapperMime-JTAG

(name is still WIP)

This project attempts to add Bus Pirate/...-like functionality to a number of MCUs, mainly the Raspberry Pi Pico. It was originally based on Dapper Mime, an SWD debugger probe implementation, with the goal of adding JTAG support as well. However, more and more features got added over time.

Variants

Most support and development effort goes to the RP2040/Pico, but, due to the projects' structure still being based on Dapper Mime's, it is relatively easy to add support for another MCU/board. Any MCU supported by TinyUSB should work. Features can also be disabled per MCU.

Adding support for another MCU is a matter of adding another subfolder in the ./bsp folder, implementing the functionality (which only concerns itself with sending commands to the hardware, protocol parsing is done by shared code), and handling it in the CMakeFiles.txt file.

Building

After initially downloading this project's code, issue the following command to download TinyUSB and CMSIS 5 code:

git submodule update --init --recursive

Compilation is done using CMake:

mkdir cmake-build && cd cmake-build
cmake -DBOARD=raspberry_pi_pico -DFAMILY=rp2040 -DCMAKE_BUILD_TYPE=RelWithDebInfo ..

BOARD and FAMILY should correspond to those used in the TinyUSB hw folder, and with the folders used in ./bsp as well.

A non-exhaustive list of possible BOARD/FAMILY combinations:

FAMILY BOARD description notes
rp2040 raspberry_pi_pico Raspberry Pi Pico default

Notes on compiling for the RP2040 Pico

If you have the Pico SDK installed on your system, and the PICO_SDK_PATH environment variable is specified properly, you can omit the --recursive flag in the git submodule invocation (to avoid many many git clones), and pass the -DUSE_SYSTEMWIDE_PICOSDK=On flag to CMake, too.

Other options are:

  • -DPICO_NO_FLASH=[On|Off]: store the binary in RAM only, useful for development.
  • -DPICO_COPY_TO_RAM=[On|Off]: write to flash, but always run from RAM
  • -DUSE_USBCDC_FOR_STDIO=[On|Off]: export an extra USB-CDC interface for debugging

Usage

For detailed usage notes, please visit the wiki.

License

TinyUSB is licensed under the MIT license.

ARM's CMSIS 5 code is licensed under the Apache 2.0 license.

libco is licensed under the ISC license

Some code has been incorporated from the DapperMime and picoprobe-sump projects. These respective licenses can be found in this and this file.

TODO