OpenSBI firmware with dynamic info (FW_DYNAMIC) is a firmware which gets information about next booting stage (e.g. a bootloader or an OS) and runtime OpenSBI library options from previous booting stage.
The previous booting stage will pass information to FW_DYNAMIC by creating struct fw_dynamic_info in memory and passing its address to FW_DYNAMIC via a2 register of RISC-V CPU. The address must be aligned to 8 bytes on RV64 and 4 bytes on RV32.
A FW_DYNAMIC firmware is particularly useful when the booting stage executed prior to OpenSBI firmware is capable of loading both the OpenSBI firmware and the booting stage binary to follow OpenSBI firmware.
A platform can enable FW_DYNAMIC firmware using any of the following methods.
- Specifying
FW_DYNAMIC=y
on the top levelmake
command line. - Specifying
FW_DYNAMIC=y
in the target platform objects.mk configuration file.
The compiled FW_DYNAMIC firmware ELF file is named fw_dynamic.elf. It's expanded image file is fw_dynamic.bin. Both files are created in the platform specific build directory under the build/platform/<platform_subdir>/firmware directory.
The FW_DYNAMIC firmware does not require any platform specific configuration parameters because all required information is passed by previous booting stage at runtime via struct fw_dynamic_info.