From d6459a2382ad67f8981a6f43e2f3312947063a7a Mon Sep 17 00:00:00 2001 From: joerg_wunsch Date: Mon, 2 Sep 2013 06:43:06 +0000 Subject: [PATCH] Add -vvv trace code to the non-TPI functions in USBasp, too. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1192 81a1dc3b-b13d-400b-aceb-764788c761c2 --- ChangeLog | 4 ++++ NEWS | 3 +++ usbasp.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4865dbd1..f46ceb62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-09-02 Joerg Wunsch + + * usbasp.c: Add trace output for -vvv to non-TPI functions, too. + 2013-09-01 Joerg Wunsch * usbasp.c (usbasp_tpi_paged_load): Calculate correct diff --git a/NEWS b/NEWS index 3f43bda1..650d41b3 100644 --- a/NEWS +++ b/NEWS @@ -148,6 +148,9 @@ Current: programmer types now, new programmers will update only the table in pgm_type.c.) + * The USBasp programmer implementation now supports detailed traces + with -vvv, and device communication traces with -vvvv. + * Internals: - Restructuring and compacting programmer definition part of diff --git a/usbasp.c b/usbasp.c index c51fcc21..ae940ebb 100644 --- a/usbasp.c +++ b/usbasp.c @@ -456,6 +456,10 @@ static int didUsbInit = 0; /* Interface - prog. */ static int usbasp_open(PROGRAMMER * pgm, char * port) { + if (verbose > 2) + fprintf(stderr, "%s: usbasp_open(\"%s\")\n", + progname, port); + /* usb_init will be done in usbOpenDevice */ if (usbOpenDevice(&PDATA(pgm)->usbhandle, pgm->usbvid, pgm->usbvendor, pgm->usbpid, pgm->usbproduct) != 0) { @@ -509,6 +513,9 @@ static int usbasp_open(PROGRAMMER * pgm, char * port) static void usbasp_close(PROGRAMMER * pgm) { + if (verbose > 2) + fprintf(stderr, "%s: usbasp_close()\n", progname); + if (PDATA(pgm)->usbhandle!=NULL) { unsigned char temp[4]; memset(temp, 0, sizeof(temp)); @@ -561,6 +568,8 @@ static int usbasp_initialize(PROGRAMMER * pgm, AVRPART * p) unsigned char res[4]; IMPORT_PDATA(pgm); + if (verbose > 2) + fprintf(stderr, "%s: usbasp_initialize()\n", progname); /* get capabilities */ memset(temp, 0, sizeof(temp)); @@ -624,16 +633,29 @@ static int usbasp_initialize(PROGRAMMER * pgm, AVRPART * p) static int usbasp_spi_cmd(PROGRAMMER * pgm, unsigned char cmd[4], unsigned char res[4]) { + if (verbose > 2) + fprintf(stderr, "%s: usbasp_cpi_cmd(0x%02x, 0x%02x, 0x%02x, 0x%02x)%s", + progname, cmd[0], cmd[1], cmd[2], cmd[3], + verbose > 3? "...\n": ""); + /* Do not use 'sizeof(res)'. => message from cppcheck: Using sizeof for array given as function argument returns the size of pointer. */ int nbytes = usbasp_transmit(pgm, 1, USBASP_FUNC_TRANSMIT, cmd, res, 4); if(nbytes != 4){ + if (verbose == 3) + putc('\n', stderr); + fprintf(stderr, "%s: error: wrong responds size\n", progname); return -1; } + if (verbose > 2) + if (verbose > 3) + fprintf(stderr, "%s: usbasp_cpi_cmd()", progname); + fprintf(stderr, " => 0x%02x, 0x%02x, 0x%02x, 0x%02x\n", + res[0], res[1], res[2], res[3]); return 0; } @@ -647,6 +669,10 @@ static int usbasp_spi_program_enable(PROGRAMMER * pgm, AVRPART * p) cmd[0] = 0; + if (verbose > 2) + fprintf(stderr, "%s: usbasp_program_enable()\n", + progname); + int nbytes = usbasp_transmit(pgm, 1, USBASP_FUNC_ENABLEPROG, cmd, res, sizeof(res)); @@ -664,6 +690,10 @@ static int usbasp_spi_chip_erase(PROGRAMMER * pgm, AVRPART * p) unsigned char cmd[4]; unsigned char res[4]; + if (verbose > 2) + fprintf(stderr, "%s: usbasp_chip_erase()\n", + progname); + if (p->op[AVR_OP_CHIP_ERASE] == NULL) { fprintf(stderr, "chip erase instruction not defined for part \"%s\"\n", p->desc); @@ -691,6 +721,11 @@ static int usbasp_spi_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, unsigned char *buffer = m->buf + address; int function; + if (verbose > 2) + fprintf(stderr, + "%s: usbasp_program_paged_load(\"%s\", 0x%x, %d)\n", + progname, m->desc, address, n_bytes); + if (strcmp(m->desc, "flash") == 0) { function = USBASP_FUNC_READFLASH; } else if (strcmp(m->desc, "eeprom") == 0) { @@ -756,6 +791,11 @@ static int usbasp_spi_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, unsigned char blockflags = USBASP_BLOCKFLAG_FIRST; int function; + if (verbose > 2) + fprintf(stderr, + "%s: usbasp_program_paged_write(\"%s\", 0x%x, %d)\n", + progname, m->desc, address, n_bytes); + if (strcmp(m->desc, "flash") == 0) { function = USBASP_FUNC_WRITEFLASH; } else if (strcmp(m->desc, "eeprom") == 0) { @@ -841,6 +881,11 @@ static int usbasp_spi_set_sck_period(PROGRAMMER *pgm, double sckperiod) unsigned char res[4]; unsigned char cmd[4]; + if (verbose > 2) + fprintf(stderr, + "%s: usbasp_spi_set_sck_period(%g)\n", + progname, sckperiod); + memset(cmd, 0, sizeof(cmd)); memset(res, 0, sizeof(res));