Understanding STM32MP2 Boot Flow and M33 Firmware Deployment
Has anyone here already worked with a microprocessor from the STM32MP2 series and can explain a bit about the firmware structure?
I’m supposed to develop a board using an STM32MP257 SoM, and before starting I wanted to get familiar with the processor using the Discovery Board. However, I still don’t fully understand when to use which boot flavor, and what advantages the A35 or M33 flavor has over the other.
What is the best way to flash M33 firmware? If I understood it correctly, when using the A35 flavor, the A35 loads the M33 firmware into memory, and you can then stop/start/reboot the M33 core and update the compiled firmware while Linux is still running. Is that correct? If so, how can the on-board ST-Link flash M33 firmware then? Can the DFU USB-C connector also be used to update M33 firmware, or would I have to flash the whole OS again?
The RIF setup and overall workflow is quite confusing to understand and configure for me too. Are there any better resources or tutorials for this besides the Wiki? I don‘t quite get it when to set up RIF parameters or just ignore it and use the CubeMX defaults.
Also, I find the whole SDK setup somewhat confusing. If I only want to change peripheral assignments (for example assigning the LPUART to the M33), what exactly do I need to recompile? TF-A and the kernel DTS, or also U-Boot? How can I properly compile the files CubeMX generated and integrate them into the starter package? I followed the readme, but it wants to compile even more files than I should need (for example for NOR storage, the board doesnt even have). Im not sure what I need to recompile and what not, and how to integrate it into the TVS.
Apart from the wiki and the README files, there don’t really seem to be many good resources explaining how to properly develop for these MPUs.
I appreciate any help :)