Mit Atmel Studio Intel Hex File erzeugen

Gast #3980788
Lesenswert?

Hallo,

ich habe ein Programm für ATTiny25 erstellt und möchte diese nun per 
UpdateLoader_2.2.4 von http://www.leo-andres.de/category/projekte/ in 
den uC spielen. Mein Problem ist nur, dass ich schon ganz beim Einlesen 
von dem Hex-File scheitere, siehe Bild. Ich vermute, dass mein Atmel 
Studio 6.2 kein Intel Hex Files erstellt. Anders kann ich es mir nicht 
erklären.

Kann mir einer Helfen? Muss man was in Atmel Studio einstellen, das 
Intel Hex File erstellt wird?

Viele Grüsse

Stefan
Angehängte Dateien:
Gast #3980841
Lesenswert?

stefan schrieb:
> Ich vermute, dass mein Atmel
> Studio 6.2 kein Intel Hex Files erstellt.

Dann schau doch nach, ob eins erzeugt wird. Warum vermutest du das nur?
Geh ins Projektverzeichnis und suche nach einem File mit der Endung 
*.hex und kontrolliere das Erstellungsdatum. Daran kannst du ja sehen, 
ob es zum Zeitpunkt des Compilierens erstellt wurde. Wenn ja, dann hast 
du es gefunden.
#3980856
Lesenswert?

npn schrieb:
> Geh ins Projektverzeichnis und suche nach einem File mit der Endung
> *.hex und kontrolliere das Erstellungsdatum. Daran kannst du ja sehen,
> ob es zum Zeitpunkt des Compilierens erstellt wurde. Wenn ja, dann hast
> du es gefunden.

Bei der Fehlermeldung "Ungültiger Record" ist das aber egal, ob die 
Hex-Datei aktuell oder uralt ist.
Besser wäre es, die Datei mit einem Text-Editor anzuschauen. Dann kann 
man sehen, ob das ein gültiges Intel-Hex-Format ist.

Gruß Dietrich
Gast #3980890
Lesenswert?

Also soweit ich beurteilen kann ist das ein Intel Hex File, ausser ich 
habe in Wiki was falsch verstanden

:100000000EC01BC01AC019C018C017C016C015C03A
:1000100014C013C012C011C010C00FC00EC01124F4
:100020001FBECFEDCDBF20E0A0E6B0E001C01D9225
:10003000A836B207E1F745D0ACC0E2CF87B18F73E5
:1000400087B983E086B9379A369A3699FECF84B15C
:1000500095B1089597B18F71907E982B97B9369A84
:100060003699FECF84B195B10895CF92DF92EF9289
:10007000FF921F93CF93DF93182FD62F662371F033
:10008000C0E0C12CD12C7601812FE4DFC80ED91E2F
:10009000E11CF11CCF5FCD13F7CF03C0C12CD12CD5
:1000A00076012D2F30E040E050E0C701B6014FD07F
:1000B000C901DF91CF911F91FF90EF90DF90CF901A
:1000C000089542D0BBDF10926700109266008CE664
:1000D00091E0909365008093640089E591E09093AE
:1000E000610080936000109263001092620064E6E9
:1000F00083E0BBDF909363008093620020916000F7
:100100003091610082179307B0F4C19B14C0109224
:1001100063001092620064E683E0A7DF90936300BF
:1001200080936200209160003091610082179307F4
:10013000D0F6C198D8CF209164003091650028177F
:10014000390788F6C19ACFCFB99AC1980895A1E22C
:100150001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F41
:10016000FF1FA217B307E407F50720F0A21BB30B8C
:10017000E40BF50B661F771F881F991F1A9469F708
:1001800060957095809590959B01AC01BD01CF0164
:060190000895F894FFCF72
:040000050080006611
:00000001FF
Gast #3980915
Lesenswert?

Hallo stefan,

das ist eindeutig eine Intel-Hex Datei. Die Fehlermeldung bezieht sich 
auch nicht auf die Datei, sondern einen Record innerhalb der Datei. Jede 
Zeile in deiner Datei ist ein Record und beginnt mit dem Startzeicen 
":". Darauf folgt die Anzahl der Datenbytes als zweistellige Hexzahl. 
Danach die Speicheradresse, des ersten Datenbyte des Record, als 
vierstellige Hexzahl. Dahinter der Recordtyp als zweistellige Hexzahl 
(00=Daten-, 01=Endrecord). Dann die einzelnen Datenbyte deren Anzahl und 
Adresse zuvor angegeben waren. Zuletzt eine Prüfsumme als zweistellige 
Hexzahl.

:100000000EC01BC01AC019C018C017C016C015C03A

Zur Übersicht getrennt:

: 10 0000 00 0E C0 1B C0 1A C0 19 C0 18 C0 17 C0 16 C0 15 C0 3A

: = Start
10 = Anzahl 16 Datenbyte
0000 = Speicheradresse 0
00 = Typ - Daten
0E - C0 = die 16 Datenbyte
3A = Prüfsumme

Die Fehlermeldung legt nahe, daß mit einem (oder mehreren) der Records 
etwas nicht stimmt. Es gibt verschiedene HEX-Formate, vieleicht braucht 
der Empfänger eines der Anderen?

Gruß. Tom
Gast #3982304
Lesenswert?

Hallo zusammen,

danke für die Fehlersuche! Der Vorschlag von Holger funktioniert.

Mein Programm unterstützt nur die Record-Typen 0, 1 & 2.
Die restlichen Typen hatte ich damals in keiner Hex-Datei für einen 
Atmega gefunden, außerdem ist mir keinen sinnvolle Verwendung dafür 
eingefallen. Um keine ungültigen Daten zu laden bricht der Import 
komplett ab.

Wofür der Record-Typ 5 verwendet wird weiß ich nicht, hat der 
Bootloader/Atmega eine Möglichkeit die Startadresse einzustellen?

Für die nächste Version baue ich eine bessere Import-Funktion, bei 
sinnlosen Records sollte das nicht komplett abbrechen.

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