Forum: Compiler & IDEs makefile mit AVR's jtagiceii.exe


von Wolfgang B. (logox2)


Lesenswert?

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

von Fabian B. (fabs)


Lesenswert?

Wenn du schon AVR-Studio zum Debuggen nimmst, warum dann nicht auch zum 
compilieren?

Gruß
Fabian

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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 ;-)

von Wolfgang B. (logox2)


Lesenswert?

thanks.

für den Anfang sollte es reichen, ich werd versuchen es mal zum laufen 
zu bekommen.

mfg
Wolfgang

von Wolfgang B. (logox2)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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/

von Wolfgang B. (logox2)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Wolfgang B. (logox2)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

@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

von Wolfgang B. (logox2)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.