DebugWire
debugWIRE
Category: Debug/Programming
Overview
debugWIRE is Atmel's single-wire debugging interface for small AVR microcontrollers (ATtiny, ATmega) that lack JTAG. It reuses the RESET pin for bidirectional serial communication, enabling run-control debugging with minimal pin sacrifice.
1. Theory & Fundamentals
- Single wire: Uses RESET/dW pin (active low when not debugging)
- Communication: Half-duplex, ~7.8 kbps to ~250 kbps (derived from CPU clock/128)
- Activates: Write DWEN fuse bit; then debugWIRE enabled on next power cycle
- Capabilities: Halt, step, run, read/write registers and memory
- Break: Software breakpoints via BREAK instruction in flash
- Tools: Atmel-ICE, JTAGICE mkII, Dragon; AVR Studio / MPLAB X
- Limitation: RESET pin loses reset function when dW enabled
2. Frame / Packet Structure
Protocol-specific to debugWIRE.
See official documentation for complete frame formats.
3. Protocol Mechanics
- Standard Debug/Programming mechanics apply
- See hardware implementation for specific protocol flow
4. Hardware Implementation
- Dedicated hardware probe/interface required
- Standard MCU/embedded connection
5. Register-Level / Configuration
// Enable debugWIRE: Set DWEN fuse via ISP FIRST
// avrdude -c usbasp -p attiny85 -U hfuse:w:0x9F:m // Set DWEN
// Then connect Atmel-ICE debugWIRE to RESET pin
// In AVR Studio: select debugWIRE interface, connect
// To disable dW and restore RESET:
// In AVR Studio: Debug โ Disable debugWIRE and Close
// Or: avrdude -c atmelice -p attiny85 -U hfuse:w:0xDF:m after ISP override
6. Driver / Software Development
- Implement send/receive based on protocol specification
- Use official SDK or library where available
7. Debugging & Testing
- Use official debug tools for analysis
- Logic analyzer for signal verification
- Common issues: Timing, voltage levels, clock configuration
8. Real-World Applications
- MCU programming in production
- In-system firmware updates
- Debug during development
- Post-mortem fault analysis
- Test automation
9. Advanced Topics & Edge Cases
- Advanced features depend on specific MCU family
- Security lock bits and read protection
- Production programming automation
10. Standards & Variants
| Interface | MCU Family |
|---|---|
| debugWIRE | See overview |
๐ก Practical Examples
Ex 1: Basic usage โ connect probe and program device.
Ex 2: Read memory contents during debug session.
Ex 3: Set breakpoint and inspect register state.
๐งช Practice Questions
Beginner: 1) What MCUs use debugWIRE? 2) Pin count? 3) Programming vs debugging? 4) Required tools? 5) Entry sequence?
Intermediate: 1) Protocol timing. 2) Read/write commands. 3) Breakpoint types. 4) Security bypass? 5) Production programming flow.
Advanced: 1) Custom programmer implementation. 2) Automated test via debugWIRE. 3) Unlock locked device. 4) CI/CD integration. 5) Multi-device programming.
Checklist
- [ ] Connect debugWIRE probe correctly
- [ ] Program flash via debugWIRE
- [ ] Set hardware breakpoint
- [ ] Step through code
- [ ] Read/write memory
- [ ] Configure fuses/config bits
- [ ] Automate with CLI tool
- [ ] Handle security/lock bits