Hallo, ich bin auf der Suche nach einem makefile für WinAVR, in dem anstelle von AVRDUDE, die bei Atmel's AVR-Studio mitgelieferte jtagiceii.exe verwendet wird. Mein Problem ist, das ich auf AVR-Studio zum Debuggen angewiesen bin und dieses die mitgelieferten USB-Treiber haben möchte. Andererseits möchte ich die 'make program' Funktion die mir WinAVR bietet auch nutzen. Immer hin- und herschalten zwischen den Programmen finde ich irgendwie ermüdend. Hat sich schon einmal jemand dieses Problems angenommen? MfG Wolfgang
Das sieht mir sehr gut machbar aus. Auf der Kommandozeile kann man ja mit "jtagiceii.exe -h" eine Liste der möglichen Optionen anzeigen lassen
1 | Usage: jtagiceii.exe [commands] [options] |
2 | Commands: |
3 | -h, -? Print this help. |
4 | -he Print exit codes. |
5 | -e Erase device. |
6 | -f <fusebytes> Write high/low fuse bytes. The LSB of fusebytes will be |
7 | written to the low fuse byte, and the MSB will be written |
8 | to the high fuse byte. |
9 | -j <ID> Read JTAG ID string. If an optional ID is specified, the |
10 | program will terminate if the read ID differs. |
11 | -l <lockbyte> Set the lock byte to the specified value. |
12 | -p[f|e|b] Program FLASH (-pf), EEPROM (-pe) or both (-pb) memories. |
13 | Requires input files specified with the -if (FLASH) |
14 | and/or -ie (EEPROM) options. |
15 | -q Read fuse bytes. If the selected device has extended fuse, |
16 | it will be also be read. |
17 | -r[f|e|b] Read FLASH (-rf), EEPROM (-re) or both (-rb) memories. |
18 | Requires output files specified with the -of (FLASH) and/or |
19 | -oe (EEPROM) options. |
20 | -s Read signature bytes. |
21 | -v[f|e|b] Verify FLASH (-vf), EEPROM (-ve) or both (vb) memories. |
22 | Requires input files specified with the -if (FLASH) and/or |
23 | -ie (EEPROM) options. |
24 | -y Read lock byte. |
25 | -E <ext.fuse> Write extended fuse byte. |
26 | -F <fusebytes> Verify high/low fuse bytes. The LSB of fusebytes will be |
27 | compared to the low fuse byte, and the MSB will be compared |
28 | to the high fuse byte. |
29 | -L <lockbyte> Verify the lock byte. |
30 | -G <ext.fuse> Verify the extended fuse byte against the given value. |
31 | -O <address> Read oscillator calibration byte. Address is location of byte |
32 | as specified in the device's data sheet. |
33 | -S[f|e] <address> |
34 | Write oscillator calibration byte read with -O or -Z to given |
35 | location in FLASH (-Sf) or EEPROM (-Se). |
36 | -W Disable debugWIRE interface, enabling ISP mode. Only available |
37 | for debugWIRE devices. |
38 | -Y Perform the oscillator calibration sequence. See appnote |
39 | AVR053 for more information. |
40 | -Z <address> Load value from address in EEPROM prior to erasing the device. |
41 | This value can be written to FLASH or EEPROM again with |
42 | the -S[f|e] command. |
43 | |
44 | Options: |
45 | -ae <start>,<end> |
46 | Specify address range for reading EEPROM memory. Default is |
47 | entire memory. |
48 | -af <start>,<end> |
49 | Specify address range for reading FLASH memory. Default is |
50 | entire memory. |
51 | -c <port> Specify port to connect to. Can be USB, COM1-8 or |
52 | Auto (default). With USB, the emulator serial number can also |
53 | be specified: -c USB:00A00000002C |
54 | -d <device> [required] Specify the type of device. |
55 | -ie <file> Specify input file for programming EEPROM memory. |
56 | -if <file> Specify input file for programming FLASH memory. |
57 | -m[i|j] Choose programming mode: ISP (-mi) or JTAG (-mj) (default). |
58 | -oe <file> Specify output file for reading EEPROM memory. |
59 | -of <file> Specify output file for reading FLASH memory. |
60 | -z No progress indicator. Useful when redirecting output to file. |
61 | -B <baudrate> Speficy baudrate (115200 or 19200) for serial communication. |
62 | 115200 is the default. |
63 | -D <devsbefore,devsafter,bitsbefore,bitsafter> |
64 | Set daisy chain settings. Only available in JTAG mode. |
65 | -I <speed> Specify ISP frequency (Hz). Only available for ISP mode. |
66 | -J <speed> Specify device speed (Hz). Only available for JTAG mode. |
67 | -R Apply external reset while programming. Only available in |
68 | JTAG mode. |
69 | -T Do NOT reset the emulator after the session. |
70 | |
71 | Example usage: jtagiceii.exe -d ATmega128 -e -pf -if c:\tmp\test.hex |
Das sieht doch zielmich tauglich für eine Abänderung des Makefile aus. Als ersten Versuch (ich habe kein jtagiceii zum testen), würde ich ich Regel für make program in einem Makefile ändern: Von
1 | # Program the device. |
2 | |
3 | program: $(TARGET).hex $(TARGET).eep |
4 | $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
nach
1 | # Program the device. |
2 | program: $(TARGET).hex $(TARGET).eep |
3 | jtagiceii.exe -d $(MCU) -e -pf -if $(TARGET).hex |
Fallen könnten die Schreibweise des MCU sein (Klein- kontra Teilgrossschreibweise) oder notwendige absolute Pfadnamen zum HEX-File oder zum jtagiceii.exe. Insgesamt aber nichts, was man nicht anpassen könnte. Auch das TAB vor dem Kommando ist wichtig (wie in Makefiles so üblich). Mit der -ie Option kann man ggf. auch das EEPROM beschreiben. Auch die Fuses könnte man so beschreiben oder lesen. Wichtig ist wohl noch die -mi Option, wenn man per ISP und nicht default per JTAG programmieren will. Das hängt halt davon ab, wie dein Targetboard am Programmer hängt. Bei weiteren Fragen einfach fragen ;-)
thanks. für den Anfang sollte es reichen, ich werd versuchen es mal zum laufen zu bekommen. mfg Wolfgang
Noch hab ich's leider nicht drin, da mich meine FH-Prüfungen zur Zeit ein wenig streßen. Ich werd mal versuchen die jtagiceii.exe noch ein wenig zu 'analysieren' und ausprobieren. Sollte das dann vielleicht als Option ins MFile-Tool aufgenommen werden? Das gleiche könnte man auch mit dem Tool vom Dragon machen, so kann man dann auf die libusb-win Treiber verzichten und bekommt mit AVR-Tools keine Probleme. MfG Wolfgang
Wolfgang Birner wrote: > ich bin auf der Suche nach einem makefile für WinAVR, in dem anstelle > von AVRDUDE, die bei Atmel's AVR-Studio mitgelieferte jtagiceii.exe > verwendet wird. Warum nimmst du nicht avrdude weiterhin? Das geht auch mit den Treibern von AVR. Schlimmstenfalls müsstest du die von WinAVR mitgelieferte libusb-win32 DLL durch die "Filter"-Version von libusb-win32 ersetzen, die dann auf dem Atmel-Treiber aufsetzt. Die bekommst du beim libusb-win32-Projekt auf http://sf.net/
Jörg Wunsch wrote: > Warum nimmst du nicht avrdude weiterhin? Das geht auch mit den > Treibern von AVR. Wenn ich mich nicht allzu sehr täusche, hatte ich das schon ausprobiert und es ging nicht. Ich werd's nochmal probieren, ich hab jetzt auch die USB-Treiber vom AVR-Studio nochmal aktualisiert. > Schlimmstenfalls müsstest du die von WinAVR > mitgelieferte libusb-win32 DLL durch die "Filter"-Version von > libusb-win32 ersetzen, die dann auf dem Atmel-Treiber aufsetzt. > Die bekommst du beim libusb-win32-Projekt auf http://sf.net/ Muß ich dafür einfach nur die .exe installieren? Oder die .dll im bin-Verzeichnis von WINAVR austauschen? MfG Wolfgang
Schmeiss die DLL aus dem WinAVR-Verzeichnis raus (musst sie ja nicht gleich ganz wegwerfen) und lass den Installer der Filterversion laufen. Der installiert dann irgendwo hin seine eigene DLL dafür.
Hab's jetzt endlich ausprobiert und geht alles: programmieren mit avrdude und debuggen / Fuses setzen mit AVR-Studio. Danke für die Tipps und Hilfe. MfG Wolfgang
@Wolfgang: wie machst Du das? Wenn ich AVRStudio starte, dann löscht + programmiert er mir als allererstes das Flash, erst danach darf ich debuggen. Damit habe ich regelmässig Probleme, weil der Bootloader natürlich mit gelöscht wird. Wenn es da eine ander Lösung gibt -kannst Du die nochmal genauer beschreiben? Viele Grüße, Stefan
Stefan wrote: > wie machst Du das? Wenn ich AVRStudio starte, dann löscht + programmiert > er mir als allererstes das Flash, erst danach darf ich debuggen. Wenn du das Studio zum Debuggen startest, dann ist das auch normal so, man will ja eigentlich immer die aktuelle Software test. > Wenn es da eine ander Lösung gibt -kannst Du die nochmal genauer > beschreiben? Ich wollte mit meiner obigen Aussage lediglich zum Ausdruck bringen, das ich jetzt im PN2 make clean/all/programm nutzen kann um eine Software direkt über jtag2 in den Chip zu bekommen. Und auf der anderen Seite das Studio um dort mit dem Dialog die Fuses zu setzten, bzw. eine Software dort zu testen. Bei mir hat früher (mit lib-usb-win32) das Studio im gesponnen, jetzt mit den Atmel-Treibern fürs ICE und der Filter-Version von der usb-lib für avrdude geht alles so wie es soll. MfG Wolfgang
ok, jetzt habe ich Dich verstanden. Vielen Dank und viele Grüße, Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.