Forum: Mikrocontroller und Digitale Elektronik Adresse einer Funktion definieren


von Steffen G. (steff_g)


Lesenswert?

Hallo miteinander,
ich scheitere gerade an dem Versuch eine Funktion an einer bestimmten 
Stelle im Flash abzulegen. In Assembler macht man das ja noch mit org 
<adresse> aber wie bekomme ich das jetzt in C hin?
Gibt es überhaupt eine möglichkeit das zu beeinflussen?

Vielen Dank
Steffen

von Peter II (Gast)


Lesenswert?

Steffen Gerner schrieb:
> aber wie bekomme ich das jetzt in C hin?
wozu?

> Gibt es überhaupt eine möglichkeit das zu beeinflussen
ja aber keine Standardisierte, dazu muss man über hints den linker 
beeinflussen.

von Steffen G. (steff_g)


Lesenswert?

Ich möchte eine Funktion in einen gesicherten bereich eines MSP430 
ablegen, den man nur mit JTAG programmieren kann, aber der BL nicht 
erreicht.

von Juergen (Gast)


Lesenswert?

Leg die Funktion in eine spezielle Section und sag dem Linker, wo die 
hinsoll.

von Steffen G. (steff_g)


Lesenswert?

Hallo Jürgen,
das hört sich gut an, doch wie mache ich sowas unter C?

von Sebastian Hepp (Gast)


Lesenswert?

Mich würde auch mal interessieren, wie man dem Compiler sagen kann, in 
welche Sektion eine Variable oder Funktion soll?

Danach musst du nur das Linkerscript anpassen und die Sektion an die 
entsprechende Adresse mappen.

von Guru (Gast)


Lesenswert?

Leider ist unbekannt um welchen Compiler es sich handelt (und welche 
CPU).
Für AVR-GCC gibt es hier 
http://www.rn-wissen.de/index.php/Avr-gcc/Interna Informationen.

von Guru (Gast)


Lesenswert?

Scheibenhonig. Habs überlesen. Es war MSP430 von TI. Da muss man mal in 
der Compiler-/Linker Docu schauen.

von Sebastian Hepp (Gast)


Lesenswert?

VIelleicht ist es wie beim GCC?

Versuch es mal mit:
1
foo __attribute__ ((section (".test"))) bar(...)
2
{
3
...
4
}

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.