mikrocontroller.net

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


Autor: Wolfgang Birner (logox2)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fabian B. (fabs)
Datum:

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

Gruß
Fabian

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Usage: jtagiceii.exe [commands] [options]
Commands:
 -h, -?    Print this help.
 -he    Print exit codes.
 -e    Erase device.
 -f <fusebytes>  Write high/low fuse bytes. The LSB of fusebytes will be
    written to the low fuse byte, and the MSB will be written
    to the high fuse byte.
 -j <ID>  Read JTAG ID string. If an optional ID is specified, the
    program will terminate if the read ID differs.
 -l <lockbyte>  Set the lock byte to the specified value.
 -p[f|e|b]  Program FLASH (-pf), EEPROM (-pe) or both (-pb) memories.
    Requires input files specified with the -if (FLASH)
    and/or -ie (EEPROM) options.
 -q    Read fuse bytes. If the selected device has extended fuse,
    it will be also be read.
 -r[f|e|b]  Read FLASH (-rf), EEPROM (-re) or both (-rb) memories.
    Requires output files specified with the -of (FLASH) and/or
    -oe (EEPROM) options.
 -s    Read signature bytes.
 -v[f|e|b]  Verify FLASH (-vf), EEPROM (-ve) or both (vb) memories.
    Requires input files specified with the -if (FLASH) and/or
    -ie (EEPROM) options.
 -y    Read lock byte.
 -E <ext.fuse>  Write extended fuse byte.
 -F <fusebytes>  Verify high/low fuse bytes. The LSB of fusebytes will be
    compared to the low fuse byte, and the MSB will be compared
    to the high fuse byte.
 -L <lockbyte>  Verify the lock byte.
 -G <ext.fuse>  Verify the extended fuse byte against the given value.
 -O <address>  Read oscillator calibration byte. Address is location of byte
    as specified in the device's data sheet.
 -S[f|e] <address>
    Write oscillator calibration byte read with -O or -Z to given
    location in FLASH (-Sf) or EEPROM (-Se).
 -W    Disable debugWIRE interface, enabling ISP mode. Only available
    for debugWIRE devices.
 -Y    Perform the oscillator calibration sequence. See appnote
    AVR053 for more information.
 -Z <address>  Load value from address in EEPROM prior to erasing the device.
    This value can be written to FLASH or EEPROM again with
    the -S[f|e] command.

Options:
 -ae <start>,<end>
    Specify address range for reading EEPROM memory. Default is
    entire memory.
 -af <start>,<end>
    Specify address range for reading FLASH memory. Default is
    entire memory.
 -c <port>  Specify port to connect to. Can be USB, COM1-8 or
    Auto (default). With USB, the emulator serial number can also
    be specified: -c USB:00A00000002C
 -d <device>  [required] Specify the type of device.
 -ie <file>  Specify input file for programming EEPROM memory.
 -if <file>  Specify input file for programming FLASH memory.
 -m[i|j]  Choose programming mode: ISP (-mi) or JTAG (-mj) (default).
 -oe <file>  Specify output file for reading EEPROM memory.
 -of <file>  Specify output file for reading FLASH memory.
 -z    No progress indicator. Useful when redirecting output to file.
 -B <baudrate>  Speficy baudrate (115200 or 19200) for serial communication.
    115200 is the default.
 -D <devsbefore,devsafter,bitsbefore,bitsafter>
    Set daisy chain settings. Only available in JTAG mode.
 -I <speed>  Specify ISP frequency (Hz). Only available for ISP mode.
 -J <speed>  Specify device speed (Hz). Only available for JTAG mode.
 -R    Apply external reset while programming. Only available in
    JTAG mode.
 -T    Do NOT reset the emulator after the session.

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
# Program the device.

program: $(TARGET).hex $(TARGET).eep
  $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)

nach

# Program the device.
program: $(TARGET).hex $(TARGET).eep
  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 ;-)

Autor: Wolfgang Birner (logox2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thanks.

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

mfg
Wolfgang

Autor: Wolfgang Birner (logox2)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: Wolfgang Birner (logox2)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfgang Birner (logox2)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfgang Birner (logox2)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, jetzt habe ich Dich verstanden.

Vielen Dank und viele Grüße, Stefan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.