WIP Collecting thoughts on this
I am attempting to make a fsbl using rtems.
This requires different linker script settings .
I could see 3 different ways to do this.
I used AI to prototype these 3 different ways.
- Replicate what aarch64/a53 does
https://gitlab.rtems.org/TheSamPrice/rtems/-/commit/0c57d00456b4c9fea9f967b6d77a299cee708cc8
This one is newer and shows up more often in the
-
Replicate what arm/stm32h7 does
https://gitlab.rtems.org/TheSamPrice/rtems/-/commit/07ee87c206e3c148d7d7492827f1e11b850e4467 -
Add more parameters to the linker script.
This is the method I settled on.
mb: parametrize the linker script to support FSBL (!1300) · Merge requests · RTEMS / RTOS / RTEMS · GitLab
This reduces the number of linker.yml files that need updated in the future.
One could create their own config.ini file like
[microblaze/kcu105_fsbl]
INHERIT = kcu105
# Tests / examples will not build with reduced code spaces.
BUILD_TESTS = False
BUILD_SAMPLES = False
BSP_MICROBLAZE_FPGA_IMAGE_MEMORY = BRAM
BSP_MICROBLAZE_FPGA_BRAM_LENGTH = 0x00100000
BSP_MICROBLAZE_FPGA_START_ADDR = 0x90000000
BSP_MICROBLAZE_FPGA_RAM_LENGTH = 0x10000000
| aarch64/a53 | arm/stm32h7 | Params in linkerscript | |
|---|---|---|---|
| What chooses the linker | ach BSP’s links: list |
a string option that picks an INCLUDE target | |
| Linker spec files | N files, each installs to target: linkcmds (only one linked per BSP) |
1 thin top-level + N body files, all installed; one INCLUDE-selected | |
| User override | switch BSP variants | override STM32H7_DEFAULT_LINKCMDS=... in config.ini |
|
| Where mistakes show up | spec-graph time (which linkcmds got linked) | link time (file not found if the option points at nothing) | |
found if the option points at nothing) |