Forum: Mikrocontroller und Digitale Elektronik WEAK Symbole


von Moritz M. (avrprogger)


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?

von holger (Gast)


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.

von W.S. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.