Forum: Compiler & IDEs Wie bekomme ich eine .eep Datei auf meinen ATmega32


von Günter H. (guenterh)


Lesenswert?

Hallo,

erst mal: Ja ich habe Google bemüht, die Forensuche und auch ChatGPT, 
doch keine passende Lösung gefunden.

Ich hatte mal vor Jahren begonnen, Mikrocontroller (ATMega, Atiny) in C 
zu programmieren. Also, das Equipment war da. Nun hat ein Freund eine 
Schrittmotorsteuerung gebaut und dazu wäre der Atmega32 zu 
programmieren, bzw. das Programm auf den Kontroller zu bringen. Der 
Quellcode liegt nicht vor sondern eine HEX Datei und eine .eep Datei.

Die HEX-Datei habe ich mit MPLAB IPE auf den Controller gebracht.
Doch wie bringe ich die .eep DAtei ins EEProm des Controllers??

Weder bei der Hilfe bzw. dem Programm MPLAB X noch bei MPLAB IPE fand 
ich hier eine Möglichkeit bzw. Hilfe.

Programmiergerät: ATMEL-ICE
Software: MPLAP X und MPLAP IPE Version 6.10
OS: Archlinux
Microcontroller: ATmega32
Quelle des Projektes, bzw. der Dateien um die es geht:
https://www.mikrocontroller-elektronik.de/intelligente-schrittmotoransteuerung-mit-avr-controller/

Für Hilfe bzw. einen Tipp wäre ich sehr dankbar.
Nochmal sei erwähnt, dass ich nicht zu den Fortgeschrittenen in der 
Microcontrollerszene gehöre.

Gruß
Günter

von Gerhard O. (gerhard_)


Lesenswert?

Günter H. schrieb:
> Hallo,
>
> erst mal: Ja ich habe Google bemüht, die Forensuche und auch ChatGPT,
> doch keine passende Lösung gefunden.
>
> Ich hatte mal vor Jahren begonnen, Mikrocontroller (ATMega, Atiny) in C
> zu programmieren. Also, das Equipment war da. Nun hat ein Freund eine
> Schrittmotorsteuerung gebaut und dazu wäre der Atmega32 zu
> programmieren, bzw. das Programm auf den Kontroller zu bringen. Der
> Quellcode liegt nicht vor sondern eine HEX Datei und eine .eep Datei.
>
> Die HEX-Datei habe ich mit MPLAB IPE auf den Controller gebracht.
> Doch wie bringe ich die .eep DAtei ins EEProm des Controllers??
>
> Weder bei der Hilfe bzw. dem Programm MPLAB X noch bei MPLAB IPE fand
> ich hier eine Möglichkeit bzw. Hilfe.
>
> Programmiergerät: ATMEL-ICE
> Software: MPLAP X und MPLAP IPE Version 6.10
> OS: Archlinux
> Microcontroller: ATmega32
> Quelle des Projektes, bzw. der Dateien um die es geht:
> 
https://www.mikrocontroller-elektronik.de/intelligente-schrittmotoransteuerung-mit-avr-controller/
>
> Für Hilfe bzw. einen Tipp wäre ich sehr dankbar.
> Nochmal sei erwähnt, dass ich nicht zu den Fortgeschrittenen in der
> Microcontrollerszene gehöre.
>
> Gruß
> Günter

Mit Atmel Studio sollte es eigentlich kein Problem sein. Im Programmier 
Dialog, kannst Du dort die HEX und EEP Datei spezifizieren. Auch Lesen 
kann man den Flash bzw. Eeprom im anderen TAB. Das sollte eigentlich 
funktionieren. Ich verwende AS V7.0 mit AVR-ISP MKII oder das neuere 
AVR-ICE für SAM und AVR.

Sieh Dir mal alles in Ruhe sorgfältig an.

Im IPE sollte das auch möglich sein. Mir ist aber generell AS7 lieber.

Gerhard

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Günter H. schrieb:
> Programmiergerät: ATMEL-ICE

Das ist doch schon mal was.

Die schreiben aber folgendes:
> Da das Board selbst keine kompatible ISP-Buchse besitzt,
> muss ein anderes Board zum programmieren des
> Controllers genutzt werden (z.B. RN-Control) . Oder man
> nutzt einen geeigneten Programmer mit  40 pol Sockel.

Ich würde da mit Steckbrettverdrahtung und dem Programmiertool 
"avrdude", ggf. mit GUI, rangehen.

Sieht die eep-Datei im Texteditor wie ein Intel-Hex aus? Also Format wie 
die hex-Datei? Dann sehe ich im Vorgehen kein Problem, zumal da ein 
alter ATmega32 mit alter ISP-Schnittstelle drin ackert.

Komisch, MPLAB sollte doch einen programmer-only Modus eingebaut haben. 
Ich kenne MPLAB nicht, habe bisher immer nur mit avr-gcc, avrdude, 
üblichen gnutools und anderer IDE gearbeitet.

mfg mf

PS. Zu spät, naja, egal.

: Bearbeitet durch User
von Günter H. (guenterh)


Lesenswert?

Danke für die Antworten.

Atmel Studio kommt halt nicht in Frage, da ich ja auf Linux arbeite und 
ich meine Atmel Studio nur auf Windows läuft.

Der Prozessor ist auf einem Steckbrett angeschlossen und die HEX Datei 
des Programmes konnte ich ja schreiben und verifizieren. MPLAP IPE.

MPLAP IPE ist wohl das "nur Programmieren" Tool der Suite, doch finde 
ich dort keine Möglichkeit eine eep Datei zu laden, geschweige denn auf 
den Controller zu schieben.

von Sebastian W. (wangnick)


Lesenswert?

Benenn die .eep in .hex um. Und dann wähl in MPLAB händisch EEPROM als 
Memory-Ziel.

LG, Sebastian

von Jack V. (jackv)


Lesenswert?

Günter H. schrieb:
> MPLAP IPE ist wohl das "nur Programmieren" Tool der Suite, doch finde
> ich dort keine Möglichkeit eine eep Datei zu laden, geschweige denn auf
> den Controller zu schieben.

Du kannst die Datei direkt mit avrdude draufschreiben, wie oben schon 
geschrieben wurde.

OT:
Günter H. schrieb:
> Atmel Studio kommt halt nicht in Frage, da ich ja auf Linux arbeite und
> ich meine Atmel Studio nur auf Windows läuft.

Bis Version 4 bekäme man’s unter Wine zum Laufen.

von Günter H. (guenterh)


Lesenswert?

Sebastian W. schrieb:
> Benenn die .eep in .hex um. Und dann wähl in MPLAB händisch EEPROM als
> Memory-Ziel.
>
> LG, Sebastian

Hallo,
du meinst in MPLAP IPE das Programm das eigentlich nur zum "brennen" 
dabei ist? Das hatte ich schon probiert, die Datei umzubenennen. Laut 
der Seite von dem die eep Datei kommt ist es keine HEX sondern eine 
Binärcodierte Datei. Deshalb hat das Programm auch moniert, dass es 
keine HEX Datei ist.

von Rainer W. (rawi)


Lesenswert?

Gerhard O. schrieb:
> Günter H. schrieb:
>> Hallo,
>>
>> erst mal: Ja ich habe Google bemüht, die Forensuche und auch ChatGPT,
>> ...
>> Gruß
>> Günter

Welchen Sinn mag wohl dieses Vollzitat gleich in der ersten Antwort 
haben?

Meinst du nicht, dass jeder hier in der Lage sein sollte, einen Post 
zurück zu scrollen, um den Eröffnungspost direkt zu lesen?

von Max D. (max_d)


Lesenswert?

avrdude -p atmega32 -c atmelice_isp -U eeprom:w:<filename> ?

von Günter H. (guenterh)


Lesenswert?

Max D. schrieb:
> avrdude -p atmega32 -c atmelice_isp -U eeprom:w:<filename> ?

Ergebnis

avrdude warning: cannot determine file format for 
RN_SCHRITTMOTOR_2.0.EEP, specify explicitly
avrdude error: command failed
avrdude error: initialization failed, rc=-1
        - double check the connections and try again
        - use -B to set lower the bit clock frequency, e.g. -B 125kHz
        - use -F to override this check

avrdude done.  Thank you.

Beitrag #7495169 wurde vom Autor gelöscht.
von Günter H. (guenterh)


Lesenswert?

Veit D. schrieb im Beitrag #7495169:
> mach erstmal einen einfachen Test ob überhaupt die Verbindung okay ist.

...
Programmer Type : JTAG3_ISP
         Description     : Atmel-ICE (ARM/AVR) in ISP mode
         ICE HW version  : 0
         ICE FW version  : 1.42 (rel. 161)
         Serial number   : J42700042762
         SCK period      : 8.00 us
         Vtarget         : 5.00 V

avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9502 (probably m32)

avrdude done.  Thank you.


Beim Versuch zu schreiben:
avrdude: processing -U eeprom:w:RN_SCHRITTMOTOR_2.0.eep:a
avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file 
or directory
avrdude error: cannot determine file format for RN_SCHRITTMOTOR_2.0.eep, 
specify explicitly
avrdude error: read from file RN_SCHRITTMOTOR_2.0.eep failed

von Jack V. (jackv)


Lesenswert?

Günter H. schrieb:
> avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file
> or directory

… ist eigentlich eindeutig.

von Max D. (max_d)


Lesenswert?

(fall es nicht eindeutig ist: du musst avrdude in dem verzeichnis 
ausführen in dem deine eep liegt oder ihm den ganzen pfad sagen)

von Günter H. (guenterh)


Lesenswert?

Ich war schon im richtigen Verzeichnis.

Das hatte ich gelesen und die Datei umbenannt, da sich avrdude 
vielleicht an dem zusätzlichen Punkt im Dateinamen aufhängt.

Ergebnis:
avrdude warning: cannot determine file format for ./schrittmotor.eep, 
specify explicitly
avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9502 (probably m32)

avrdude: processing -U eeprom:w:./schrittmotor.eep:a
avrdude error: cannot determine file format for ./schrittmotor.eep, 
specify explicitly
avrdude error: read from file ./schrittmotor.eep failed

avrdude done.  Thank you.

In der Doku von AVRDUDE steht das von haus aus das fileformat auf :a wie 
auto steht. Der Versuch :i für Intel-Hex bring da auch kein Erfolg

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

sag ihm halt dass es binär ist mit :b (kein smiley)

: Bearbeitet durch User
von Günter H. (guenterh)


Lesenswert?

Max D. schrieb:
> sag ihm halt dass es binär ist mit :b (kein smiley)

avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9502 (probably m32)

avrdude: processing -U eeprom:w:./schrittmotor.eep:b
avrdude error: invalid data in immediate mode: cannot parse
avrdude error: read from file ./schrittmotor.eep failed

avrdude done.  Thank you.

Langsam aber sicher stresst das mich. In der Readme steht:
Diese Firmware ist unverschlüsselt und muss mit einem geeigneten 
Programmer
in den AVR Controller AT-Mega32 einprogrammiert werden.
Hilfestellung gibt es sicher auch n Foren wie dem:
http://www.roboternetz.de/community/forums/48-Schaltungen-und-Boards-der-Projektseite-Mikrocontroller-Elektronik-de

Die Datei mit der Endung .HEX enthält den Binärcode für den Flasspeicher 
des ATMega32
Die Datei mit der Endung .EEP enthält den Binärcode für das EEPROM des 
ATMega32

Und ja, da hatte ich schon gesucht.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

Wenn der Verbindungstest klappt machste das in der gleichen Konsole.
Laut meines Wissen sollte das so aussehen.

avrdude -c atmelice_isp -p atmega32 -U eeprom:w:"Pfad File.eep":i
bzw.
avrdude -c atmelice_isp -p atmega32 -U eeprom:w:"Pfad File.eep":b

Entweder mit kompletten Pfad zur .eep Datei oder kopierst kurzerhand die 
.eep in den gleichen Ordner wo avrdude liegt. Wobei man die Option :i 
oder :b auch weglassen kann.

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Günter H. schrieb:
> Langsam aber sicher stresst das mich

Häng die hex und eep Dateien mal hier an. Dann können wir vielleicht 
nachsehen. Was das jeweils wirklich für ein Dateiformat ist.

mfg mf

von Günter H. (guenterh)


Angehängte Dateien:

Lesenswert?

Achim M. schrieb:
> Günter H. schrieb:
>> Langsam aber sicher stresst das mich
>
> Häng die hex und eep Dateien mal hier an. Dann können wir vielleicht
> nachsehen. Was das jeweils wirklich für ein Dateiformat ist.
>
> mfg mf

Ich habe die zwei Dateien angehängt. Die HEX Datei geht mit MPLAB IPE zu 
übertragen und auch zu verifizieren.

von Holger T. (holgert)


Angehängte Dateien:

Lesenswert?

EEP (binär) in HEX gewandelt im Anhang. Versuche diese in den EEPROM zu 
programmieren.

von Martin H. (horo)


Lesenswert?

Max D. schrieb:
> sag ihm halt dass es binär ist mit :b (kein smiley)

Die Datei ist aber nicht binär (jedes Byte bitweise als ASCII 0bBBBBBBBB 
codiert, analog zu hex 0xHH), sondern "Raw Binary", das Format ist ":r"

man avrdude sagt dazu:
1
The format field is optional
2
                   and contains the format of the file to read or write.  Format can be one of:
3
4
                   i    Intel Hex
5
6
                   I    Intel Hex with comments on download and tolerance of checksum errors on upload
7
8
                   s    Motorola S-record
9
10
                   r    raw binary; little-endian byte order, in the case of the flash ROM data
11
12
                   e    ELF (Executable and Linkable Format)
13
14
                   m    immediate; actual byte values specified on the command line, separated by commas or spaces.
15
                        This is good for programming fuse bytes without having to create a single-byte file or enter
16
                        terminal mode.
17
18
                   a    auto detect; valid for input only, and only if the input is not provided at stdin.
19
20
                   d    decimal; this and the following formats are only valid on output.  They generate one line of
21
                        output for the respective memory section, forming a comma-separated list of the values.  This
22
                        can be particularly useful for subsequent processing, like for fuse bit settings.
23
24
                   h    hexadecimal; each value will get the string 0x prepended.  Only valid on output.
25
26
                   o    octal; each value will get a 0 prepended unless it is less than 8 in which case it gets no
27
                        prefix.  Only valid on output.
28
29
                   b    binary; each value will get the string 0b prepended.  Only valid on output.

von Günter H. (guenterh)


Lesenswert?

Martin H. schrieb:
> Max D. schrieb:
>> sag ihm halt dass es binär ist mit :b (kein smiley)
>
> Die Datei ist aber nicht binär (jedes Byte bitweise als ASCII 0bBBBBBBBB
> codiert, analog zu hex 0xHH), sondern "Raw Binary", das Format ist ":r"
>

Problem gelöst. Vielen Dank. Lösungsweg:
.eep Datei umbenannt, da im Dateinamen zwei Punkte waren. Das könnte 
evtl. zu Problemen führen.

Beitrag von Martin H. gefolgt und mit folgendem Befehl avrdude 
ausgeführt:
1
avrdude -p atmega32 -c atmelice_isp -U eeprom:w:./schrittmotor.eep:r

Ergebnis:
1
avrdude: reading input file ./schrittmotor.eep for eeprom
2
         with 26 bytes in 1 section within [0, 0x19]
3
         using 7 pages and 2 pad bytes
4
avrdude: writing 26 bytes eeprom ...
5
Writing | ################################################## | 100% 0.29 s 
6
avrdude: 26 bytes of eeprom written
7
avrdude: verifying eeprom memory against ./schrittmotor.eep
8
9
Problem gelöst! Solved!
10
Reading | ################################################## | 100% 0.02 s 
11
avrdude: 26 bytes of eeprom verified
12
13
avrdude done.  Thank you.

Vielen Dank für alle, die mir hier geholfen haben! Durch meinen 
dokumentierten Lösungsweg hoffe ich, dass anderen das auch mal hilft.

: Bearbeitet durch User
von Martin H. (horo)


Lesenswert?

Günter H. schrieb:
> da im Dateinamen zwei Punkte waren. Das könnte
> evtl. zu Problemen führen.

Das interessiert Linux bzw. avrdude nicht die Bohne, letzteres hat eher 
Probleme mit dem Doppelpunkt, das als Formattrenner dient, man avrdude 
sagt:

"Note that if filename contains a colon, the format field is no longer 
optional since the filename part following the colon would otherwise be 
misinterpreted as format."

von M. K. (sylaina)


Lesenswert?

Günter H. schrieb:
> avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file
> or directory

Hier wurde eindeutig gesagt, dass die angegebene Datei nicht gefunden 
wurde und hier:

Günter H. schrieb:
> avrdude warning: cannot determine file format for ./schrittmotor.eep,
> specify explicitly

sagt avrdude, dass es das Dateiformat nicht erkennt. Also eigentlich 
waren die Fehlermeldungen eindeutig.

Aber schön, dass mit Martins Hilfe das Problem gelöst werden konnte und 
es dazu auch eine Rückmeldung gab ;)

von Günter H. (guenterh)


Lesenswert?

M. K. schrieb:
> Günter H. schrieb:
>> avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file
>> or directory
>
> Hier wurde eindeutig gesagt, dass die angegebene Datei nicht gefunden
> wurde und hier:
>
> Günter H. schrieb:
>> avrdude warning: cannot determine file format for ./schrittmotor.eep,
>> specify explicitly
>
> sagt avrdude, dass es das Dateiformat nicht erkennt. Also eigentlich
> waren die Fehlermeldungen eindeutig.
>
> Aber schön, dass mit Martins Hilfe das Problem gelöst werden konnte und
> es dazu auch eine Rückmeldung gab ;)

Das ist nun schon eine Zeit lang her. Da ich schon seit bald 20 Jahren 
mit Linux arbeite, weiß ich wie ich Pfade korrekt angebe. Warum das 
dennoch ein Problem war, weiß ich nicht mehr.

Ich meine die Erkennung des Dateiformats bei avrdude ist per "default" 
auf "automatische Erkennung". Deshalb kam es mir logischerweise nicht 
gleich in den Sinn, daran zu zweifeln, dass die automatische Erkennung 
funktioniert. Auch deshalb weil ich avrdude alle heilige Zeiten mal 
nutze. Mir war das Dateiformat nicht ganz klar, weshalb ich auch nicht 
gleich den richtigen, expliziten Parameter für das Dateiformat beim 
Aufruf avrdude angab.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Günter H. schrieb:
> Martin H. schrieb:
> Beitrag von Martin H. gefolgt und mit folgendem Befehl avrdude
> ausgeführt:
1
avrdude -p atmega32 -c atmelice_isp -U 
2
> eeprom:w:./schrittmotor.eep:r

avrdude versteht auch ELF, man braucht also kein Zwischenformat.

Hier die Doku zu -U (Doku von v6.4, aktuell ist v7.2):

https://avrdudes.github.io/avrdude/6.4/avrdude_3.html#Option-Descriptions
1
The /filename/ field indicates the name of the file to read or write.
2
The format field is optional and contains the format of the file to read
3
or write. Possible values are:
4
5
i   Intel Hex
6
7
r   raw binary; little-endian byte order, in the case of the flash
8
    ROM data
9
10
e   ELF (Executable and Linkable Format), the final output file from
11
    the linker; currently only accepted as an input file.
12
13
<many more>

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.