mirror of
https://github.com/mariusgreuel/avrdude.git
synced 2025-09-28 15:05:27 +00:00
Makefile : update dependencies
avr.c : correct status led updates term.c : update status leds on write, make the address and length arguments for dump optional. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@58 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
44
term.c
44
term.c
@@ -37,6 +37,8 @@
|
||||
#include <readline/history.h>
|
||||
|
||||
#include "avr.h"
|
||||
#include "pindefs.h"
|
||||
#include "ppi.h"
|
||||
|
||||
|
||||
extern char * progname;
|
||||
@@ -69,6 +71,7 @@ int cmd_quit (int fd, struct avrpart * p, int argc, char *argv[]);
|
||||
|
||||
struct command cmd[] = {
|
||||
{ "dump", cmd_dump, "dump memory : %s [eeprom|flash] <addr> <N-Bytes>" },
|
||||
{ "read", cmd_dump, "alias for dump" },
|
||||
{ "write", cmd_write, "write memory : %s [eeprom|flash] <addr> <b1> <b2> ... <bN>" },
|
||||
{ "erase", cmd_erase, "perform a chip erase" },
|
||||
{ "sig", cmd_sig, "display device signature bytes" },
|
||||
@@ -209,8 +212,8 @@ int cmd_dump ( int fd, struct avrpart * p, int argc, char * argv[] )
|
||||
addr += len;
|
||||
}
|
||||
else {
|
||||
if (argc != 4) {
|
||||
fprintf(stderr, "Usage: dump flash|eeprom <addr> <len>\n");
|
||||
if (!((argc == 2) || (argc == 4))) {
|
||||
fprintf(stderr, "Usage: dump flash|eeprom [<addr> <len>]\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -227,23 +230,30 @@ int cmd_dump ( int fd, struct avrpart * p, int argc, char * argv[] )
|
||||
return -1;
|
||||
}
|
||||
|
||||
addr = strtoul(argv[2], &e, 0);
|
||||
if (*e || (e == argv[2])) {
|
||||
fprintf(stderr, "%s (dump): can't parse address \"%s\"\n",
|
||||
progname, argv[2]);
|
||||
return -1;
|
||||
}
|
||||
if (argc == 4) {
|
||||
addr = strtoul(argv[2], &e, 0);
|
||||
if (*e || (e == argv[2])) {
|
||||
fprintf(stderr, "%s (dump): can't parse address \"%s\"\n",
|
||||
progname, argv[2]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
len = strtol(argv[3], &e, 0);
|
||||
if (*e || (e == argv[3])) {
|
||||
fprintf(stderr, "%s (dump): can't parse length \"%s\"\n",
|
||||
progname, argv[3]);
|
||||
return -1;
|
||||
len = strtol(argv[3], &e, 0);
|
||||
if (*e || (e == argv[3])) {
|
||||
fprintf(stderr, "%s (dump): can't parse length \"%s\"\n",
|
||||
progname, argv[3]);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
maxsize = p->memsize[memtype];
|
||||
|
||||
if (argc == 2) {
|
||||
addr = 0;
|
||||
len = maxsize;
|
||||
}
|
||||
|
||||
if (addr > maxsize) {
|
||||
fprintf(stderr,
|
||||
"%s (dump): address 0x%04x is out of range for %s memory\n",
|
||||
@@ -282,6 +292,7 @@ int cmd_write ( int fd, struct avrpart * p, int argc, char * argv[] )
|
||||
unsigned short addr;
|
||||
char * buf;
|
||||
int rc;
|
||||
int werror;
|
||||
|
||||
if (argc < 4) {
|
||||
fprintf(stderr,
|
||||
@@ -344,11 +355,16 @@ int cmd_write ( int fd, struct avrpart * p, int argc, char * argv[] )
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0; i<len; i++) {
|
||||
LED_OFF(fd, PIN_LED_ERR);
|
||||
for (werror=0, i=0; i<len; i++) {
|
||||
rc = avr_write_byte(fd, p, memtype, addr+i, buf[i]);
|
||||
if (rc) {
|
||||
fprintf(stderr, "%s (write): error writing 0x%02x at 0x%04x\n",
|
||||
progname, buf[i], addr+i);
|
||||
werror = 1;
|
||||
}
|
||||
if (werror) {
|
||||
LED_ON(fd, PIN_LED_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user