ARM Technical Support Knowledge Articles

How do I boot Linux on the A57-SMM?

Applies to: V2F-1XV7


This article includes the necessary image files required for setting up an arm64 Linux system on an ARM Cortex-A57x1 SMM.

  1. Please download the pre-built Kernel image and the device tree blob. If you require information on the Kernel build configuration please see the .config file.

  2. For the AARCH64 filesystem image, download the following file (vexpress64-openembedded_lamp-armv8_20130927-7.img.gz) and extract it to a directory. Use Linux or a Windows software image writer to copy it to a USB memory stick/portable hard disk. Plug this in the rear panel of the Versatile Express Motherboard.

Now follow the instructions below which explain how to use the images and configure the Versatile Express system:

  1. Mount the SMM over USB and copy the kernel image to the SMM’s SOFTWARE directory as linux.bin. Similarly, copy fdt.dtb to the SOFTWARE directory. Then add the appropriate entries to SITE1/HBI0247C/SMMA57/images.txt.

    NOR1UPDATE: AUTO                  ;Image Update:NONE/AUTO/FORCE
    NOR1ADDRESS: 0x0                  ;Image Flash Address
    NOR1FILE: \SOFTWARE\fdt.dtb       ;Image File Name
    NOR1LOAD: 0x88000000              ;Image Load Address
    NOR1ENTRY: 0x88000000             ;Image Entry Address
    NOR2UPDATE: AUTO                  ;Image Update:NONE/AUTO/FORCE
    NOR2ADDRESS: 0x0                  ;Image Flash Address
    NOR2FILE: \SOFTWARE\linux.bin     ;Image File Name
    NOR2LOAD: 0x80080000              ;Image Load Address
    NOR2ENTRY: 0x80080000             ;Image Entry Address
    The NORx numbers in this document may not be correct for your IMAGES.TXT. Compare them against existing entries, and remember to update the TOTALIMAGES directive.
  2. Linux can operate at EL2 or EL1NS. It is recommended to boot Linux in EL2 so as to have access to the virtualization extensions. Boot monitor is used to boot the kernel, so ensure that a 64-bit boot monitor binary is installed. The kernel currently expects to be loaded at offset 0x80000 from the start of physical memory, and the device tree blob should be placed sufficiently far away so as to avoid corruption by the kernel when loading up.

  3. In SITE1/HBI0247C/SMMA57/a57_b00.txt, ensure that CFGREG1 bits[31:28] == 2:
    SCC: 0x004 0x20000000 ;CFGREG1 - Bits [31:28] execution level
    Once the files on the board have been updated, remember to ensure that updates have been flushed to the board.
  4. Reboot the board and wait for the images to be written to the flash. Eventually a prompt similar to the below should appear:

    Init complete at EL2
    ARM Versatile Express V2M-P1 AArch64 Boot Monitor
    Version: V1.0.5
    Build Date: Jun 14 2013
    Daughterboard Site 1: V2F-1XV7 Cortex A57 (Atlas)
    Daughterboard Site 2: Not Used
  5. At this point, you should be able to boot the kernel with:

    > fl linux fdt fdt
    > fl linux boot linux 
    After a few seconds the kernel should being printing boot log messages to the UART.

NOTE: Please note that we will be unable to provide any assistance on building Linux images; the support given only extends to the limits of this article. For instructions on how we have built this particular kernel image please see the attached html document. This can possibly act as guidance material should you require to re-build the kernel image.

Attachments: fdt.dtb , linux.bin , linux-on-smm.html , .config

Article last edited on: 2013-11-11 09:45:28

Rate this article

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