Ich habe die STM32F407-Startdatei in der Keil-Software gelesen, um einige Informationen zu sammeln. Ich war mit diesem Problem konfrontiert: Wofür wird das [WEAK]
Symbol verwendet?
Ein Teil des Codes, in dem dieses Symbol verwendet wurde, ist:
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
END
IMPORT SystemInit
undIMPORT __main
wirklich eingerückt wie hier gezeigt?Antworten:
Es heißt, dass die Implementierung der Funktion schwach verknüpft sein sollte (im Gegensatz zu stark verknüpft, was üblich ist).
Dies ermöglicht die Bereitstellung einer "Fallback" -Implementierung einer Funktion, falls keine andere (stark verknüpfte) gefunden wird.
Dies wird häufig für Standard-Interrupt-Handler in Bare-Metal-MCU-Frameworks verwendet. Auf diese Weise müssen Sie beim Implementieren eines Interrupts nur Ihre Funktion schreiben, ohne die Standardfunktion aus den Quellen entfernen zu müssen, und der Linker erledigt die Aufgabe.
Siehe https://en.wikipedia.org/wiki/Weak_symbol
quelle