Booting Software Mechanism

I am new to PolarFire SoC Icicle Kit and I have researched my question almost everywhere but I could not get it. Maybe I can understand the mechanism in this forum. My question is that if we want to boot the board from a software that we uploaded, how it is called from the memory? Does HSS run first, then it boots the software, or does our software boot from the memory directly? How can I see at what point the software is booted? Thank you for your answers.

Hi @coder_iguana :slight_smile: You might be better off asking in our GitHub discussions for PolarFire SoC (as it has more activity), you can find it here

But to answer your question, it depends! We have 128KB of eNVM which can be used for application storage, if you’re writing a bare metal app and it fits in this 128K you can run it from there. When the app starts up it will re-locate itself to L2 scratchpad memory and then run. Our example projects on GitHub provide build configurations for this and you can find info on it here and you can program the eNVM via Libero or SoftConsole.

The HSS is used when your application is bigger than 128KB and/or you have multiple applications (AMP). The HSS runs from eNVM (and relocates to scratchpad) and configures the system, when you build your application you can convert it to a payload which you can program into offchip memory (e.g EMMC, SD card, QSPI) and the HSS will boot and then load your application into DDR or scratchpad/LIM and execute it from there.

You can have a look at this doc for info on programming external memories.

Please feel free to ask any follow up questions you might have

1 Like

I apologize for too late reply, thank you so much for your answer. I will look at the document and github now. Have a good day!