Forum: Mikrocontroller und Digitale Elektronik eeprom mit text file beschreiben


von Franzl (Gast)


Lesenswert?

Moin

Ich hab ein 1024byte langes Text File (keine hex datei) welches ich 
mittels AtmelStudio auf das EEprom eines AVR schreiben möchte. Wie stell 
ich das am besten an?

von spess53 (Gast)


Lesenswert?

Hi

>Ich hab ein 1024byte langes Text File (keine hex datei) welches ich
>mittels AtmelStudio auf das EEprom eines AVR schreiben möchte. Wie stell
>ich das am besten an?

bin2hex.exe besorgen. Dann Text in hex-File umwandeln und EEPROM 
programmieren.

MfG Spess

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

spess53 schrieb:
> bin2hex.exe besorgen. Dann Text in hex-File umwandeln und EEPROM
> programmieren.

 Warum ?
1
             .ESEG
2
             .ORG 0
3
EepText_1:   .db  "1234567890", 0x0D, 0x0A
4
EepText_2:   .db  "Irgendein Text", 0x0D, 0x0A

von hp-freund (Gast)


Lesenswert?

Unter linux gibt es dazu xxd. Ich weiß aber nicht ob das in irgend einem 
AtmelStudio Verzeichnis dazugehört.

text.txt:
1
Das ist Text in einer Datei.
2
Und eine zweite Zeile.

xxd -i text.txt > text.h erzeugt dann

text.h:
1
unsigned char text_txt[] = {
2
  0x44, 0x61, 0x73, 0x20, 0x69, 0x73, 0x74, 0x20, 0x54, 0x65, 0x78, 0x74,
3
  0x20, 0x69, 0x6e, 0x20, 0x65, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x44, 0x61,
4
  0x74, 0x65, 0x69, 0x2e, 0x0a, 0x55, 0x6e, 0x64, 0x20, 0x65, 0x69, 0x6e,
5
  0x65, 0x20, 0x7a, 0x77, 0x65, 0x69, 0x74, 0x65, 0x20, 0x5a, 0x65, 0x69,
6
  0x6c, 0x65, 0x2e, 0x0a, 0x0a
7
};
8
unsigned int text_txt_len = 53;

Das kannst Du dann ablegen wo Du möchtest.

von hp-freund (Gast)


Lesenswert?

Für den Fall das die Datei bei AtmelStudio/Win nicht dabei ist:

https://github.com/ThatOtherPerson/xxd/downloads

von Franzl (Gast)


Lesenswert?

danke für die Tipps


wenn ich das EEprom mit AtmelStudio auslese, erhalte ich eine Hex Datei 
mit jeweils 32byte pro Zeile, startend bei :1000000

wenn ich mit bin2hex kovertiere, werden Zeilen mit 64byte erzeugt, 
startend bei :2000000

kann ich dies irgendwie ändern?

von Michael S. (schiko)


Lesenswert?

Franzl schrieb:
> danke für die Tipps
>
>
> wenn ich das EEprom mit AtmelStudio auslese, erhalte ich eine Hex Datei
> mit jeweils 32byte pro Zeile, startend bei :1000000
>
> wenn ich mit bin2hex kovertiere, werden Zeilen mit 64byte erzeugt,
> startend bei :2000000
>
> kann ich dies irgendwie ändern?

Was für'n Zufall:

Eeprom Datei Editor (Intel-Hex-Format)
in "Projekte und Code"
Hab gerade den Quellcode hier gepostet.
Der kann per Klick die Zeilengröße ändern, falls nötig.

Schiko

von hp-freund (Gast)


Lesenswert?

Also wie das AtmelStudio den EEPROM Inhalt darstellt weiß ich nicht.
Aber um die Datei korrekt in den EEPROM zu legen brauchst Du nur wie 
oben beschrieben xxd zu verwenden und dann noch EEMEM einzufügen.

text.h:
1
#include <avr/eeprom.h>
2
3
unsigned char EEMEM text_txt[] = {
4
  0x44, 0x61, 0x73, 0x20, 0x69, 0x73, 0x74, 0x20, 0x54, 0x65, 0x78, 0x74,
5
  0x20, 0x69, 0x6e, 0x20, 0x65, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x44, 0x61,
6
  0x74, 0x65, 0x69, 0x2e, 0x0a, 0x55, 0x6e, 0x64, 0x20, 0x65, 0x69, 0x6e,
7
  0x65, 0x20, 0x7a, 0x77, 0x65, 0x69, 0x74, 0x65, 0x20, 0x5a, 0x65, 0x69,
8
  0x6c, 0x65, 0x2e, 0x0a, 0x0a
9
};
10
unsigned int text_txt_len = 53;

von spess53 (Gast)


Lesenswert?

Hi

>wenn ich mit bin2hex kovertiere, werden Zeilen mit 64byte erzeugt,
>startend bei :2000000

>kann ich dies irgendwie ändern?

Zeig mal die komplette 1.Zeile.

MfG Spess

von Franzl (Gast)


Lesenswert?

hallo

hab grad hxd getestet, hat wunderbar funktioniert.

Momentan hab aber ich ein Problem beim Schreiben. Dabei wird anstatt FF 
FF fast immer 24 2D geschrieben.
Beispielsweise die Zeile:
:10001000FF17FFFFFFFFFFFFFFFFFFFFFFFFFFFFD8

wird geschrieben als
:10001000FF17FFFFFFFFFFFF242D242D242D242D8C

Was läuft hier falsch?

von hp-freund (Gast)


Lesenswert?

Hast Du den EEPROM vorher gelöscht?

von Amateur (Gast)


Lesenswert?

>bin2hex

Würde mich wundern, wenn das Programm keine Hilfefunktion hätte.
/h oder -h oder so.

Übrigens die Zeilenlänge hat keine Funktion.

von Franzl (Gast)


Lesenswert?

hp-freund schrieb:
> Hast Du den EEPROM vorher gelöscht?

das wars, vielen Dank. Nun klappts!

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.