Forum: Mikrocontroller und Digitale Elektronik Codevision - Hex-File-Format


von Stephan (Gast)


Angehängte Dateien:

Lesenswert?

Morgen,

ich hab einen BL für einen ATMEGA2561 mit CodeVision geschrieben und 
wollte den nun von einem Programmierzentrum in meine Chips brennen 
lassen.
Leider bekommt das PG-Zentrum das nicht richtig 'gebacken'. :-(

Der Aussagen nach des PG-Zentrum ist mein Hex-File falsch.

kurz zur Info: wenn ich das Hex-File mit den CV in die Rechner schreibe 
läuft alles SUPER :-). (siehe Anhang)

Jetzt wollte ich den Leuten beweisen das mein File richtig ist, aber 
leider bekomme ich das Hex-File nicht richtig dekodiert, ich hoffe Ihr 
könnt mir helfen.

Der Bootloader-Bereich des ATMEGA2561 sollte bei der Adresse 0x0001FC00 
anfangen, das wird auch im CV richtig angezeigt, aber hier fängt das 
File ab der Adresse: 0x0003F800 an ( 0x0000F800 + (0x00003000 << 4)).

hier mal die ersten 3 Zeilen des Hex-Files:

:02 0000 02 3000 CC
:0A F800 00 0D9467FC0D9400FC0D94 BC
:10 F80A 00 00FC0D9400FC0D9400FC0D9400FC0D94 7A

danke
Stephan

von Peter D. (peda)


Lesenswert?

Stephan wrote:

> Der Aussagen nach des PG-Zentrum ist mein Hex-File falsch.

Jags mal durch hex2hex.
Manche wollen die Rekords in streng aufsteigender Reihenfolge.


Oder das Codevision hat sich irgendwelche unbekannten Records für die 
Fusebits ausgedacht. Die funktionieren dann natürlich nur mit dem 
Codevision-Programmer.
Es sollte dann aber in Codevision einstellbar sein, daß es echte 
Hexfiles erzeugt.


Peter

von FBI (Gast)


Lesenswert?

Hi,

0x0003F800 = 2 * 0x0001FC00

Im Hexfile steht die *BYTE*adresse, CV zeigt Dir die *WORD*adresse.
Schau Dir im Datenblatt mal an, wie der PC vom AVR funktioniert. Dann 
wird Dir klar warum das so ist.

CU

von Klaus L. (kllei)


Lesenswert?

Hallo,

Codevision benutzt doch zum erzeugen des Hexfiles den AVR Assembler 
(avrasm2).
Im Zielverzeichnis befindet sich eine Datei AvrBuild.bat, dort stehen 
die verwendeten Befehle drin.

@Stefan: sind die Leerzeichen von Dir eingefügt worden?

Wäre zu prüfen, welchen Programmer das Programmierstudio benutzt. 
Eventuell ist der noch gar nicht für den Adressraum des 2561 
vorbereitet?

Wie ist denn deren Fehlermeldung?

Grüße,
Klaus

von Stephan (Gast)


Lesenswert?

Hallo,

danke für die Antworten.

@ Klaus Leidinger
ja, die Leerzeichen waren von mir. was die Leute im PG-Zentrum verwenden 
sagen sie leider nicht, ich erkenne nur den Fehler wenn sie mir ein 
Muster schicken und der Bootloader nicht funktioniert. :-(
die Datei "AvrBuild.bat" habe ich in meiner Installation von CVA nicht 
gefunden.

@ FBI
hab ich gemacht und gesehen das beim AVR der Flash mit 16Bit 
angeschlossen ist. "...the Flash is organized as 32K/64K/128K x 16.."
(hätte ich wissen müssen!)
aber wie hilft mir das jetzt weiter???

hab das hier gefunden:
C. Load Data Low Byte
1. Set XA1, XA0 to “01”. This enables data loading.
2. Set DATA = Data low byte (0x00 - 0xFF).
3. Give XTAL1 a positive pulse. This loads the data byte.
D. Load Data High Byte
1. Set BS1 to “1”. This selects high data byte.
2. Set XA1, XA0 to “01”. This enables data loading.
3. Set DATA = Data high byte (0x00 - 0xFF).
4. Give XTAL1 a positive pulse. This loads the data byte.

heist das der AVR wird immer mit 16Bit programmiert??? und ich kann ihn 
dan garnicht mit 8Bit programmieren???

Stephan

von Peter D. (peda)


Lesenswert?

Stephan wrote:
> ja, die Leerzeichen waren von mir. was die Leute im PG-Zentrum verwenden
> sagen sie leider nicht, ich erkenne nur den Fehler wenn sie mir ein
> Muster schicken und der Bootloader nicht funktioniert. :-(

Das hex-File ist ja nur eine Sache, da steht nur der Programmcode drin.

Du must ihnen außerdem noch die richtigen Fuse-settings mitschicken.


Peter

von Stephan (Gast)


Lesenswert?

Hallo

@ Peter
ja, das mit den FUSE hatte ich natürlich auch gemacht und die sind auch 
schon x-mal kontrolliert worden und sind so wie ich sie wollte.
Aber das BL-Programm steht NIE an der stelle wo ich es hin haben will.
AN: 0x0001FC00  <- laut FUSE-BITS

Stephan

von Klaus L. (kllei)


Lesenswert?

@Stefan,

welchen Programmer(Hardware) benutzt Du denn? Probier doch mal, das 
Hexfile nicht mit Codevision, sondern z.B.  mit dem AVRStudio Programmer 
zu brennen. Das würde ausschließen, dass da eine "Sonderbehandlung" 
durch den CV Programmer erfolgt.

Das AVRbuild.bat sollte im gleichen Verzeichnis liegen wie das c-File 
und das hex File.

Durch die 16 Bit decodierung müsste die 0xF800 aus dem Hexfile ja *2 auf 
1F000 landen, aber wer macht diese Konvertierung?...und, wo steht das 
Zielprogramm denn? Gemäß dem Hexfile müsste es doch an F800 stehen.

Welche Version des AVRStudio hast Du auf dem Rechner? und welche von 
Codevision? Ich habe gerade gesehen, das CV eine ältere Version des 
avrasm2 benutzt, allerdings heist das noch nicht, das die alte version 
das nicht kann.

Grüße,
Klaus

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.