2019-11-15 04:58 AM
2019-11-15 05:38 AM
As far as I know, ROM code does not start secondary CPU. ROM, TF-A and u-Boot only uses CPU0. CPU1 is started by the Kernel (I think this is not specific to OpenSTLinux).
Note that this kind of asymetric use case if likely not well supported by Cortex-A7. For example, inside Cortex-A7, the SMP bit must be set to 1 to enable data and L2 cache (so SMP=0 is not usable due to performance impact on DDR data accesses). Don't know if your bare-metal could run SMP=1 (common caches with coherency).
2019-11-15 05:54 AM
We want to start the secondary core from CPU0.As far as we read on ARM website,CPU0 is started initially and CPU1 is in WFI state.The primary core finishes the boot loader and immediately starts running Linux, while the secondary core waits in the boot loader for a jump address at particular memory location and CPU0 is responsible for writing the jump address at that particular memory location and sending the interrupt to CPU1.We need that particular memory location so that we can start the CPU1.
Link of ARM community where I got the above info.
2019-11-18 05:38 AM
The jump location (and some other controls) is stored in backup registers, information is available here : https://wiki.st.com/stm32mpu/wiki/STM32MP15_backup_registers#At_boot_time