Hi,
is it possible to call a c-function during the initalization of the startup-file? Could you give me one simple example?
; Reset Handler EXPORT Reset_Handler Reset_Handler ; open lowlevelinit c-function ; IMPORT LowLevelInit ; Setup Power Management Controller (PMC) -------------------------------------- IF :DEF:NO_PMC_INIT ELSE IF PMC_SETUP != 0 LDR R0, =PMC_BASE
Do you know any important things writing this init-function? How do the startup-file know the place / the c-file , where the function is declared?
best regards Alan
It is perfectly fine using C in your start up code, provided that you follow some guidelines:
1. All (C-)functions that are called from startup code must be located in a root region (load address == exec address)
Scatter loading has not been taken place, yet.
2. The supervisor stack has been set up.
We need some stack for local variables, etc. You never know what the compiler does exactly.
3. No functions from the C library must be called directly or indirectly.
The C library initialization has not been executed.
4. Know what you are doing.
Some startup tasks might be easier to implement in C, others are not.
Regards Marcus http://www.doulos.com/arm/
excellent comments, Marcus. If the OP is indeed busy with some EmbeddedArtists code as it looks like, then the LowLevelInit function certainly uses C library function calls, as far as I can recall!
Thanks, Tamir. One more:
6. Don't rely on initial values of global variables
What happened to 5?
Left as exercise :-) We are a training company you know.
Tamir was expected to have written #5
View all questions in Keil forum