Forum: Compiler & IDEs Funktion an physikalische Adresse anordnen


von Resonator (Gast)


Lesenswert?

Hi C-Profis,

gibt es in AVRGCC eine einfache Möglichkeit, eine Funktion auf eine 
vorgegebene physikalische Adresse zu legen? Umständliche Wege sind mir 
bekannt, wie z.B. ein separates Programm für eine bestimmte Adresse zu 
linken. Ich stelle mir so etwas wie eine einfache #pragma Anweisung 
vor...?

von mork (Gast)


Lesenswert?

So einfach ist das leider nicht, aber auch nicht besonders schwer - Du 
definierst im Linkerscript eine neue section und legst diese an die 
Adresse, wo die Funktion liegen soll. Im Programm kann dann per 
__attribute((section(".mysection"))) diese Funktion in die section 
platziert werden.

MfG Mark

von Stefan E. (sternst)


Lesenswert?

Man sollte vielleicht ergänzen, dass das nicht unbedingt über das 
Linkerscript erfolgen muss. Man kann das auch über die Kommandozeile 
machen.

-Wl,--section-start=<section>=<address>

von NurEinGast (Gast)


Lesenswert?

Nur Neugierig - wofür bruacht man so was ?

Gruss
NurEinGast

von Stefan E. (sternst)


Lesenswert?

> Nur Neugierig - wofür bruacht man so was ?

Ein mögliches Szenario: das Programm soll den Flashinhalt verändern. Die 
dazu nötige SPM-Instruktion kann aber nur im Bootsektorbereich 
ausgeführt werden, also muss die entsprechende Funktion dort platziert 
werden.

von Resonator (Gast)


Lesenswert?

Bingo :-)

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