Ich möchte Code im RAM laufen lassen und diesen erst wenn er gebraucht wird ins RAM kopieren. Ich brauche das RAM zunächst komplett und erst wenn Code im RAM laufen soll, kann dann dieser den gesamtem RAM Bereich neu benutzen. Alle Variablen im RAM werden dann nicht mehr gebraucht. Dazu habe ich entsprechend einer AN das Linker-File modifiziert und den Code angepasst. Im Prinzip funktioniert es auch, aber nicht ganz so wie ich das möchte. Es sieht so aus, als ob der Code schon beim Starten ins RAM geladen und der benötigte Bereich vom "normalen" RAM abgezweigt wird. Das zeigt auch das .map File. Wie kann ich denn bitte den Linker (benutze CCS 11.1) dazu bringen das so zu machen wie ich das möchte? Danke für Hinweise.
Bot N. schrieb: > und erst wenn > Code im RAM laufen soll, kann dann dieser den gesamtem RAM Bereich neu > benutzen. Wo ist der Stack dann? Bot N. schrieb: > Es sieht so aus, als ob der Code schon beim Starten ins RAM geladen > und der benötigte Bereich vom "normalen" RAM abgezweigt wird. Das > zeigt auch das .map File. Kann man im Linkerfile overlay spezifizieren? RTFM ;) Und dass der die RAM-Funktion eben noch nicht kopieren soll. Aber kompiliert und gelinkt muss sie als solche schon sein. Irgendwo in den Flash wird der die auch rein stempeln. Dann würde es reichen, im C-Code * RAM-Start * RAM-Ende * Startadresse der RAM-Funktion irgendwo-im-Flash * Länge der RAM-Funktion zu kennen. Dann gibt es eine Funktion im ROM, die den Point-of-no-return darstellt. Die setzt den Stackpointer auf RAM-Ende und kopiert selbst den auszuführenden Code auf RAM-Start und springt dann da hin. mfg mf
:
Bearbeitet durch User
Achim M. schrieb: > Kann man im Linkerfile overlay spezifizieren? RTFM ;) > Und dass der die RAM-Funktion eben noch nicht kopieren soll. Aber > kompiliert und gelinkt muss sie als solche schon sein. Irgendwo in den > Flash wird der die auch rein stempeln. > > Dann würde es reichen, im C-Code > * RAM-Start > * RAM-Ende > * Startadresse der RAM-Funktion irgendwo-im-Flash > * Länge der RAM-Funktion > zu kennen. > > Dann gibt es eine Funktion im ROM, die den Point-of-no-return darstellt. > Die setzt den Stackpointer auf RAM-Ende und kopiert selbst den > auszuführenden Code auf RAM-Start und springt dann da hin. > > mfg mf Soweit funktioniert es ja schon. Aber ich weiss nicht mit welchen Linkeranweisungen man bei CCS Overlays erzeugen kann und das Laden abschaltet.
Bot N. schrieb: > Aber ich weiss nicht mit welchen > Linkeranweisungen man bei CCS Overlays erzeugen kann und das Laden > abschaltet. Nur zur Info. Inzwischen habe ich durch diverse Dokus und Beiträge doch herausgefunden wie es geht. Durch passende #PRAGMA CODE_SECTION Anweisungen im Code und durch UNION und FLASH : origin Anweisungen im Linker-Commad-File kann man das mit CCS hinbekommen.
:
Bearbeitet durch User
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.