Hallo, Programmcode wird normalerweise in das .Text Section gespeichert. Wie kann mann den Linker so ändern dass der Code ins .Data d.h. RAM verlagert wird. P.S: Programmiere mit dem MSP430-GCC + Eclipse an einem MSP-430. wäre für eure Tipps dankbar
Das kann man über Attribute dem Linker mitteilen. Ein Beispiel einer Funktionsdeklaration:
1 | void Funktion(void)__attribute__((section(".data"))); |
Mit der Zeile:
>
1 | void Funktion(void)__attribute__((section(".data"))); |
Hat es ganz gut funktioniert. Aber es müsste eine Möglichkeit geben den Linker Skript so umzuschreiben dass den Programmcode nicht in .Text sondern in das .Data Section speichert oder liege ich da falsch?
Zuerst wird der Code beim Programmieren ("Brennen"( des µC ins Flash geschrieben (so wie ROM-Code und initialisierte Variablen auch) und der Startup-Code schreibt die fürs RAM ausgelegten Funktionen dann ins RAM. Ohne den Umweg über Startupcode und Flash könntest du nur arbeiten, wenn du eine Hilfsanwenung hast, die das RAM beschreibt. Beispielsweise mit einem Debugger auf dem Hostrechner, der per JTAG mit dem Target MSP430 verbunden ist oder einen speziellen Bootloader oder einer dafür ausgelegten Routine auf dem MSP430. Das RAM Schreiben müsste bei jedem Power-On erfolgen.
Jepp Noo wrote: > Mit der Zeile: >>
1 | void Funktion(void)__attribute__((section(".data"))); |
> Hat es ganz gut funktioniert. Aber es müsste eine Möglichkeit geben den > Linker Skript so umzuschreiben dass den Programmcode nicht in .Text > sondern in das .Data Section speichert oder liege ich da falsch? Naja, weil es keinen wirklichen Sinn macht, den gesamten Programmcode in das RAM zu schreiben, ist das nicht vorgesehn. Wozu soll das auch gut sein? Der Speicher bei MSP430 ist eh linear aufgebaut, außerdem wird Code aus dem Flash genauso schnell ausgeführt wie aus dem RAM. Sowas macht ja nur bei einzelnen Funktionen, z.B. für spezielle Bootloader oder sowas Sinn. Zumal die MSP430 Reihe ja nicht gerade üppig mit RAM ausgestattet ist. Dir steht es natürlich frei die Linker-Scripte anzupassen, sind ja selbsterklärend. Einfach die Adressen ändern und schon landet alles im RAM. Schreib doch mal, wozu du sämtlichen Programmcode im RAM benötigst.
Hi, Möchte in der Tat einen FlashBoot Loader zusammen flicken allerdings nicht den über einen RS323 sondern USB. Da ich noch nicht weiß wie groß das Firmware ist, möchte ich den Loader ins RAM per JTAG Flashen. Daher auch meine Anfrage wegen dem Linker. Da das ganze über USB läuft, wird der auch die Stromversorgung gesichert ;)
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.