I’ve been binge-reading every documentation and source code I can get my hands on, and there is something I do not quite understand about the early boot process.
In the FU740-C000 the boot process is described as: ZSBL, then FSBL, then BBL. The ZSBL is in an on-chip ROM and the BBL is implemented by OpenSBI.
But what is the FSBL ? Is it a not-released-yet, or maybe not-upstreamed-yet, source ? I’ve looked into upstream’s OpenSBI’s source code for hints of PLL configuration (which is documented as being part of the FSBL’s job), and the only obvious matches are for another board. I’ve found that the linux kernel seems to have reclocking support for the CPU’s clock generator, but I guess the boot process does not just run on the 26MHz base clock until the kernel takes over.
And beyond the consideration of what does the FSBL’s job, I am trying to understand what the hart 0 is doing once the OS is booted up: as it lacks S-mode I do not expect it to be managed by the OS. Is it doing some monitoring tasks, like checking temperatures and updating fan PWM ? I see that the linux kernel can be configured to run in M mode, would the hart 0 be running linux for its own needs ?