Quick description of avr-gdb. Today avr-gdb works only as in circuit debugger because I don't have a simulator. avr-gdb needed in monitor. Monitor consists of two parts: 1) AVR part (0x1d0 bytes of code and 0x40 bytes of data); 2) PC part. PC part of monitor can (with help of AVR part of monitor): - read/write AVR registers (include SREG, PC and SP); - read/write AVR memory; - read/write AVR IO. - put/clear up to 8 breakpoints; - step one instruction. AVR part of monitor written in C (avr-gcc). AVR part of monitor stops only on source coded breakpoints (`TRAP()'). After stopping you can work with the AVR part (with chip). PC and AVR connected as: ------------------------------------------------------------- Connect AVR with parallel port AVR Parallel Port Signal name Pin Pin Signal name GND 20 ------------ 19 GND GND 20 ------------ 21 GND SCK 8 ------------ 1 Strobe MOSI 6 ------------ 12 Out of paper MISO 7 ------------ 11 Busy Reset 9 ------------ 16 Init Connect parallel port pin 12 with parallel port pin 2 through diod Out of paper 12 ----|>|--- 2 Data 0 This connection allow to use send_byte and program AVR flash with Uros Platise `uisp' in `-dapa' mode. ---------------------------------------------------------------------- How the avr-gdb works: The avr-gdb connects with monitor (PC part of monitor) through TCP After connection: program in AVR runs until TRAP() executed. (TRAP () is a source coded breakpoint). After a AVR program trap's you can : - watch any global variables; - disassemble functions; - watch registers and local variables; - up's and down's by stack; - list source texts; - run any function with parameters in AVR chip; - any thing which GDB can; - step one instruction; - put breakpoints (up to 8); - clear breakpoints; - continue execution until next TRAP(); - stepping until TRAP () or any breakpoint; continue AVR program only if no breakpoint sets (gdb command `c'). stepping AVR program if one or more breakpoint sets (gdb command `c'). Under emacs all this works as a native PC debugging except source coded TRAP()'s. You can use any gdb GUI frontend: xxgdb, Source Navigator, ... ----------------------------------------------------------------------- How to run 1. Compile a C program with `-g' command line option; 2. Write this program to AVR Flash. I'm use: avr-ld --oformat=srec a.out -o a.srec uisp -dapa --erase uisp -dapa --upload if=a.srec -v=3 3. Run AVR monitor. (`mon localhost' or `remon localhost'); 4. Run avr-gdb; 5. Type following commands under avr-gdb: file a.out target avr localhost:11111 6. The program in AVR chip will be executed until the program reaches a source coded breakpoint ( TRAP(); ).