The freeloader now assumed ddr is not yet initialized, so we have to copy uboot-spl from a fixed address in xip spiflash to a shared memory(here we use L2 cache CLM feature to provide a Cluster Local Memory), and then go to uboot spl, and let uboot spl to initialize ddr memory, and in uboot spl, you can do far more things than what you can do in freeloader.
And then uboot spl will initialize ddr memory, and load opensbi + uboot + dtb .composed uboot FIT image from fixed address in xip spiflash, and got to opensbi.
And in opensbi, it will disable L2 cache CLM feature, and enable L2 cache, and then go to Uboot, and uboot will load kernel and rootfs image, and boot linux kernel.
We have introduced a new branch called dev_nuclei_6.6_v2_spl to provide support for uboot spl.
With new introduced uboot spl, now boot process changed:
freeloader -> opensbi + uboot -> kernel
->freeloader -> uboot-spl -> opensbi + uboot -> kernel
The freeloader now assumed ddr is not yet initialized, so we have to copy
uboot-spl
from a fixed address in xip spiflash to a shared memory(here we use L2 cache CLM feature to provide a Cluster Local Memory), and then go to uboot spl, and let uboot spl to initialize ddr memory, and in uboot spl, you can do far more things than what you can do in freeloader.And then uboot spl will initialize ddr memory, and load
opensbi + uboot + dtb
.composed uboot FIT image from fixed address in xip spiflash, and got to opensbi.And in opensbi, it will disable L2 cache CLM feature, and enable L2 cache, and then go to Uboot, and uboot will load kernel and rootfs image, and boot linux kernel.