2 Capabilities

2.1 Features

Key Features of the Nano Debugger:

  • Programming and Debugging of ARM Cortex Devices via the Industry-Standard CMSIS-DAP Interface
  • Programming and Debugging of AVR and Selected PIC16, PIC18, PIC24 and dsPIC33 Devices via CMSIS-DAP Vendor Extensions
  • Standard Virtual Serial Port (CDC)
  • Mass Storage Implementation for Reading Kit Information and Drag-and-Drop Programming of Selected Device Families
  • Data Gateway Interface for Simple Logic Analysis FunctionsBoard Control Functionality
  • Open Protocol Implementation Supported in Many IDEs and Ecosystems
  • Firmware Available for Integration into Custom Hardware Solutions Using a SAMD21 MCU

2.2 Target Devices

Programming and Debugging of ARM Cortex Devices

The Microchip Nano Debugger implements a standard CMSIS-DAP interface as specified by ARM. This means that it is inherently capable of programming and debugging any ARM Cortex-based device.

The CMSIS-DAP implementation is version 1, which uses a HID interface to communicate with the host PC.

SWO trace is not yet supported.
Tip: In a future firmware update, the Nano Debugger will support CMSIS-DAP version 2 using the bulk/vendor interface. For legacy IDE support (e.g., Microchip Studio), an older firmware must be used.
Table 2-1. ARM SWD Pinout
Target SignalPurposeDebugger Pin
SWDIOSerial Wire DataDBG0
SWCLKSerial Wire ClockDBG1
RESETTarget resetDBG3

Programming and Debugging of AVR Devices

The Microchip Nano Debugger can be used with any AVR device that has the Unified Programming and Debugging Interface (UPDI). This interface is a single-wire, asynchronous, UART-based protocol (v1), with some implementations requiring RESET as an additional signal (UPDI header version 2).
: Older AVR devices that use JTAG, debugWIRE, PDI, TPI, ISP, HVSP, or HVPP are not supported by the Nano Debugger.

Programming non-volatile memories using the UPDI interface is documented in the data sheet for the AVR device in question, while the debugging interface is not publicly distributed.

The AVR programming and debugging commands are implemented using Vendor Commands on the CMSIS-DAP specification. The command-set used for this protocol is documented in the EDBG-based Tools Protocols document and implemented in code in pyedbglib.
Tip: The Nano Debugger is an evolutionary extension of the EDBG and largely follows the same protocols, with some refinements and extensions.
Table 2-2. AVR UPDI Pinout
Target SignalPurposeDebugger Pin
UPDIProgramming and DebuggingDBG0
RESETTarget reset (where applicable)DBG3

Programming and Debugging of PIC® Devices

The Microchip Nano Debugger can be used with only a selection of the devices listed below. These devices all have the Microchip ICSP physical interface, but they differ logically between device families. This includes:
  • PIC16 devices
  • PIC18 devices
  • PIC24 devices
  • dsPIC33 devices
The Nano Debugger includes a scripting engine very similar to the one used for programming and debugging PIC devices with the MPLAB® PICkit 5 (and similar) tools. Python scripts are included in the scripts folder of the Device Family Pack for supported devices. The Python stack converts programming algorithms into bytecode for the scripting engine, which is passed to the Nano Debugger using the same Vendor Commands on the CMSIS-DAP interface.
Important: The PIC programming interface is documented in the device programming specifications, but debugging protocols are not published. The scripting language used for programming and debugging is proprietary and not published.
Table 2-3. PIC ICSP Pinout
Target SignalPurposeDebugger Pin
ICSPDATProgramming dataDBG0
ICSPCLKProgramming clockDBG1
MCLRMaster clear (reset)DBG3