The PMS bootcode is hosted in this directory. An RTL/ASIC
and FPGA
SystemVerilog boot ROMs are auto-generated from the compiled boot code.
The autogenerated ASIC boot ROM can be found under:
ips/pulp_soc/rtl/pulp_soc/asic_autogen_rom.sv
It's size is currently 8KiB (32 x 2048 bits).
Currently there are 2 bits available to select the boot mode.
bootsel value |
Meaning |
---|---|
2'h0 | default boot (to be determined) |
2'h1 | JTAG boot for openocd (busy loop) |
2'h2 | QSPI boot (read from flash and jump to entry) |
2'h3 | preloaded boot (jump to address in bootaddr register) |
To be determined
In this mode we just send the fabric controller into a busy loop. The debug module then can take it from there. It will sent a debug request interrupt that redirect the control flow of the core to the debug rom.
The core will issue a series of commands to fetch the elf from a flash module attached to qspi. Afterwards it will jump to the entry point (information is also in the flash image).
The cores will read the boot address register and directly jump there. This assumes that the elf image has been written to the L2 previously and the boot address is set correctly.
More information about the booting steps with different booting modes in a testbench environment can be found under rtl/tb/README.md