Hallo Leute,
ich bin beim Programmieren des STM32F429 auf den StartupCode und das
LinkerScript gestoßen. Ich würde gerne versuchen, eigenen Code und ein
LinkerScript zu schreiben. Dazu belese ich mich im Moment mit allen
möglichen Tutorials, Reference Manuals, etc. und versuche nebenbei den
Assembler-StartupCode zu verstehen, den mir STM CubeMx für die MDK-Arm
toolchain ausgespuckt hat. Dabei verwirrt mich z.B. folgender Code:
1 | ; Vector Table Mapped to Address 0 at Reset
|
2 | AREA RESET, DATA, READONLY
|
3 | EXPORT __Vectors
|
4 | EXPORT __Vectors_End
|
5 | EXPORT __Vectors_Size
|
6 |
|
7 | __Vectors DCD __initial_sp ; Top of Stack
|
8 | DCD Reset_Handler ; Reset Handler
|
9 | DCD NMI_Handler ; NMI Handler
|
10 | DCD HardFault_Handler ; Hard Fault Handler
|
11 | DCD MemManage_Handler ; MPU Fault Handler
|
12 | DCD BusFault_Handler ; Bus Fault Handler
|
13 | DCD UsageFault_Handler ; Usage Fault Handler
|
14 | DCD 0 ; Reserved
|
15 | DCD 0 ; Reserved
|
16 | DCD 0 ; Reserved
|
17 | DCD 0 ; Reserved
|
18 | DCD SVC_Handler ; SVCall Handler
|
19 | DCD DebugMon_Handler ; Debug Monitor Handler
|
20 | DCD 0 ; Reserved
|
21 | DCD PendSV_Handler ; PendSV Handler
|
22 | DCD SysTick_Handler ; SysTick Handler
|
23 |
|
24 | ; External Interrupts
|
25 | DCD WWDG_IRQHandler ; Window WatchDog
|
26 | DCD PVD_IRQHandler ; PVD through EXTI Line detection
|
27 | DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
|
28 | DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
|
29 | DCD FLASH_IRQHandler ; FLASH
|
30 | DCD RCC_IRQHandler ; RCC event
|
31 |
|
32 | ...
|
33 |
|
34 | DCD I2C3_ER_IRQHandler ; I2C3 error
|
35 | DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
|
36 | DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
|
37 | DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
|
38 | DCD OTG_HS_IRQHandler ; USB OTG HS
|
39 | DCD DCMI_IRQHandler ; DCMI
|
40 | DCD 0 ; Reserved
|
41 | DCD HASH_RNG_IRQHandler ; Hash and Rng
|
42 | DCD FPU_IRQHandler ; FPU
|
43 | DCD UART7_IRQHandler ; UART7
|
44 | DCD UART8_IRQHandler ; UART8
|
45 | DCD SPI4_IRQHandler ; SPI4
|
46 | DCD SPI5_IRQHandler ; SPI5
|
47 | DCD SPI6_IRQHandler ; SPI6
|
48 | DCD SAI1_IRQHandler ; SAI1
|
49 | DCD LTDC_IRQHandler ; LTDC
|
50 | DCD LTDC_ER_IRQHandler ; LTDC error
|
51 | DCD DMA2D_IRQHandler ; DMA2D
|
52 |
|
53 | __Vectors_End
|
Was passiert bei
und
???
Wird dort die momentane Adresse des PC gespeichert?
Viele Grüße
Willy