Was bedeutet [SCHWACH] im STM32-Startassemblierungscode?

7

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
Amin
quelle
Sind IMPORT SystemInitund IMPORT __mainwirklich eingerückt wie hier gezeigt?
Peter Mortensen

Antworten:

19

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

dim
quelle
1
(Vielleicht stattdessen Link zur nicht-mobilen Version, en.wikipedia.org/wiki/Weak_symbol )
Peter Mortensen