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.
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.