avrdude-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avrdude-dev] [bug #41561] AVRDUDE 6.0.1/USBasp doesn't write first byte


From: Joerg Wunsch
Subject: [avrdude-dev] [bug #41561] AVRDUDE 6.0.1/USBasp doesn't write first bytes of flash page
Date: Wed, 19 Nov 2014 15:49:23 +0000
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:33.0) Gecko/20100101 Firefox/33.0

Follow-up Comment #19, bug #41561 (project avrdude):

I traced the ISP traffic with a logic analyzer, and decoded
the data stream back into ISP commands.  See the attachment
for the full trace.  The bug is that the "write memory page"
command is issued twice:


Time  393.416 ms: MOSI Load program memory page, address 0x007f,  low byte,
value 0x6d
Time  393.910 ms: MOSI Load program memory page, address 0x007f, high byte,
value 0x6d
Time  394.370 ms: MOSI Write program memory page, address 0x007f
Time  394.804 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  395.218 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  395.688 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  396.131 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  396.538 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  397.013 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  397.427 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  397.903 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  398.368 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  398.805 ms: MOSI Read program memory, address 0x007f, high byte, value
0x6d
Time  399.222 ms: MOSI Write program memory page, address 0x007f
Time  399.686 ms: MOSI Read program memory, address 0x007f, high byte, value
0x6d
Time  401.510 ms: MOSI Load program memory page, address 0x0080,  low byte,
value 0x6f
Time  402.139 ms: MOSI Load program memory page, address 0x0080, high byte,
value 0x72


After filling the page buffer, the page is being programmed at time
394.370 ms.  Then, USBasp polls the page for a response != 0xff, which
indicates the end of the write operation (time 398.805 ms).  However,
just after this, it issues another "write page" command at 399.222 ms,
but then proceeds to fill the page buffer again for the next page.

Apparently, the old devices (ATmega64/128) respond to the second page
write immediately with a poll value of "OK" (i.e., they return the
correct value), yet they are still busy programming afterwards.  In
contrast, the newer devices (like ATmega1281) correctly respond again
with 0xff for the second page write operation:


Time  391.417 ms: MOSI Load program memory page, address 0x007f,  low byte,
value 0x6d
Time  391.910 ms: MOSI Load program memory page, address 0x007f, high byte,
value 0x6d
Time  392.371 ms: MOSI Write program memory page, address 0x007f
Time  392.806 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  393.218 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  393.689 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  394.130 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  394.539 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  395.014 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  395.428 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  395.903 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  396.369 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  396.806 ms: MOSI Read program memory, address 0x007f, high byte, value
0x6d
Time  397.222 ms: MOSI Write program memory page, address 0x007f
Time  397.687 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  398.130 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  398.539 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  399.013 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  399.431 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  399.903 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  400.368 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  400.805 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  401.218 ms: MOSI Read program memory, address 0x007f, high byte, value
0xff
Time  401.688 ms: MOSI Read program memory, address 0x007f, high byte, value
0x6d
Time  403.640 ms: MOSI Load program memory page, address 0x0080,  low byte,
value 0x6f
Time  404.155 ms: MOSI Load program memory page, address 0x0080, high byte,
value 0x72


which explains why they can be programmed fine.

But obviously, the second page write operation is completely unnecessary.


(file #32475, file #32476)
    _______________________________________________________

Additional Item Attachment:

File name: usbasp-trace-64.txt            Size:388 KB
File name: usbasp-trace-1281.txt          Size:394 KB


    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?41561>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]