Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Open Source Software and Platforms
Open Source Software and Platforms
Wiki N1SDP Getting Started Guide
  • Help
  • Jump...
  • Cancel
  • About this wiki
  • Supported platforms
  • Obtaining support
  • +Arm Reference Platforms deliverables
  • -A-class platforms
    • +Juno
    • +FVPs
    • +Total Compute Platforms
    • +Morello Platform
    • +System Guidance for Infrastructure (SGI)
    • +System Guidance for Mobile (SGM)
    • Corstone-500
    • Cortex-A5 DesignStart
    • -Neoverse N1 SDP
      • N1SDP FAQ
      • N1SDP Getting Started Guide
      • Notice regarding N1SDP power supply unit (PSU)
      • Notice: Potential damage to N1SDP boards if using latest firmware release
      • Notice: Remote reset switch impact on reset host
    • Neoverse Reference Designs
    • +Legacy platforms
  • +M-class platforms
  • +R-class platforms
  • +FPGA prototyping boards
  • +Open source software

You are currently reviewing an older revision of this page.

  • History View current version

N1SDP Getting Started Guide

The Neoverse N1 System Development Platform (N1SDP) is an enterprise class reference board based on the Neoverse N1 core.

This document is a guide on how to run an Arm Reference Platforms software stack on N1SDP.

Prerequisites

  • These instructions show the process of building software from source code. It is assumed that your host PC is running Ubuntu Linux 16.04.1 LTS and build is done as a user, not root.
    • Host PC with Windows 10 can be used, but in this case only prebuilt configurations will be available
  • To prepare a bootable disk, a USB drive or PCIe SSD with 4GB or more capacity is required.
    • NOTE: Arm strongly recommends using a PCIe SSD instead of USB drive when undertaking performance evaluations.

Software Stack preparation
Configure git

$ git config --global user.name “John Doe”
$ git config --global user.email “john.doe@example.com”
$ git config --global color.diff auto

Sync N1SDP software stack

$ git clone https://git.linaro.org/landing-teams/working/arm/arm-reference-platforms.git
$ cd arm-reference-platforms/

If you want to get a specific tag, please checkout that tag first overwise it will be disabled and only master will be available. For example:

$ git tag | grep N1SDP
N1SDP-2019.09.13
N1SDP-ALPHA1-19.04
N1SDP-ALPHA2-19.07
N1SDP-ALPHA2-CCIX-19.07
$ git checkout N1SDP-2019.09.13

The remainder of these instructions demonstrate the use of master.

Next run the sync_workspace.py script. It will automatically detect and list any missing prerequisite packages, which you will need to manually install before proceeding.

$ python3 sync_workspace.py

The script will ask you to specify a platform and configuration:

## Please select a platform

1) Development boards
2) Corstone Foundation IP
3) DesignStart
4) Fixed Virtual Platforms (FVPs)

> 1

## Please select a platform

1) Juno
2) Neoverse N1 SDP
3) TC2

> 2

## Please specify whether you want to:

1) Build from source
2) Use prebuilt configuration

> 1

## Please select a manifest release tag to checkout:

 1) N1SDP-ALPHA1-19.04        -- <DISABLED>
 2) N1SDP-ALPHA2-19.07        -- <DISABLED>
 3) N1SDP-ALPHA2-CCIX-19.07   -- <DISABLED>
 4) N1SDP-2019.09.13          -- <DISABLED>
 5) master

> 5

## Please select your filesystem:

 1) BusyBox
 2) Ubuntu Server

> 2

## Your chosen configuration is shown below:

    +---------------+-------------------------------------------------------+
    | Workspace     | /path/to/arm-reference-platforms/ |
    | Platform      | Neoverse N1 SDP                                       |
    | Type          | Build from source                                     |
    | Release       | master                                                |
    | Configuration | Mainline Kernel + Ubuntu Server                       |
    +---------------+-------------------------------------------------------+

The following software components are included:

    +----------------------+
    | Motherboard firmware |
    | Trusted Firmware-A   |
    | SCP-firmware         |
    | EDK II UEFI          |
    | GRUB                 |
    | Mainline Kernel      |
    | Ubuntu Server        |
    +----------------------+

## Proceed with this configuration?:

 1) Yes
 2) No

> 1

The script will fetch and extract all required source code, tools, and binary artifacts. After successful execution this message will be shown:

Workspace initialised.

To build:

    chmod a+x /build-scripts/build-all.sh
    /build-scripts/build-all.sh all

Resulting binaries will be placed in:

    /output/n1sdp-ubuntu/

For more information, see the docs here:

    docs/n1sdp

Visit our forums for platforms & open source discussions:

    https://community.arm.com/oss-platforms/f

Thank you for using Arm Reference Platforms.

Build  binaries

$ ./build-scripts/build-all.sh all

A directory output/n1sdp will be created in the workspace:

$ ls ./output/n1sdp/
build_artifact  capsule  components  grub-ubuntu.img  ramdisk.img  rom

Prepare a bootable USB drive with Ubuntu Server

<workspace>/output/n1sdp/build_artifact/grub-ubuntu.img needs to be flashed to your USB drive or PCIe SSD. In this example we are using a USB drive but the process is the same for a PCIe SSD, though it may take a while for the dd command to complete if your SSD is large.

Identify the USB drive device:

$ lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    0 931.5G  0 disk
└─sda1                8:1    0 931.5G  0 part
  └─vg_sda-data_sda 253:2    0 931.5G  0 lvm  /data_sda
sdb                   8:16   1  14.6G  0 disk

In the given example the device file we need is /dev/sdb. Be cautious here and don't confuse your host PC's own hard drive with the USB drive.

$ sudo dd if=./output/n1sdp/build_artifact/grub-ubuntu.img of=/dev/sdb conv=fsync bs=1M

Note that we dd the Ubuntu Server image directly to /dev/sdb, not to a partition on /dev/sdb such as /dev/sdb1.

Two partitions will be created on the USB drive. You can check this with fdisk:

$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 14.6 GiB, 15669919744 bytes, 30605312 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        2048    40959    38912   19M  6 FAT16
/dev/sdb2       40960 30605311 30564352 14.6G 83 Linux

The bootable USB drive is ready. If the output of fdisk does not match the above, please check that you have not made a mistake with your dd command.

Booting and connect to the N1SDP

Connect the USB drive to a USB port on the N1SDP back panel (highlighted in the red box):

 USB ports

Connect the provided USB-B cable to the DBG USB port of the N1SDP back panel (highlighted in the red box) to your host PC:

 USB DBG port

Additional Windows 10 Host PC step: Install FDTI driver to get access to the N1SPD COM ports. See here (the same drivers are used for N1SDP and MPS3). COM ports will be visible at Control Panel->Device Manager->Ports (COM & LPT).

Find four TTY USB devices in your /dev directory:

 ttyUSB devices

By default the four ports are connected to the following devices:

  • ttyUSB<n>     Motherboard Configuration Controller (MCC)
  • ttyUSB<n+1> Application processor (AP)
  • ttyUSB<n+2> System Control Processor (SCP)
  • ttyUSB<n+3> Manageability Control Processor (MCP)

In this guide the ports are: ttyUSB0 - MCC, ttyUSB1 - AP, ttyUSB2 - SCP, ttyUSB3 - MCP.

The port settings are:

  • 115200 Baud
  • 8N1
  • No hardware or software flow support

Connect to the MCC console. Any terminal applications such as PuTTy or minicom will work. In this guide we use the screen command:

$ sudo screen /dev/ttyUSB0 115200

Turn the main power switch on the power supply of the N1SDP tower. The MCC window is shown. Type ? to see MCC firmware version and a list of commands:

Cmd> ?
Arm N1SDP MCC Firmware v1.0.1
Build Date: Sep  5 2019
Build Time: 14:18:16
+ command ------------------+ function ---------------------------------+
| CAP "fname" [/A]          | captures serial data to a file            |
|                           |  [/A option appends data to a file]       |
| FILL "fname" [nnnn]       | create a file filled with text            |
|                           |  [nnnn - number of lines, default=1000]   |
| TYPE "fname"              | displays the content of a text file       |
| REN "fname1" "fname2"     | renames a file 'fname1' to 'fname2'       |
| COPY "fin" ["fin2"] "fout"| copies a file 'fin' to 'fout' file        |
|                           |  ['fin2' option merges 'fin' and 'fin2']  |
| DEL "fname"               | deletes a file                            |
| DIR "[mask]"              | displays a list of files in the directory |
| FORMAT [label]            | formats Flash Memory Card                 |
| USB_ON                    | Enable usb                                |
| USB_OFF                   | Disable usb                               |
| SHUTDOWN                  | Shutdown PSU (leave micro running)        |
| REBOOT                    | Power cycle system and reboot             |
| RESET                     | Reset Board using CB_nRST                 |
| DEBUG                     | Enters debug menu                         |
| EEPROM                    | Enters eeprom menu                        |
| HELP  or  ?               | displays this help                        |
|                                                                       |
| THE FOLLOWING COMMANDS ARE ONLY AVAILABLE IN RUN MODE                 |
|                                                                       |
| CASE_FAN_SPEED "SPEED"    | Choose from SLOW, MEDIUM, FAST            |
| READ_AXI "fname"          | Read system memory to file 'fname'        |
|          "address"        | from address to end address               |
|          "end_address"    |                                           |
| WRITE_AXI "fname"         | Write file 'fname' to system memory       |
|           "address"       | at address                                |
+---------------------------+-------------------------------------------+
Cmd>

Enable USB:

Cmd> USB_ON

Mount the N1SDP's internal microSD card over the DBG USB connection to your host PC and copy the required files.

The microSD card is visible on your host PC as a disk device. To check using fdisk:

$ sudo fdisk -l
Disk /dev/sdb: 1.9 GiB, 2008023040 bytes, 3921920 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb5316100

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1         255 3921919 3921665  1.9G  c W95 FAT32 (LBA)

In this example we need to mount /dev/sdb1.

$ mkdir sdcard
$ sudo mount /dev/sdb1 ./sdcard
$ ls ./sdcard
config.txt   ee0316a.txt   LICENSES   LOG.TXT   MB   SOFTWARE

Copy the contents of <workspace>/board_firmware/ onto the mounted microSD card.

Copy mcp_fw.bin, mcp_rom.bin, scp_fw.bin, scp_rom.bin, and uefi.bin from <workspace>/output/n1sdp/build_artifact/ to the SOFTWARE/ directory of the mounted microSD card:

$ sudo cp ./output/n1sdp/build_artifact/*.bin ./sdcard/SOFTWARE
$ sync
$ sudo umount ./sdcard
$ sudo eject /dev/sdb

It is important that you issue the sync command if running Linux on your host PC, and that you safely unmount & eject the microSD card before power cycling the N1SDP. Failure to do so may result in failure to boot.

Ensure that both configuration switches on the back panel are in the OFF position:

Configuration Switches

Connect to the AP console:

$ sudo screen /dev/ttyUSB1 115200

Connect an ethernet cable to the GbE port to avoid waiting for a 5 minute DHCP configuration timeout during the Ubuntu Server boot process:

 Gbe Port

Power on the main SoC using the MCC console:

Cmd> REBOOT

Or press the power button on the N1SDP front panel:

 Front Panel

Check the AP console window. When first booting using a freshly prepared USB drive, Ubuntu Server will be installed and you will be dropped into a minimal shell environment. At this point you will need to power cycle the N1SDP board to reboot into the actual Ubuntu Server distro environment.

On the MCC console:

Cmd> REBOOT

On the second boot the grub menu will be shown with the Ubuntu option selected. After booting the Ubuntu prompt should be shown, indicating the system is operational.

Ubuntu 18.04.3 LTS n1sdp ttyAMA0

n1sdp login:

Use these credentials to login:
    user: root
    password: root