Targets typically contains a bootloader that is executed after the target’s processor exits reset. A bootloader is specific to a target’s processor and hardware configuration and is responsible for the low level initialization of the hardware resources needed to load and execute an operating system’s kernel. In the case of RTEMS this is the RTEMS executable
I understand from that that the RTEMS executable does the bootloader functionality mentioned before.
But then it carries on about the bootloader:
Bootloaders vary in size, complexity and functionality...
So the RTEMS executable as bootloader and possibly others?
If RTEMS is to run from RAM the bootloader reads the image and loads the code...
This seems to negate the above that the RTEMS executable is the bootloader unless there is kind of a “bootloader-RTEMS executable” along with an “RTEMS to be run”.
The more I read, the more confused I am. I’m targetting ZynqMP, I’m familiar with its booting system, FSBL, etc. Do I need FSBL, do I need something like u-boot on top?
ZynqMP is a complicated target and there are many conflicting terms. FSBL is the First Stage BootLoader. There is also a zeroth stage bootloader as the boot ROM that reads and decodes the boot.bin from SD/flash.
For ZynqMP, u-boot in boot.bin is optional and may be replaced with RTEMS directly or a different bootloader, but RTEMS on ZynqMP relies on Arm Trusted Firmware (TF-A/ATF) in the form of bl31 that is incorporated in boot.bin. If bl31 is not present in boot.bin, certain firmware services will not operate as expected (at least secondary core bringup and system reset).
It is certainly complicated and conflicting without the will of learning and using right (or at least universally used) and unambiguous terminology.
In ZynqMP, the Boot ROM is a loader, not a bootloader and doesn’t count as bootloading stage, as the F in FSBL indicates.
In Linux and also PC is what the BIOS or UEFI does, no one calls that bootloader, for goodness sake.
If you develop for some CPU maker and don’t follow their definitions, obviously they won’t follow yours either and “conflicting terms” will remain.
Trying to criticize constructively
Source:
Exploring Zynq MPSoC, Louise Crockett et al. U of Strathclyde, 2019. ch. 14
Wikipedia: Booting_process_of_Linux
So it looks like it could be enough with FSBL, ATF and PMU fw plus RTEMS as bin, all that in the FAT boot.bin and no other filesystem needed?
No, I couldn’t. More specifically, I didn’t try any more.
At the end of the day, I’m mostly an FPGA person.
And I got abducted by other projects, so hopefully release 7 has a less clumsy way of loading RTEMS into Zynq MPSoC
I wrote this from my work about it: