WEAK Symbole

OP #2734383
Lesenswert?

Hallo,

ich frage mich grade was das WEAK Symbole in folgendem Code macht:
STM32 / CoIDE:
1
#define WEAK __attribute__ ((weak))
2

3

4

5
/*----------Declaration of the default fault handlers-------------------------*/
6
/* System exception vector handler */
7
void WEAK  Reset_Handler(void);
8
void WEAK  NMI_Handler(void);
9
void WEAK  HardFault_Handler(void);
10
void WEAK  MemManage_Handler(void);

später werden den unterschiedlichen Handlern der Default Handler 
zugewiesen oder so?
1
#pragma weak NMI_Handler = Default_Handler
2
#pragma weak HardFault_Handler = Default_Handler
3
#pragma weak MemManage_Handler = Default_Handler
4
#pragma weak BusFault_Handler = Default_Handler
5
#pragma weak UsageFault_Handler = Default_Handler

ist das so? was bedeutet dass?
Gast #2734399
Lesenswert?

>ist das so? was bedeutet dass?

Das bedeutet wenn die Funktion NMI_Handler nicht im Quellcode
auftaucht wird der Default_Handler stattdessen angesprungen.
Ist eine Funktion NMI_Handler im Quellcode wird sie benutzt.
Gast #2734555
Lesenswert?

holger schrieb:
> wird der Default_Handler stattdessen angesprungen.

nicht ganz.

In besagtem Falle wir der als WEAK deklarierte Handler vom Linker in den 
Code eingebunden. Zweck ist, daß man im Startup-Code eine Breitseite von 
Dummy-Handlern haben kann und trotzdem den Startup-Code nicht editieren 
muß, wenn in der Firmware, die darauf aufbaut, ein Handler deklariert 
worden ist.

W.S.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren