Hallo Gemeinde,
ich arbeite grad mit AVR STudio 5 und versuche eine
EEProm File zu erstellen. Das klappt ansich auch wunderbar.
Nut leider ist das Format im EEprom anderst wie ich es
gerne hätte.
(Ausschnitt)
IST (AVR STudio 5):
:1000000000000000000000000000000000000000F0..
:10001000000090019001640064006400640000002E..
SOLL (ICCAVR 7):
:0E0000000000000000000000000000000000F2..
:0E000E00000000009001900164006400640096..
Nach längerem suchen und prüfen ist mir bewusst geworden
das der Dateninhalt der gleiche ist. "Nur" die Recordlänge
(RECLEN) vom Intelhex Format ist auf HEX 10 (Dez. 16) vor eingestellt
und ich möchte aber HEX 0E (Dez. 14) haben, da jeder Eintrag
im EEprom 14 Werte hat. Der Code wurde ursprünglich mal für
ICCAVR 7 geschrieben und ich portiere den gerade aufs AVR STudio 5
um. Im ICCAVR 7 gehts irgendwie automatisch mit 14 Einträgen.
Ich habe auch schon diverse Options der avr-objcopy.exe ausgetestet.
--srec-len <number>
-b --byte <num>
Leider ohne Erfolg. Die unterschiedlichen Bezeichnung für
die Datenlänge verwirren mich auch sehr und erschweren
nur das Filtern der Suchergebnisse. Ich konnte auch nicht
finden, wo ich ausschließlich für .EEP File Paramter angeben kann.
In den Options im AVR Studio 5 habe ich auch noch
keine Änderungsmöglichkeit dazu finden können. Bzw. die
die ich probierte führten nicht zum Erfolg. Dann
wollte ich die interne Hilfe Seite aufmachen aber
es kommt nur "Page not found"
http://msdn.microsoft.com/EN-US/library/AVR_STUDIOUSERGUIDE
Bitte liebe Gemeinde, zeigt oder erklärt mir jemand wie ich
das einstellen kann.
Grüßle
NewWay
NewWay schrieb:> das der Dateninhalt der gleiche ist. "Nur" die Recordlänge> (RECLEN) vom Intelhex Format ist auf HEX 10 (Dez. 16) vor eingestellt> und ich möchte aber HEX 0E (Dez. 14) haben, da jeder Eintrag> im EEprom 14 Werte hat.
Das sollte aber einem ordentlich geschriebenm Code zum Einlesen eines
Hex-Files keinerlei Schwierigkeiten machen.
> Leider ohne Erfolg. Die unterschiedlichen Bezeichnung für> die Datenlänge verwirren mich auch sehr und erschweren> nur das Filtern der Suchergebnisse.
Machst du das händisch, oder wie muss man sich das Vorstellen?
> Bitte liebe Gemeinde, zeigt oder erklärt mir jemand wie ich> das einstellen kann.
Du verschwendest deine Zeit. Nimm einen ordentlichen Hex-File Leser oder
ändere deinen Code zum Einlesen entsprechend um, dann ist das alles kein
Problem mehr.
Genau solche Nachlässigkeiten und Annahmen rächen sich immer.
Irgendwann. Und zwar jede Einzelne.
NewWay schrieb:> ich möchte aber HEX 0E (Dez. 14) haben, da jeder Eintrag> im EEprom 14 Werte hat.
So lange die Einträge im EEPROM direkt hintereinander angeordnet werden
(und warum sollte das nicht so sein?), ist das doch völlig egal.
Oliver
Guten Morgen Karl Heinz Buchegger und Oliver,
vielen Dank für euer rasches Feedback.
Ich befürchte die Problemstellung hast Du etwas missverstanden!?
Bitte lasses es mich noch einmal versuchen:
Ich erzeuge die Intel HEX File über eine Header File. Ich nutze einen
HEX Editor um den Inhalt zu überprüfen. Es ist ein Struct im Code
definiert.
1
typedefstruct
2
{
3
unsignedcharByteVar1;
4
unsignedcharByteVar2;
5
unsignedcharByteVar3;
6
unsignedcharByteVar4;
7
unsignedcharByteVar5;
8
unsignedcharByteVar6;
9
unsignedcharByteVar7;
10
unsignedcharByteVar8;
11
unsignedcharByteVar9;
12
unsignedcharByteVar10;
13
unsignedcharByteVar11;
14
unsignedcharByteVar12;
15
unsignedcharByteVar13;
16
unsignedcharByteVar14;
17
}BSP_daten;
Um meine EEPROM File vom AVR Studio erzeugen zu lassen habe ich
in einer H-File ein Define erstellt.
Wie gesagt, das AVR Studio 5 compiliert mir das auch und erzeugt
mir ein EEPROM File.
Aber eben mit einer RECLEN von HEX 10. Aus historischen Gründen MÖCHTE /
WILL ich aber HEX 0E als RECLEN. Nur weiß ich eben nicht WO und WIE
ich das dem AVR Studio oder sonst wo einstellen kann.
Bitte zeigt bzw. erklärt mir doch jemand wie das geht!?
Im ICCAVR ist dieses Define nicht vorhanden. Es wird mit Pragma
erstellt.
1
#pragma data:eeprom+3
2
3
BSP_datenSpeicherOrt1={0xAA,0x55,0xAA,0x55,
4
0xAA,0x55,0xAA,0x55,
5
0xAA,0x55,0xAA,0x55,
6
0xAA,0x55
7
};
8
9
#pragma data:data
Der ICCAVR erzeugt mir aber "einfach so" ein EEPROM File
mit RECLEN von HEX 0E bzw. DEZ 14 !!
Was das +3 soll weiß ich übrigens nicht.
> Machst du das händisch, oder wie muss man sich das Vorstellen?
Nun die "Specs" im Netz benutzen unterschiedliche Begriffe,
aber die eigentliche Intel HEX Spec nennt den Eintrag RECLEN.
- Datenlänge
- Byte count
- ...
Wenn man jetzt diese, in Kombination mit anderen wie z.B.
AVR Studio, EEPROM etc, als Suchbegriff Googled, findet man
unzählige Antworten dazu, aber viel zu viele die nicht
im Kontext dazu stehen, leider. Das erschwert, mir zumindest, das
Filtern der relevanten Informationen dies bezüglich.
Viele Grüße
NewWay
NewWay schrieb:> Ich nutze einen> HEX Editor um den Inhalt zu überprüfen.
Dann benutze eine bessere Verifikationsmethode. Mit avr-objcopy
kannst du den Inhalt zumindest in eine Binärdatei umwandeln
(vorausgesetzt natürlich, er beginnt an Adresse 0 und hat keine
Lücken), die kannst du dann gegen den Soll-Inhalt vergleichen lassen.
NewWay schrieb:> Aus historischen Gründen MÖCHTE /> WILL ich aber HEX 0E als RECLEN.
Dann nochmal ganz deutlich: WARUM?
Welcher Teil deiner Software oder deienr Tools funktioniert nur mit
einer RECLEN von 14, und warum?
Lösung: Such oder schreib dir ein Tool, daß das bestehende ihex-file
einliest, und dir den output liefert, den du möchtest. Im Studio 5 kann
man m.E. post-procressing-Programme definieren, dort hängst du das
Programm dann rein.
Oliver
Hallo Jörg Wunsch,
auch Dir danke sehr für dein Feedback.
In der Tat, es hat geklappt. Vielen Dank.
Da war ich wohl echt auf dem Holzweg.
Viele Grüße
NewWay
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.