2013-03-01 16 views
7

Ich versuche, ein Linker-Skript zu schreiben, um einen Abschnitt Inhalt in zwei nicht zusammenhängende Speicherbereiche zu schreiben. „ld Linker-Skript und nicht zusammenhängender Speicherbereich“ http://sourceware.org/ml/binutils/2012-01/msg00188.htmlgnu Linker Abschnitt der nicht zusammenhängenden Speicherbereich

Ich weiß, für dieses Problem eine Funktion aus dem C28x Compiler die spliting ist:

Ich habe einen alten Thread in dieser E-Mail-Liste dazu gefunden Abschnitte über mehrere Speichersegmente hinweg: (mit einer oder Funktion)

SEKTIONEN {.text: {* (. text)} >> FLASH1 | FLASH3}

hier beschrieben: http://processors.wiki.ti.com/index.php/C28x_Compiler_-_Understanding_Linking

Ich habe versuchen, es ohne Erfolg. Im Moment muss ich manuell den ersten Speicherbereich füllen. aber es ist schwierig zu suchen Teile des Codes Hexe Ich werde in Zukunft nicht ändern und passen und füllen Sie die erste Speicherregion vollständig.

Wird eine solche Funktion im GNU-Linker implementiert? Oder hat jemand eine bessere Idee Wie kann ich dieses Problem lösen?

Antwort

1

Ich denke, der einfachste Weg (und vielleicht der einzige Weg) wäre, Ihren Abschnitt in zwei Abschnitte aufzuteilen, dann einen Abschnitt dem ersten Speicherbereich und den zweiten Abschnitt dem zweiten Speicherbereich zuzuordnen.

Sie haben wahrscheinlich schon gesehen, aber es ist eine ziemlich kurze Beschreibung des Link-Scripts: http://www.math.utah.edu/docs/info/ld_3.html

+0

Ich weiß, dass dies eine sehr alte Frage, aber ist es eine gute Möglichkeit, es in zwei Abschnitte aufgeteilt, ohne manuell Mapping X in Abschnitt A und Y in Abschnitt B? Ich habe drei nicht zusammenhängende Erinnerungen, um ein ganzes Programm in (.text, .data und .bss) zu platzieren, und es wäre ein Bär, sie auseinanderhalten zu lassen. – rjp

Verwandte Themen