ARMCC: CONVERTING A PROJECT TO MICROLIB
How can I convert my existing project to use MicroLib?
When I check Use MicroLIB in my project options, RealView gives me the following errors:
Error: L6218E: Undefined symbol __use_two_region_memory. Error: L6218E: Undefined symbol __initial_sp.
To use MicroLIB with an existing project, you need to make a few changes to your Startup.s module.
First, replace the code:
Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \ FIQ_Stack_Size + IRQ_Stack_Size + USR_Stack_Size) AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size Stack_Top EQU Stack_Mem + Stack_Size
...with the following (note the removal of USR_Stack_Size from the second line).
ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \ FIQ_Stack_Size + IRQ_Stack_Size) AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE USR_Stack_Size __initial_sp SPACE ISR_Stack_Size Stack_Top
Then, change the code:
MOV SP, R0 SUB SL, SP, #USR_Stack_Size
IF :DEF:__MICROLIB EXPORT __initial_sp ELSE MOV SP, R0 SUB SL, SP, #USR_Stack_Size ENDIF
Heap_Mem SPACE Heap_Size
__heap_base Heap_Mem SPACE Heap_Size __heap_limit
Finally, add the following code before the "User Initial Stack & Heap" comment, and add an ENDIF before the END statement of the module.
IF :DEF:__MICROLIB EXPORT __heap_base EXPORT __heap_limit ELSE
The following Discussion Forum threads may provide information related to this topic.
Last Reviewed: Tuesday, March 23, 2010
of your data.