We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Could someone suggest a way to change the boot value of a control register (e.g. ACTLR)? It seems like i'd want to do it in bl31:bl31_arch_setup(), but does each CPU go through bl31 or just the boot CPU? If I was just interested in the A7s is there a way to only boot them?
Thanks,
Ali
The SCC General Purpose Register 1 (SCC GPR1) can be used to determine the boot CPUs. The layout of SCC GPR1 is as follows:
0 - Crypto Disable
1 - CFGTE
2 - CFGEE
3 - Boot Map Enable (default = 0)
4 - A53-0
5 - A53-1
6 - A53-2
7 - A53-3
8 - A57-0
9 - A57-1
10 - Reserved
11 - Reserved
[15:12] - Primary CPU selection. Index values 0 through 5, following
the order of cores above.
To set the Cortex-A57 as the boot cluster and Cortex-A57_0 as the primary CPU you will need to set bit 3 to enable the boot map, set bits 8,9 to select the A57s and finally setting [15:12] to 0x4 so that Cortex-A57_0 is considered the primary CPU. You will need to add the following SCC entry to the 'board.txt' file located in "E:\SITE1\HBI0262B":
SCC: 0x0F4 0x00004308 ;
This will determine what CPUs are brought out of reset by the SCP. This said, the AP Trusted firmware was hardcoded to use Cortex-A53_0 as the primary CPU.
To change the primary CPU in the AP Trusted Firmware, the PRIMARY_CPU entry in 'plat/juno/platform.h' will need to be altered. Steps describing how to re-build the AP Trusted firmware can be found on the 'Juno Software Guide ' page.
Regarding where system configurations such as setting the ACTLR should be performed, we would recommend either cpu_reset_handler() in BL1 or it can be done in bl31_arch_setup().
Thanks Luke!
I have a few more questions. If I only want to boot the the A53 cores then I'd write the following?
SCC: 0x0F4 0x000000F0
Does bl31_arch_setup() get called for each core, or just the boot core?
Thanks again,