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 !