mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Strings/Strukturen im Flash


Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
laut den avrgcc/libc beispielen lassen sich arrays von strings bzw. 
strukturen mit strings die ausschließlich im flash liegen nur so 
realisieren :


char foo [] PROGMEM = "foo";
char bar [] PROGMEM = "bar";

char *str [] PROGMEM = { foo, bar, };

zumindest hab ich das so rausgelesen ...

was ich suche ist eine möglichkeit den string in einer struktur DIREKT 
im flash abzulegen (ist vllt was umständlich beschrieben)

so z.b.

char *str [] PROGMEM = { "foo", "bar", };

sodass "foo" und "bar" automatisch im flash liegen und die zeiger direkt 
auf den flash-bereich zeigen.

laut den beispielen geht sowas für fkt mit PSTR. aber dieser mechanismus 
versagt natürlich bei dem o.g. beispiel.
ich brauche das, da ich (mal wieder) exzessiv mit dem präprozessor 
hantiere, der code der ausgespuckt wird aber dafür sorgt das der text im 
ram steht. dadurch kann ein späteres strcmp_P auch nicht funktionieren.
gibt es ein Makro mit dem ein string automatisch im flash landet und 
(auf eine datenstruktur angewendet) mir den zeiger auf diesen flash 
bereich liefert.

also wenn ich z.b.

typedef struct {
  char *pcSource;
  char *pcDest;
} T_TEST_STRUCT;

T_TEST_STRUCT astStructs [] PROGMEM =
{
 { "source1", "dest1", },
 { "source2", "dest2", },
};

habe das "source1", "dest1", "source2", "dest2" automatisch im flash 
liegen und die zeiger der astStructs auf diese zeichenketten im flash 
zeigen ?
das problem ist ganz einfach das ich (da ich den präprozessor verwende) 
nicht für jeden einzelnen string ein char xyz [] PROGMEM = "blablabla"; 
anlegen möchte und dann einen &xyz für jeden dieser strings machen 
möchte/kann ...

aus der avrgcc/libc bzw. dem avrgcc-tutorial bin ich in diesem punkt 
leider nicht schlau geworden.

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willkommen im Club!

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibts da echt keine möglichkeit ?

würde mir einiges zunichte machen, da ich mit dem präprozessor zwar 
automatisch strings generieren kann die im flash liegen, aber die 
zuordnung wäre dann dahin ... bzw. würde die sache ziemlich kompliziert 
machen ...

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.