Simple utility for programming Atmel MCUs though EDBG interface. Works on Linux, MAC and Windows.
C Makefile
Switch branches/tags
Nothing to show
Clone or download

Build Status

CMSIS-DAP programmer (Formerly Atmel EDBG programmer)

This is a simple command line utility for programming ARM-based MCUs (currently only Atmel) through CMSIS-DAP SWD interface. It works on Linux, Mac OS X and Windows. It was tested with Atmel mEDBG- and EDBG-based boards, Atmel-ICE, LPC-Link2 and IBDAP.


Binary releases can be downloaded here. Binary releases are not tested, they are a result of automated build process.

If you want to build from the source code, simply run make all and you will get a small binary, called edbg.


The dependencies are minimal. In addition to normal development tools (GCC, make, etc) you will need:

  • Windows: none
  • Linux: libudev-dev
  • Mac OS X: libhidapi (built automatically by a Makefile)


Usage: edbg [options]
  -h, --help                 print this help message and exit
  -b, --verbose              print verbose messages
  -e, --erase                perform a chip erase before programming
  -p, --program              program the chip
  -v, --verify               verify memory
  -k, --lock                 lock the chip (set security bit)
  -r, --read                 read the contents of the chip
  -f, --file <file>          binary file to be programmed or verified; also read output file name
  -t, --target <name>        specify a target type (use '-t list' for a list of supported target types)
  -l, --list                 list all available debuggers
  -s, --serial <number>      use a debugger with a specified serial number
  -c, --clock <freq>         interface clock frequency in kHz (default 16000)
  -o, --offset <offset>      offset for the operation
  -z, --size <size>          size for the operation
  -F, --fuse <options>       operations on the fuses (use '-h fuse' for details)
Fuse operations format: <actions>,<index/range>,<value>
  <actions>     - any combination of 'r' (read), 'w' (write), 'v' (verify)
  <index/range> - index of the fuse, or a range of fuses (limits separated by ':')
                  specify ':' to read all fuses
                  specify '*' to read and write values from a file
  <value>       - fuses value or file name for write and verify operations
                  immediate values must be 32 bits or less

Exact fuse bits locations and values are target-dependent.


> edbg -bpv -t atmel_cm7 -f build/Demo.bin
Debugger: ATMEL EDBG CMSIS-DAP ATML2407060200000332 02.01.0157 (S)
Target type: Cortex-M7
Target: SAM V71J21
Programming....,.. done.
Verification....... done.

Fuse operations:

  -F w,1,1                -- set fuse bit 1
  -F w,8:7,0              -- clear fuse bits 8 and 7
  -F v,31:0,0x12345678    -- verify that fuse bits 31-0 are equal to 0x12345678
  -F wv,5,1               -- set and verify fuse bit 5
  -F r,:,                 -- read all fuses
  -F wv,*,fuses.bin       -- write and verify all fuses from a file