Programmcode mit dem Linker ins RAM!

OP (Firma: imbiss) #718055
Lesenswert?
• ▲
▼
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
OP (Firma: imbiss) #718079
Lesenswert?
• ▲
▼
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?
Persönliche Seite #718093
Lesenswert?
• ▲
▼
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.
#718444
Lesenswert?
• ▲
▼
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.
OP (Firma: imbiss) #719060
Lesenswert?
• ▲
▼
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 
;)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.