Verständnisproblem bei Linker Script

Gast #5232245
Lesenswert?
• ▲
▼
Ich habe ein Linker Script für STM32F4 Discovery Board, welches ich noch 
nicht ganz verstehe. Ich habe mich bisher mit der Thematik nicht 
beschäftigt, glaube aber, hier nachholen zu müssen.

Es gibt im ld File eine Stelle

ENTRY(Reset_Handler)

wo der Einstiegspunkt angegeben wird.

Zusätzlich wird die IR Vektor Tabelle im Flash abgelegt.

1
  /* The startup code goes first into FLASH */
2
  .isr_vector :
3
  {
4
    . = ALIGN(4);
5
    KEEP(*(.isr_vector)) /* Startup code */
6
    . = ALIGN(4);
7
  } >FLASH

Der erste Eintrag im Code ist der Reset_Handler:

1
/**
2
  *@brief The minimal vector table */
3
__attribute__ ((used,section(".isr_vector")))
4
void (* const g_pfnVectors[])(void) =
5
{
6
  /*----------Core Exceptions-------------------------- */
7
  (void *)&pulStack[STACK_SIZE-1],  /*!< The initial stack pointer */
8
  Reset_Handler,                    /*!< Reset Handler */
9
  ...
10
  ...
11

12
};

wieso ist die Angabe des Entry Points notwendig, wo doch nach einem 
Reset aufgrund der Vektortabelle automatisch auf den startup code 
gesprungen wird?

Danke !
(Firma: keine) #5232417
Lesenswert?
• ▲
▼
Michael W. schrieb:
>
> ENTRY(Reset_Handler)
>

der hat in diesem Zusammenhang keinerlei Bedeutung. Das wird nur dort 
benötigt, wo der Linker mit einem Loader zusammen operiert. Wie du schon 
richtig erkannt ist, ist das bei einem Standalone image nicht der Fall.

Es KANN sein, dass deine IDE darüber Annahmen trifft und so Sachen macht 
wie beim Reset im Quellcode auf die Stelle zu zeigen, die dort 
hinterlegt ist, aber das ist ja maximal für das Debugging relevant.

Du musst ja sowieso aus dem generierten (relozierbaren) output 
(i.d.Regel elf file) ein Binärimage generieren (objcopy o.ä.). Damit 
geht auch was immer im Entry() steht komplett verloren.

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.