// the find
ARMmbed/DAPLink
DAPLink is the interface firmware that runs on the secondary MCU found on nearly every ARM development board — the chip that gives you drag-and-drop flashing, a virtual serial port, and CMSIS-DAP debugging over USB. If you've ever plugged in a NUCLEO, micro:bit, or FRDM board and had it show up as a USB drive, this is what's running on it. It's for embedded developers who want to understand or customize their debug probe, or hardware vendors building their own development kits.
The USB composite device design is well thought out — MSC, CDC, and CMSIS-DAPv2 (WinUSB bulk, driverless on Windows 10+) all coexist without driver headaches on modern systems. The YAML-based records system for boards, HICs, and families is a clean separation of concerns that makes adding a new target a matter of config rather than code surgery. Board support breadth is genuinely impressive: NXP, STM32, Nordic, Maxim, Nuvoton, Renesas all covered with proper per-HIC HAL abstractions. The bootloader/interface split means you can update interface firmware without bricking the board, which is the right call for something shipping in hardware products.
Last push was February 2025 and the issues list has open bugs going back years — ARM has clearly shifted priority away from this project. The build system requires a specific Python + pip environment with the `requirements.txt` toolchain, and the developer guide warns about toolchain version sensitivity; getting a working build on a fresh machine is more friction than it should be for a C firmware project. RISC-V support is absent entirely, which matters more every year. The drag-and-drop flashing implementation has known edge cases with file system behavior differences across operating systems (Windows, macOS automount behavior) that have never been fully resolved — search the issues for 'macOS' and brace yourself.