Wie bekomme ich eine .eep Datei auf meinen ATmega32

OP #7495092
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

#7495098
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

#7495099
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.

OP #7495104
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.

#7495114
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 im Beitrag #7495104:

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.

OP #7495143
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.

OP #7495158
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 von einem Moderator gelöscht.
OP #7495174
Lesenswert?

Veit D. schrieb:

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

OP #7495185
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

OP #7495192
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.

#7495212
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.

OP #7495230
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.

Angehängte Dateien:
#7495332
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.
OP #7495721
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.

#7495750
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."

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

OP #7535739
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.

Persönliche Seite #7536088
Lesenswert?

Günter H. schrieb:

Martin H. schrieb im Beitrag #7495332: 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>

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren