Skip to content

devanlai/dap42

Repository files navigation

dap42

The dap42 project is an open-source firmware and hardware design for an inexpensive, minimalist CMSIS-DAP based debug probe based on the STM32F042F6 in a TSSOP-20 package.

This project is stable - it has been proven in the field by a few dozen users and all core functionality has been tested.

Current features

Firmware

Flash instructions

The default method to upload new firmware is via dfu-util. The Makefile includes the dfuse-flash target to invoke dfu-util. dfu-util automatically detaches the dap42 firmware and uploads the firmware through the on-chip bootloader.

To flash via another debugger, use make flash.

For detailed flashing instructions, see FLASHING.md

STM32F103

The dap42 firmware can also target the STM32F103 chip.

To build firmware for STLink/v2 knockoff designs, use the STM32F103 target or STM32F103-DFUBOOT target when using the dapboot bootloader. The CDC UART is connected to the SWIM pin (PB11) as an RX-only input.

To build firmware for the "bluepill" dev board, use the STM32F103-BLUEPILL or STM32F103-BLUEPILL-DFUBOOT targets.

The pin mapping is as follows:

Signal Pin
SWDIO PB14
SWCLK PB13
RESET PB0
TX PA2
RX PA3

Note: due to hardware limitations, all STM32F103 targets as implemented are limited to one of either the CMSIS-DAP v1 HID interface or the CMSIS-DAP v2 bulk interface. By default, all STM32F103 targets use the v2 bulk interface. If you prefer the v1 HID interface, use the STM32F103-HID targets instead of STM32F103.

Usage

OpenOCD

The dap42 firmware has been tested with gdb and OpenOCD on STM32F042 (of course), STM32F103, and LPC11C14 targets.

In general, the probe can be used with OpenOCD just by specifying the cmsis-dap interface:

openocd -f interface/cmsis-dap.cfg -f your_config.cfg -c "some inline command"

Example OpenOCD configurations can be found under the openocd/ folder.

MCUXpresso

The default probe detection rules used by MCUXpresso (formerly LPCXpresso) will not auto-discover generic CMSIS-DAP probes. To use the dap42 probe with MCUXpresso, you can modify the detection rules by editing probetable.csv in your MCUXpresso installation.

For MCUXpresso version 11.4 or newer, edit probetable.csv under ide/plugins/com.mcuxpresso.tools.bin.<...>/binaries/Scripts:

0x1209, 0xDA42, 64, 1, 0, 0, 0, "", 0x0000, -1, -1

In older versions, the CSV format has one fewer entry at the end:

0x1209, 0xDA42, 64, 1, 0, 0, 0, "", 0x0000, -1

Please note: in the most recent version of MCUXpresso, probetable.csv no longer exists and does not support custom CMSIS-DAP probes.

USB-serial

Windows

On Windows 10, the serial port works without requiring additional configuration.

For Windows XP through Windows 7, the DAP42CDC.inf .inf file can be used to load the generic USB serial driver.

Mac OSX

On Mac OSX version 10.7 and later, the serial port should work without requiring any additional configuration.

Linux

On Linux, the serial port should be detected without requiring additional configuration. Depending on your distro settings, the modem manager may attempt to grab the serial port and use it as a modem. To prevent this, you can define a custom udev rule to ensure that the modem manager ignores the debugger.

ATTRS{idVendor}=="1209" ATTRS{idProduct}=="da42", ENV{ID_MM_DEVICE_IGNORE}="1"

Bulk interface

On some targets, the CMSIS-DAP v2 bulk USB interface is now enabled by default. In general on Windows it should automatically bind the generic WinUSB driver through MS OS descriptors, but this may not work on very old versions of Windows or on machines where the USB VID/PID pair for dap42 has already been associated with an older version of firmware without bulk interfaces.

You can use Zadig to manually bind the WinUSB driver of the bulk interface (also the DFU runtime interface, if using a bootloader).

Acknowledgements

The dap42 project was inspired by the Dapper Mime CMSIS-DAP proof-of-concept project.

The dap42 USB VID/PID pair is 1209/DA42, allocated through the pid.codes open-source USB PID program.

Licensing

All contents of the dap42 project are licensed under terms that are compatible with the terms of the GNU Lesser General Public License version 3.

Non-libopencm3 related portions of the dap42 project are licensed under the less restrictive ISC license, except where otherwise specified in the headers of specific files.

See the LICENSE file for full details.