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).
Im Linkerskript eine neue Sektion definieren und deren Position innerhalb von .text vorgeben. Dann in C die Funktion mit __attribute__((section("deine_sektion"))) deklarieren.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.