Hallo,
ich hätte da mal ein Problem. avarice will bei mir einfach nicht den
Flash-Speicher eines Targets beschreiben.
Setup:
avarice 2.8 (unter Windows aus winAVR-20081124rc3, unter Linux
handcompiliert)
AVR Dragon -> JTAG -> AVR Butterfly
Sowohl mit avrdude als auch AVR Studio kann ich ohne Probleme den Flash
des Butterfly beschreiben (in genau der oben beschriebenen
Konstellation). Mit avarice gehts nicht :-(
Frage:
Hat irgendjemand schon mal mit avarice und dem Dragon erfolgreich
ein Target geflashed?
Wenn ich avarice mit "-e -p -f image.hex" aufrufe ist anschließend das
Flash absolut leer. Ohne -e ist der alte Inhalt weiterhin vorhanden und
unberührt.
Bei einem verify mit "-v" gibt es entsprechende Fehler:
1 | >avarice -g -e -p -v -f ButterflyLCDTest.hex --jtag usb
|
2 |
|
3 | AVaRICE version 2.8, Nov 7 2008 22:02:05
|
4 |
|
5 | Defaulting JTAG bitrate to 250 kHz.
|
6 |
|
7 | JTAG config starting.
|
8 | Found a device: AVRDRAGON
|
9 | Serial number: 00:a2:00:00:3f:fe
|
10 | Reported JTAG device ID: 0x9405
|
11 | Configured for device ID: 0x9405 atmega169
|
12 | JTAG config complete.
|
13 | Erasing program memory.
|
14 | Erase complete.
|
15 | Downloading FLASH image to target.................
|
16 |
|
17 | Verifying FLASH
|
18 | Error verifying target addr 0000. Expect [0x0c] Got [0x00]
|
19 | Error verifying target addr 0001. Expect [0x94] Got [0x00]
|
20 | Error verifying target addr 0002. Expect [0x6d] Got [0x00]
|
21 | Error verifying target addr 0004. Expect [0x0c] Got [0x00]
|
22 | [...1877 mal das gleiche...]
|
23 | Error verifying target addr 07a0. Expect [0xff] Got [0x00]
|
24 | Error verifying target addr 07a1. Expect [0xcf] Got [0x00]
|
25 | Error verifying target addr 07a2. Expect [0x03] Got [0x00]
|
26 | Error verifying target addr 07a3. Expect [0x0f] Got [0x00].
|
27 |
|
28 | Verification failed!
|
Wenn ich mir mit "-d" die interne Kommunikation zwischen avarice und dem
Dragon anschaue ist alles in Ordnung. Die Binärdaten werden an den
Dragon geschickt und dieser quittiert den Erhalt ohne Fehler.
Wenn ich versuche ein Image über den gdb mit 'load image.hex' zu
flashen, dann ist das verhalten noch seltsamer: Nur jeder vierte 32-Byte
Block wird ins flash geschrieben, allerdings mit 0x80 zu niedriger
Adresse. Der Block für 0x0080 landet also bei 0x0000, der Block für
0x0100 bei 0x0080 usw.
Allerdings kann man dabei im avarice debug output auch sehen, dass es zu
Synchronisationsproblemen kommt, denn dort gibt es jede Menge "recv:
timeout" und "got wrong sequence number, xx != xx+1" Meldungen.
Cheers,
Thomas