mikrocontroller.net

Forum: Compiler & IDEs Spezialität im Linker-Script?


Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte im Linker-Script einen bestimmten Bereich aus der
.text-section für einen sogenannten memory protection key reservieren.
Also ein memory hole erzeugen.
Damit möchte ich sicherstellen, dass beim flashen des Controllers
dieser Bereich nicht durch meine Daten überschrieben wird.

Hat jemand eine Ahnung, ob sich das realisieren lässt?
Ich habe schon das Manual vom ld durchgestöbert, bin aber nicht auf das
gestoßen was ich benötige. Oder ich habe da was übersehen.

Vielen Dank
Karsten

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin's noch mal.

Ich habe wahrscheinlich zu wenig Info's beigefügt.
Deshalb möchte ich jetzt das Ganze noch einmal etwas ausführlicher
gestalten.

Ich arbeite mit WinARM und möchte für den TMS470 entwickeln.
Da der TMS470 in bestimmten Flash-Speicherstellen sogenannte "Memory
Protection Key's" enthält die nicht überschrieben werden sollten,
suche ich nach einer Lösung, die es mir ermöglicht, ein elf-File zu
erzeugen das diese Speicherbelegung berücksichtigt.
Wow, was für ein langer Satz! Egal.

Zur besseren Veranschaulichung folgendes Bild als Bsp.

0x00000000 +-----------------------------
           |
           |
           |
0x0000FE00 +-----------------------------
           |  Memory Protection Key
0x00010000 +-----------------------------
           |
           |
           |
0xFFFFFFFF +-----------------------------

Die erste Möglichkeit dies zu Realisieren ist wahrscheinlich im
Linker-Script zu sehen. Ich weiß nur nicht wie.
Die zweite Möglichkeit ist evtl. die Deklaration eines Array's
entsprechender Größe, welches durch das Linkerscript auf die korrekte
Speicherposition gesetzt wird. Auch hier keine Ahnung wie ich das
machen kann.

Weiß jemand Rat?

Karsten

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fürchte, du musst zwei sections machen, eine davor und eine
danach.  Da der Compiler by default nur Code in .text packen
will, musst du die anderen Funktionen manuell [mittels
__attribute__((section("...")))] in den zweiten Bereich zwingen.

Mir ist nicht bekannt, dass der Linker nichtzusammenhängende
Speicherbereiche selbst behandeln könnte.

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal die Bereiche aufzuteilen, z.B.:

MEMORY
{
  STARTUP (rx) : ORIGIN = 0x00100000, LENGTH = 0x0000fe00
  KEY (rx)     : ORIGIN = 0x0010fe00, LENGTH = 0x00000200
  FLASH (rx)   : ORIGIN = 0x00110000, LENGTH = 0x00030000
  DATA (rw)    : ORIGIN = 0x00200000, LENGTH = 0x00010000
  STACK (rw)   : ORIGIN = 0x00210000, LENGTH = 0x00000000
}

und dann zusätzlich noch
  . = 0x0000000;
  .text : { *cstartup.o (.text) }>STARTUP =0

Theoretisch sollte dann der Platz für den KEY freibleiben.

Aber ohne Gewähr, weil ich bin auch noch absolute ld-script-newbie :-)

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.