Questions about the boot loaders and flash chip

Are the source code and binaries available for the ZSBL, FSBL (as stored in QSPI0 flash), and BBL? I guess the binary for the ZSBL isn’t super important since it’s in ROM. If I can get the FSBL binary, am I free to use OpenOCD with the provided .cfg to overwrite QSPI0 flash memory with my own boot loader (run with MSEL 0001), and then just restore it with OpenOCD again if I want to revert to the default boot sequence?

The board seems un-brickable since you can always execute from the external QSPI1, but let me know if that’s a bad assumption. I picked up this board with the intention of learning about board and OS bring-up on a multi-core system, which is why I’m trying to interrupt the boot as early as possible. Thanks for any help!

Edit: I got my board today and downloaded the QSPI0 flash. Turns out there’s more than just the FSBL on it; there’s a second partition that is significantly larger. Not sure what it does though. So, I think I’ve got that piece of the puzzle covered, though an official link would certainly help assuming others want to do the same things I am.

1 Like

bbl is built from the github riscv/riscv-pk project. I don’t know about the others.

The Getting Started Guide mentions that the flash contains a “recovery kernel”, I’m guessing that’s what you found on the second, larger partition. The Guide doesn’t mention what it’s actually for, or when/how you would ever boot into it and do anything with it… MSEL 0110 says it will boot the “rescue image from flash (preprogrammed)” which might be talking about the recovery kernel.