Booting another ELF from RTEMS
jbrandmeyer at planetiq.com
Tue Apr 16 16:38:00 UTC 2019
I'm interested in using RTEMS as both a featureful bootloader and as
my application environment. Is there a straightforward way to use
RTEMS as a bootloader itself?
In principle, the following seems like it should work:
- Provide a bootloader BSP that links RTEMS into an address range that
is non-overlapping with the application's load range
- Provide a standard ELF loader from ... somewhere? Maybe I can
borrow some of the RTEMS loader logic to do this? Maybe the Xilinx
FSBL can be adapted to the purpose?
- Jump to the ELF's entry point.
One of the things I'm uncertain about is whether or not the Zynq BSP's
startup logic is idempotent. Is there some startup logic that is not
safe to run twice?
This is something of an X/Y problem. The real problem I'm trying to
solve is to provide a safe-mode ROM software image alongside the
field-programmable software image, where the ROM is capable of
receiving updates to the field-programmable image. When my team
sketched out the concept, it seemed like the most reliable way to do
this was for the FSBL to unconditionally load the safe-mode image, and
that the safe-mode image would chain-load into the appropriate
application image. But if RTEMS support for chain-loading in this way
isn't adequate, then the FSBL will have to conditionally load either
the safe-mode or application image.
Chain-loading is attractive due to some implementation details of the
flash layout on our project. I'd rather not go through the process of
porting and embedding YAFFS into the FSBL if I can avoid it.
More information about the users