www.mikrocontroller.net

Forum: Compiler & IDEs eep-Datei erzeugen ohne AVR-Studio


Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche gerade ein Struct-Array ein bißchen auszulagern. Mein Ziel 
ist es, dieses Struct Array später immer wieder auszutauschen baer ohne, 
dass ich immer wieder den Quellcode konvertieren muss.
Meine Idee wäre somit, dass man aus dieses Array in das Eeprom legt und 
später einfach nur das Eeprom neu beschreibt.

Nur wie geht das. Ich würde dafür eine Methode suchen mit der ich 
einfach *.eep Dateien ohne Neukompilieren des Quellcodes erzeuge und 
danach schreibe.
Geht das? Bis jetzt hab ich nur gelesen, dass das makefile immer ne 
extra *.eep Datei erzeugt, falls nötig.
Kann ich alternativ dazu incht einfach eine hex-Datei aus meiner 
Struct-Array definition machen?

Bin etwas verwirrt. Mit sowas hab ich noch nie zu tun gehabt.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar, das müsste gehen. Das Tool der Wahl ist OBJCOPY aus dem avr\bin 
Verzeichnis.

Wenn du eine Binärdatei mit dem Inhalt für das EEPROM hast, die sepp.bin 
heisst, kannst du daraus eine IHEX formatierte Datei sepp.eep machen, 
die du mit einem ISP Programmer in das EEPROM schreiben kannst. Die 
Kommandozeile dafür lautet:

d:\winavr\avr\bin\objcopy -I binary sepp.bin -O ihex sepp.eep


Umgekehrt geht es natürlich auch z.B. wenn du die erste *.eep Datei (die 
aus dem Sourcecode erzeugt wurde) in Binärform haben willst, um 
Binärpatches darauf anzuwenden.

d:\winavr\avr\bin\objcopy -I ihex sepp.eep -O binary sepp.bin 


Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich gut an. Das wär dann also mal nen Test wert. Noch ne Frage am 
Rande:
In dem Struct liegt auch ein Pointer, der auf was außerhalb vom Eeprom 
zeigen soll zwecks Schreibzugriffe und so. Das ganze sieht dann etwa so 
aus:

EEPROM:
static const def_struct varname[] = {
  {0xFFFF, (UNS8 *) &anderesstruct.daten},
  {0x0000, (UNS8 *) &anderesstruct.daten}
};

PROG:
anderesstruct_struct anderesstruct;

Kann das funktionieren?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann funktionieren. Die Betonung liegt auf kann und es steht da nicht 
wird.

Ob die eingetragene Adresse stimmt, hängt davon ab, wie der Rest des 
Programms jeweils übersetzt ist. Wenn das Restprogramm neu übersetzt 
wird, ist zu prüfen, ob die Adresse sich geändert hat. Die Überprüfung 
kann mit dem MAP-Ausgabefile von der Übersetzung her erfolgen.

Meiner Ansicht nach ist bei der Definition des Feldes von Strukturen 
noch was im Argen. Im ARV-GCC-Tutorial steht was von bestimmten 
Schlüsselworten, die die Toolchain veranlassen die Daten in Nicht-RAM 
Bereiche zu legen. So wie es hier steht, steht das Feld im RAM.

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. Danke. Hab mir schon sowas gedacht. Werd das evtl doch anders zu 
lösen versuchen. Das wird mir zu unübersichtlich. Da gibts sicher was 
besseres ;)

Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ne Frage zu der sepp.bin Datei.

Wie muss denn solch eine Datei aussehen?

Gruß Andreas

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Müller schrieb:

> Wie muss denn solch eine Datei aussehen?

Die muss gar nicht irgendwie "aussehen".
Die einzige Bedingung, die die Datei erfüllen muss: sie darf natürlich 
nicht größer sein als das EEPROM.

Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mir da mal ein beispiel zeigen. Schreib ich da einfach z.b. 
define anweisungen oder arrays mit inhalten die ich brauche oder wie 
kann so etwas aussehen.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Müller schrieb:
> Kannst du mir da mal ein beispiel zeigen. Schreib ich da einfach z.b.
> define anweisungen oder arrays mit inhalten die ich brauche oder wie
> kann so etwas aussehen.

Nein. Der komplette Inhalt der Datei wird so wie er ist ins EEPROM 
geschrieben. Die hier im Thread genannte Methode ist z.B. dazu gut, 
Bilddaten ins EEPROM zu bekommen. Wenn du im EEPROM einfach nur ein paar 
Initialisierungswerte für ein Array haben möchtest, brauchst du eine 
solche Datei gar nicht.
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte aber eine seperate eep-Datei generieren in denen der Inhalt 
eines Displays steht.
Bsp: demo_test[] =  "Test hallo;" "12345";

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann ließ dir den Text hinter dem Link durch. Die eep Datei wird dann 
beim Übersetzen des Programms automatisch mit generiert (sofern du eines 
der "normalen" Makefiles benutzt). Wenn die dort gezeigte Vorgehensweise 
für dich nicht in Frage kommt, dann musst du schon etwas spezifischer 
werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.