What does [WEAK] mean in an STM32 startup file?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
2
down vote

favorite












I was reading the STM32F407 startup file in Keil software to gather some information. I faced this problem: What is the [WEAK] symbol used for?



A part of the code that this symbol has been used in is:



Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main

LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP


There are other places in the code that this symbol has been used in. I just bring a part as an instance.










share|improve this question























  • Are IMPORT SystemInit and IMPORT __main really indented as shown here?
    – Peter Mortensen
    42 mins ago














up vote
2
down vote

favorite












I was reading the STM32F407 startup file in Keil software to gather some information. I faced this problem: What is the [WEAK] symbol used for?



A part of the code that this symbol has been used in is:



Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main

LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP


There are other places in the code that this symbol has been used in. I just bring a part as an instance.










share|improve this question























  • Are IMPORT SystemInit and IMPORT __main really indented as shown here?
    – Peter Mortensen
    42 mins ago












up vote
2
down vote

favorite









up vote
2
down vote

favorite











I was reading the STM32F407 startup file in Keil software to gather some information. I faced this problem: What is the [WEAK] symbol used for?



A part of the code that this symbol has been used in is:



Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main

LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP


There are other places in the code that this symbol has been used in. I just bring a part as an instance.










share|improve this question















I was reading the STM32F407 startup file in Keil software to gather some information. I faced this problem: What is the [WEAK] symbol used for?



A part of the code that this symbol has been used in is:



Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main

LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP


There are other places in the code that this symbol has been used in. I just bring a part as an instance.







stm32 assembly keil






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 5 mins ago









Peter Mortensen

1,58031422




1,58031422










asked 4 hours ago









Amin

725




725











  • Are IMPORT SystemInit and IMPORT __main really indented as shown here?
    – Peter Mortensen
    42 mins ago
















  • Are IMPORT SystemInit and IMPORT __main really indented as shown here?
    – Peter Mortensen
    42 mins ago















Are IMPORT SystemInit and IMPORT __main really indented as shown here?
– Peter Mortensen
42 mins ago




Are IMPORT SystemInit and IMPORT __main really indented as shown here?
– Peter Mortensen
42 mins ago










1 Answer
1






active

oldest

votes

















up vote
5
down vote



accepted










It says the implementation of the function should be weakly linked (as opposed to strongly linked, which is the usual).



This allows providing a "fallback" implementation of a function, in case no other (strongly linked) is found.



This is often used for default interrupt handlers in bare-metal MCU frameworks. This way, when you implement an interrupt, you just have to write your function, without having to remove the default one from the sources, and the linker does the job.



See https://en.m.wikipedia.org/wiki/Weak_symbol






share|improve this answer




















  • (Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
    – Peter Mortensen
    40 mins ago










Your Answer




StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");

StackExchange.ifUsing("editor", function ()
return StackExchange.using("schematics", function ()
StackExchange.schematics.init();
);
, "cicuitlab");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "135"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f403511%2fwhat-does-weak-mean-in-an-stm32-startup-file%23new-answer', 'question_page');

);

Post as a guest






























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
5
down vote



accepted










It says the implementation of the function should be weakly linked (as opposed to strongly linked, which is the usual).



This allows providing a "fallback" implementation of a function, in case no other (strongly linked) is found.



This is often used for default interrupt handlers in bare-metal MCU frameworks. This way, when you implement an interrupt, you just have to write your function, without having to remove the default one from the sources, and the linker does the job.



See https://en.m.wikipedia.org/wiki/Weak_symbol






share|improve this answer




















  • (Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
    – Peter Mortensen
    40 mins ago














up vote
5
down vote



accepted










It says the implementation of the function should be weakly linked (as opposed to strongly linked, which is the usual).



This allows providing a "fallback" implementation of a function, in case no other (strongly linked) is found.



This is often used for default interrupt handlers in bare-metal MCU frameworks. This way, when you implement an interrupt, you just have to write your function, without having to remove the default one from the sources, and the linker does the job.



See https://en.m.wikipedia.org/wiki/Weak_symbol






share|improve this answer




















  • (Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
    – Peter Mortensen
    40 mins ago












up vote
5
down vote



accepted







up vote
5
down vote



accepted






It says the implementation of the function should be weakly linked (as opposed to strongly linked, which is the usual).



This allows providing a "fallback" implementation of a function, in case no other (strongly linked) is found.



This is often used for default interrupt handlers in bare-metal MCU frameworks. This way, when you implement an interrupt, you just have to write your function, without having to remove the default one from the sources, and the linker does the job.



See https://en.m.wikipedia.org/wiki/Weak_symbol






share|improve this answer












It says the implementation of the function should be weakly linked (as opposed to strongly linked, which is the usual).



This allows providing a "fallback" implementation of a function, in case no other (strongly linked) is found.



This is often used for default interrupt handlers in bare-metal MCU frameworks. This way, when you implement an interrupt, you just have to write your function, without having to remove the default one from the sources, and the linker does the job.



See https://en.m.wikipedia.org/wiki/Weak_symbol







share|improve this answer












share|improve this answer



share|improve this answer










answered 4 hours ago









dim

12.6k22263




12.6k22263











  • (Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
    – Peter Mortensen
    40 mins ago
















  • (Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
    – Peter Mortensen
    40 mins ago















(Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
– Peter Mortensen
40 mins ago




(Perhaps link to the non-mobile version instead, en.wikipedia.org/wiki/Weak_symbol)
– Peter Mortensen
40 mins ago

















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f403511%2fwhat-does-weak-mean-in-an-stm32-startup-file%23new-answer', 'question_page');

);

Post as a guest













































































Comments

Popular posts from this blog

Long meetings (6-7 hours a day): Being “babysat” by supervisor

Is the Concept of Multiple Fantasy Races Scientifically Flawed? [closed]

Confectionery