ARM Technical Support Knowledge Articles

How do I boot SMP Linux on the EB RTSM?

Applies to: Fast Models, RealView Development Suite (RVDS)

Answer

Introduction

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.

Behaviour of the boot monitor

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.

Re-creating the boot monitor

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.

Related Knowledge Base Articles

For RVDS: Can I boot the Linux kernel on the RTSMs provided with RVDS?

For Fast Models: Can I boot the Linux kernel on the EB example systems?

Attachments: linux_SMP_bootstrap.ZIP

Article last edited on: 2012-01-13 12:28:12

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential