Ich arbeite an einem eingebetteten C-Projekt mit GCC für ARM V-4.8.3 Toolchain. Ich habe ein Array von Suchstrukturen, die nur während des Lebenszyklus des gesamten Programms gelesen werden. Da mir der Arbeitsspeicher knapp wird (und ich habe nicht genug Flash), ist es besser, sie in den Flash zu stecken, was die Funktion des Programms nicht beeinträchtigt. Das Problem ist wie.Was ist der allgemeinste Ansatz, um eine Struktur in den Flash (Mikrocontroller) zu setzen
Eine Möglichkeit, dies zu tun, ist die Verwendung der variable __attribute__ ((section ("TEXT")))
von GCC zur Verfügung gestellt. In diesem Fall ist mein Code compilerabhängig. Wenn ich meinen Code zum Beispiel mit dem Microchip-Compiler verwenden möchte, muss ich den Code für den Anschluss an die neue Umgebung bearbeiten.
Die andere Möglichkeit, die mir in den Sinn kommt, ist die Verwendung des Linker-Skript. Die Struktur wird nur in den Code deklariert.
Es scheint mir, dass der zweite Ansatz ein bisschen tragbarer ist. Obwohl es noch benötigt wird, um das Linker-Skript anzupassen, ist es für mich besser. Gibt es einen allgemeineren Ansatz, der den Code im Kontext des Platzierens von Variablen im Flash portierbarer macht?
Wenn Sie sie als Konstante qualifizieren, bedeutet dies, dass sie in den Abschnitt gestellt werden. Nicht in den Textbereich, in den sie "gehören".
Linker-Skripts sind ebenfalls nicht portierbar und ändern sich je nach verwendetem Linker. –