DAPLink is firmware that runs on a microcontroller that is connected according to a Hardware Interface Circuit (HIC) guideline. This provides methods to program and debug an application running on ARM processors via JTAG or SWD. The interface firmware exposes a USB composite device to the host OS with CDC, HID and MSC endpoints. These endpoints are critical when developing software for microcontrollers. Description of endpoints:
- MSC - drag-n-drop programming flash memory
- CDC - virtual com port for log, trace and terminal emulation
- HID - CMSIS-DAP compliant debug channel
- DFU - USB DFU programming flash memory
For more detailed usability information see the users guide.
This fork/experimental branch adds a USB DFU interface that can be used to flash targets from the browser using WebUSB. The DFU interface can be used standalone with native tools like dfu-util.
Whitelisted origins can access the DFU interface via WebUSB. Currently, only two demos can access the DFU interface.
- https://devanlai.github.io/webdfu/dfu-util/ - a dfu-util-like utility
- https://devanlai.github.io/webdfu/mbed-download/ - a demo to build and flash mbed programs
- This has only been tested on a limited selection of DAPLink hardware:
- LPC11U35 interface chips, specifically with the Seeed Studio Arch Max board.
- STM32F103RB interface chips, specifically the embedded STLink/v2-1 on the Nucleo F103RB board
- This has only been tested on Linux and macOS - Windows will almost certainly require fiddling with Zadig to load an appropriate WinUSB/libusb driver for the DFU interface.
- The DFU interface cannot be accessed by Chrome on Windows - Chrome's copy of libusb is missing upstream patches to handle control transfers to composite WinUSB devices more robustly.
There are many ARM microcontroller-based Hardware Interface Circuits (HICs) that DAPLink interface firmware runs on. These can be found as standalone boards or as part of development kits. Known supported circuits are based on and IO compatible with:
- Segger J-Link OB (Atmel SAM3U) - coming soon
- Maxim Epsilon (MAX32550) - coming soon
- NXP OpenSDA
- NXP Link based on LPC11U35 or LPC4322
There are many board builds (board = HIC + target combination) created from this repository. Quarterly releases will contain new features and bugfixes. Standalone bugfixes are released once reported, verified and fixed. Both quarterly and bugfix releases will result in the build number being incremented; however, standalone bugfix release builds may only be made for affected boards. Release notes and all release builds can be found under releases. Products shipping with or compatible with this firmware should have instructions on how to upgrade and the most up to date release build on the product page.
Look for an interesting feature or defect under issues or start a new thread to engage with the developers and maintainers. You must sign the contributor agreement before any contributions can be accepted.
Information for setting up a development environment, running the tests or creating a release build can be found in the developers guide.