This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Issues linking the startup file in a precompiled .lib

Background

On our company, we precompile our platform library into a .lib and provide these library to other developers.
Till the day, we've used the default startup provided in the Standard Peripheral Library from ST.

Goal

We need to allow the user to customize the Stack and Heap Size.

What we have tried

For this example we're using and STM32F103RB(Nucleo Board).


I've tried to split the startup we've been using in two; one will carry the Heap and Stack definitions and the other will be contain the vector definitions.
The file with the vectors definitions(stm32f1_md_vectors.s) will be included in the .lib file and the other will be linked by the Application developer and together with hiw own code and the .lib file.

These are the milestones I propose:

0) Compile the .lib and link it to an application to obtain the map.

1) Split the startup file in two

2) Assemble them and ensure they work together in the same way than the single startup

3) Assemble them and incorporate them into the .lib and ensure it works like point 2)

4) Assemble the vector stm32f1_md_vectors.s and incorporate in the .lib. Assemble the startup.s and link with the application and the .lib 

This is the code I'm using:

Code of the startup.s:



Code of the stm32f1_md_vectors.s file:



And the scatter:



Outcome
2) It works when I compile the files together in a sample project.

3) It succeds in incorporating them in the.lib , but when I try to link them with the application, it seems the RESET area isn't found. This is the linker output:

"..\..\.\output\generated\gf_hal.sct", line 10 (column 9): Error: L6236E: No section matches selector - no section to be FIRST/LAST.
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 1 error messages.
Error: Linker error 1


I attach three maps: the one obtained in the steps 0, 2 and 3.


Tomorrow I'll try to reproduce the steps 2 and 3 with a minimal library(and no propetary code) so I can provide sample projects.

0