msp430-gcc: Prolog und Epilog einer Funktion mit in Section

OP #3681876
Lesenswert?
• ▲
▼
Ich hab seit langem mal wieder den msp430-gcc angeworfen (Version 4,8 in 
der CCE6 Version von TI). Und ich möchte einen Flash-Updater in eine 
Firmware integrieren. Mit angepasstem Linker-Script klappt das schon 
ganz gut, sämtliche Funktionen die ich für das Eigenupdate benötige 
landen in einer eigens dafür angelegten Section. Allerdings haut mir der 
GCC die Epiloge nicht in diese Section sondern in die normale .text 
Section, so dass ich an einer bestimmten Stelle ein Problem bekomme, 
weil ich irgendwann den Sektor lösche, in dem der Epilog der 
Flash-Funktion steht. Und dann ist natürlich Absturz.
Ich bin jetzt nicht der absolute GCC Crack und Google hat bisher auch 
nicht weiter geholfen. Wie krieg ich das hin, dass er die gesamte 
Funktion mit allem, was dazugehört, in die angegebene Section wirft?
Persönliche Seite #3681960
Lesenswert?
• ▲
▼
Da ich von msp430 keine Ahnung hab, hab ich mal ein Blick ins msp430 
Backend geworfen, allerdings den offiziellen GCC 4.9.

Da gibt's "epilogue_helper": 
http://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_9-branch/gcc/config/msp430/msp430.md?revision=210656&view=markup#l924

Diese wiederum sind implementiert in der libgcc: 
http://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_9-branch/libgcc/config/msp430/epilogue.S?view=co&revision=209304&content-type=text%2Fplain

Du müsstest diese Funktionen auch in deine Sonder-Sections legen.

Mit deinem Ansatz ist aber mit weiteren Problemen zu rechnen:

- Evtl. fehlen dem Flash-Updater dann diese Funktionen.

- Ditto für zip andere Fnuktionen der libgcc zu denen (implizite)
  Aufrufe im erzeugten Code sein können: Vergleiche, Shifts,
  Multiplikation, float Arithmetik, ... siehe Quellen
  in $GCC_SOURCE/libgcc/config/msp430/

Um solchen und ähnlichen Problemen aus dem Weg zu gehen, sind daher 
Flash-Updater (Bootloader) und Anwendung üblicherweise 2 getrennte 
Projekte.

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.