|ARM Technical Support Knowledge Articles|
The Linux kernel has been ported to the Cortex-A9 MPCore, and platform support is provided for the ARM Versatile Emulation Baseboard (EB).
This article was tested with the A9 MPcore Fast Model and the following components (from Linux OS Downloads)
The normal initialization steps for SMP Linux on the EB would be: reset --> boot monitor --> u-boot --> Linux kernel
U-boot is only executed on cpu 0. The other cores are placed in stand-by by the boot monitor, and are awoken by the kernel.
The EB example systems provided with the Fast Model Portfolio do not, by default, include the boot monitor. In order to boot an SMP kernel, the boot monitor's handling of the other CPUs needs to be re-created.
The boot monitor places cpus1:n in stand-by while CPU 0 runs u-boot. CPU 0 programs the EB's SYS_FLAGS registers with the kernel entry point for the other CPUs, and awakens them using a SGI (Software Generated Interrupt). On awakening from stand-by, the other cpus need to read the SYS_FLAGS register, and branch to address stored in it.
A wrapper can be added to the u-boot image provided on the ARM website. The attached zip files contains an example of such a wrapper and instructions for booting Linux in RVDS and Fast Models environments. The example requires RVCT 4.0.
Article last edited on: 2012-01-13 12:28:12
Did you find this article helpful? Yes No
How can we improve this article?