Index: avrpart.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/avrpart.c,v retrieving revision 1.4 diff -u -r1.4 avrpart.c --- avrpart.c 22 Dec 2004 01:52:45 -0000 1.4 +++ avrpart.c 12 Feb 2005 16:41:39 -0000 @@ -292,23 +292,23 @@ char * optr; if (m == NULL) { - fprintf(f, - "%s Page Polled\n" - "%sMemory Type Paged Size Size #Pages MinW MaxW ReadBack\n" - "%s----------- ------ ------ ---- ------ ----- ----- ---------\n", + fprintf(f, + "%s Block Poll Page Polled\n" + "%sMemory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack\n" + "%s----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------\n", prefix, prefix, prefix); } else { if (verbose > 2) { fprintf(f, - "%s Page Polled\n" - "%sMemory Type Paged Size Size #Pages MinW MaxW ReadBack\n" - "%s----------- ------ ------ ---- ------ ----- ----- ---------\n", + "%s Block Poll Page Polled\n" + "%sMemory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack\n" + "%s----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------\n", prefix, prefix, prefix); } fprintf(f, - "%s%-11s %-6s %6d %4d %5d %5d %5d 0x%02x 0x%02x\n", - prefix, m->desc, + "%s%-11s %4d %5d %5d %4d %-6s %6d %4d %6d %5d %5d 0x%02x 0x%02x\n", + prefix, m->desc, m->mode, m->delay, m->blocksize, m->pollindex, m->paged ? "yes" : "no", m->size, m->page_size, @@ -486,6 +486,13 @@ "%sRETRY pulse : %s\n" "%sserial program mode : %s\n" "%sparallel program mode : %s\n" + "%sTimeout : %d\n" + "%sStabDelay : %d\n" + "%sCmdexeDelay : %d\n" + "%sSyncLoops : %d\n" + "%sByteDelay : %d\n" + "%sPollIndex : %d\n" + "%sPollValue : 0x%02x\n" "%sMemory Detail :\n\n", prefix, p->desc, prefix, p->chip_erase_delay, @@ -496,6 +503,13 @@ prefix, (p->flags & AVRPART_SERIALOK) ? "yes" : "no", prefix, (p->flags & AVRPART_PARALLELOK) ? ((p->flags & AVRPART_PSEUDOPARALLEL) ? "psuedo" : "yes") : "no", + prefix, p->timeout, + prefix, p->stabdelay, + prefix, p->cmdexedelay, + prefix, p->synchloops, + prefix, p->bytedelay, + prefix, p->pollindex, + prefix, p->pollvalue, prefix); px = prefix; Index: avrpart.h =================================================================== RCS file: /cvsroot/avrdude/avrdude/avrpart.h,v retrieving revision 1.16 diff -u -r1.16 avrpart.h --- avrpart.h 22 Dec 2004 01:52:45 -0000 1.16 +++ avrpart.h 12 Feb 2005 16:41:39 -0000 @@ -94,6 +94,17 @@ this pin (PIN_AVR_*) */ unsigned flags; /* see AVRPART_ masks */ + int timeout; /* stk500 v2 xml file parameter */ + int stabdelay; /* stk500 v2 xml file parameter */ + int cmdexedelay; /* stk500 v2 xml file parameter */ + int synchloops; /* stk500 v2 xml file parameter */ + int bytedelay; /* stk500 v2 xml file parameter */ + int pollindex; /* stk500 v2 xml file parameter */ + unsigned char pollvalue; /* stk500 v2 xml file parameter */ + int predelay; /* stk500 v2 xml file parameter */ + int postdelay; /* stk500 v2 xml file parameter */ + int pollmethod; /* stk500 v2 xml file parameter */ + OPCODE * op[AVR_OP_MAX]; /* opcodes */ LISTID mem; /* avr memory definitions */ @@ -115,6 +126,12 @@ back on, see errata http://www.atmel.com/atmel/acrobat/doc1280.pdf */ unsigned char readback[2]; /* polled read-back values */ + + int mode; /* stk500 v2 xml file parameter */ + int delay; /* stk500 v2 xml file parameter */ + int blocksize; /* stk500 v2 xml file parameter */ + int pollindex; /* stk500 v2 xml file parameter */ + unsigned char * buf; /* pointer to memory buffer */ OPCODE * op[AVR_OP_MAX]; /* opcodes */ } AVRMEM; Index: config_gram.y =================================================================== RCS file: /cvsroot/avrdude/avrdude/config_gram.y,v retrieving revision 1.39 diff -u -r1.39 config_gram.y --- config_gram.y 22 Dec 2004 01:52:45 -0000 1.39 +++ config_gram.y 12 Feb 2005 16:41:40 -0000 @@ -121,6 +121,22 @@ %token K_NO %token K_YES +/* stk500 v2 xml file parameters */ +%token K_TIMEOUT +%token K_STABDELAY +%token K_CMDEXEDELAY +%token K_SYNCHLOOPS +%token K_BYTEDELAY +%token K_POLLVALUE +%token K_POLLINDEX +%token K_PREDELAY +%token K_POSTDELAY +%token K_POLLMETHOD +%token K_MODE +%token K_DELAY +%token K_BLOCKSIZE + + %token TKN_COMMA %token TKN_EQUAL %token TKN_SEMI @@ -483,6 +499,69 @@ free_tokens(2, $1, $3); } | + + K_TIMEOUT TKN_EQUAL TKN_NUMBER + { + current_part->timeout = $3->value.number; + free_token($3); + } | + + K_STABDELAY TKN_EQUAL TKN_NUMBER + { + current_part->stabdelay = $3->value.number; + free_token($3); + } | + + K_CMDEXEDELAY TKN_EQUAL TKN_NUMBER + { + current_part->cmdexedelay = $3->value.number; + free_token($3); + } | + + K_SYNCHLOOPS TKN_EQUAL TKN_NUMBER + { + current_part->synchloops = $3->value.number; + free_token($3); + } | + + K_BYTEDELAY TKN_EQUAL TKN_NUMBER + { + current_part->bytedelay = $3->value.number; + free_token($3); + } | + + K_POLLVALUE TKN_EQUAL TKN_NUMBER + { + current_part->pollvalue = $3->value.number; + free_token($3); + } | + + K_POLLINDEX TKN_EQUAL TKN_NUMBER + { + current_part->pollindex = $3->value.number; + free_token($3); + } | + + K_PREDELAY TKN_EQUAL TKN_NUMBER + { + current_part->predelay = $3->value.number; + free_token($3); + } | + + K_POSTDELAY TKN_EQUAL TKN_NUMBER + { + current_part->postdelay = $3->value.number; + free_token($3); + } | + + K_POLLMETHOD TKN_EQUAL TKN_NUMBER + { + current_part->pollmethod = $3->value.number; + free_token($3); + } | + + + K_SERIAL TKN_EQUAL yesno { if ($3->primary == K_YES) @@ -630,6 +709,32 @@ free_token($3); } | + + K_MODE TKN_EQUAL TKN_NUMBER + { + current_mem->mode = $3->value.number; + free_token($3); + } | + + K_DELAY TKN_EQUAL TKN_NUMBER + { + current_mem->delay = $3->value.number; + free_token($3); + } | + + K_BLOCKSIZE TKN_EQUAL TKN_NUMBER + { + current_mem->blocksize = $3->value.number; + free_token($3); + } | + + K_POLLINDEX TKN_EQUAL TKN_NUMBER + { + current_mem->pollindex = $3->value.number; + free_token($3); + } | + + opcode TKN_EQUAL string_list { { int opnum; Index: lexer.l =================================================================== RCS file: /cvsroot/avrdude/avrdude/lexer.l,v retrieving revision 1.30 diff -u -r1.30 lexer.l --- lexer.l 22 Dec 2004 01:52:45 -0000 1.30 +++ lexer.l 12 Feb 2005 16:41:40 -0000 @@ -115,19 +115,20 @@ exit(1); } } +avr910 { yylval=NULL; return K_AVR910; } +avr910_devcode { yylval=NULL; return K_AVR910_DEVCODE; } bank_size { yylval=NULL; return K_PAGE_SIZE; } banked { yylval=NULL; return K_PAGED; } baudrate { yylval=NULL; return K_BAUDRATE; } bs2 { yylval=NULL; return K_BS2; } buff { yylval=NULL; return K_BUFF; } +butterfly { yylval=NULL; return K_BUTTERFLY; } chip_erase_delay { yylval=NULL; return K_CHIP_ERASE_DELAY; } desc { yylval=NULL; return K_DESC; } default_parallel { yylval=NULL; return K_DEFAULT_PARALLEL; } default_programmer { yylval=NULL; return K_DEFAULT_PROGRAMMER; } default_serial { yylval=NULL; return K_DEFAULT_SERIAL; } devicecode { yylval=NULL; return K_DEVICECODE; } -stk500_devcode { yylval=NULL; return K_STK500_DEVCODE; } -avr910_devcode { yylval=NULL; return K_AVR910_DEVCODE; } eeprom { yylval=NULL; return K_EEPROM; } errled { yylval=NULL; return K_ERRLED; } flash { yylval=NULL; return K_FLASH; } @@ -155,12 +156,24 @@ serial { yylval=NULL; return K_SERIAL; } size { yylval=NULL; return K_SIZE; } stk500 { yylval=NULL; return K_STK500; } -avr910 { yylval=NULL; return K_AVR910; } -butterfly { yylval=NULL; return K_BUTTERFLY; } +stk500_devcode { yylval=NULL; return K_STK500_DEVCODE; } type { yylval=NULL; return K_TYPE; } vcc { yylval=NULL; return K_VCC; } vfyled { yylval=NULL; return K_VFYLED; } +timeout { yylval=NULL; return K_TIMEOUT; } +stabdelay { yylval=NULL; return K_STABDELAY; } +cmdexedelay { yylval=NULL; return K_CMDEXEDELAY; } +synchloops { yylval=NULL; return K_SYNCHLOOPS; } +bytedelay { yylval=NULL; return K_BYTEDELAY; } +pollvalue { yylval=NULL; return K_POLLVALUE; } +pollindex { yylval=NULL; return K_POLLINDEX; } +predelay { yylval=NULL; return K_PREDELAY; } +postdelay { yylval=NULL; return K_POSTDELAY; } +pollmethod { yylval=NULL; return K_POLLMETHOD; } +mode { yylval=NULL; return K_MODE; } +delay { yylval=NULL; return K_DELAY; } +blocksize { yylval=NULL; return K_BLOCKSIZE; } dedicated { yylval=new_token(K_DEDICATED); return K_DEDICATED; } io { yylval=new_token(K_IO); return K_IO; }