[ AVR-GCC] Funktionen an eine bestimmte Stelle im Speicher

Gast #1990820
Lesenswert?

Ich Post das mal unter gcc, da das glaube ich nicht unbedingt 
avr-spezifisch ist:
Ich hab jetzt z.B. zwei Funktionen eine Funktion soll ganz normal an den 
Anfang des Flashs ( zum ausführen als normale Routine, eine zweite soll 
ans Ende ( Bootloader ), wie schaff ich das mit einem Schlag  ( = als 
ein Projekt).
#1991166
Lesenswert?

Max schrieb:
> Wo ist das Linkerscript ?

Die stehen unter:
xxxx\WinAVR\avr\lib\ldscripts\

Sofern ich mich jetzt nicht irre:
Welches Script verwendet wird, hängt vom verwendeten AVR ab.
Wenn man ihm keines angibt, nimmt er sein eingebautes Defaultscript bzw. 
beim AVR-GCC (AVR-LD) hängt dieses von der Option -mmcu ab.
Dem Linker kann auch über die Kommandozeile gesagt werden, welches 
Script er verwenden soll. Du müßtest dann eines anpassen und im dieses 
Script per Kommandozeile mitteilen.

Du kannst dem Linker aber auch über die Kommandozeile angeben, wo er 
eine bestimmte Section hinpacken soll. Dann brauchst du dir kein 
Linkerscript schreiben (anpassen).
Wenn ich mich richtig erinnere ist die Option für die Kommandozeile so:
-WL,--section-start=DeineSection=0x1E000

Das Manual für AVR-LD ist dein Freund.
#1991197
Lesenswert?

Max schrieb:
> Ich hab jetzt z.B. zwei Funktionen eine Funktion soll ganz normal an den
> Anfang des Flashs

Eine solche Trennung ist sinnvoll nur möglich, wenn Deine 
Bootloader-Funktion mit Sicherheit nichts aus der libc verwendet. Das 
ruft nach Dauer-Trouble, denn Du baust Dir damit eine Falle, die bei 
jeder Änderung bedacht sein will.

Denn sonst hast Du die Wahl, die Library ebenfalls ans Ende zu legen, 
aber für alle Programmteile (auch die des Hauptprogramms).  Das würde 
Dir den Bootloader aufblasen.  Oder aber der Bootloader springt in den 
Library-Teil des Hauptprogramms, was aus offensichtlichen Gründen 
ebenfalls Käse wäre.

Ich habe auch keine Idee, wo Du den C-Startup-Code wie unterbringen 
möchtest.

Wenn Du zwei unabhängige Programme hast:  Was spricht dagegen, sie 
unabhängig zu übersetzen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren