Linux on the ST-Ericsson Ux500 platforms
(Last test 2020-04-17 using kernel v5.7-rc1)

The ST-Ericsson Ux500 was primarily incorporated in two chipsets found in the wild: U8500 and A9500. The latter lacks a modem but is otherwise the same chip. The Ux500 is also known as NovaThor which has its own Wikipedia article even.

The U8500 was used in numerous mobile phones from Samsung and Sony Ericsson, the U9500 was used in a few tablet products and the single board computer Snowball.

Documentation

Look into the wayback machine for ST-Ericsson and you find the chip docs!

Old Snowball Files

The introduction video from Movial is still available at YouTube!

The support for Snowball U9500 has been discontinued, but there is a backup of all related files here on GitHub if you e.g. need to recover the board or so. This repository includes some documentation.

Target platforms

Toolchain

The latest ARM-provided GCC toolchain is what I usually use to compile recent kernels. You want the arm-none-linux-gnueabihf compiler.

Download the toolchain and install it such that it is always in your path, example:

CS_BASE=/var/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf
export PATH=$PATH:${CS_BASE}/bin
export MANPATH=$MANPATH:${CS_BASE}/share/doc/gcc-linaro-arm-linux-gnueabihf/man/

Here are some .mak Makefiles that I use to configure and build a U300, Nomadik or Ux500 series kernel out-of-the box:

ux500.mak can be used for any Ux500 platform actually, it configures and builds a combined binary for these platforms. If you don't specify a UX500_BOARD to the script, it will built it with a Snowball device tree.

Using these also optionally use a minimal initramfs root filesystem placed in your home directory. (This is to get you to a prompt without a root filesystem installed in the flash, such as the ArchLinux method described below.) These root filesystems are created using this script. Prebuilt version can be obtained here:

Copy the rootfs to you home directory and the ux500.mak file to your linux/ git tree or base dir and simply:

> make -f ux500.mak config
> make -f ux500.mak build

Upload a zImage on Ux500 using fastboot

The fastboot i.e. LittleKernel boot loader in the later ux500 platforms does not support not passing an initrd image when booting over USB. The proper way to kick a boot with just initramfs is like this:

> echo "foo" > null-initrd
> fastboot --base 0x0 boot zImage null-initrd

Elder versions of fastboot do not recognize the --base argument so if you have one of those instead just specify -b 0x0.

Upload a zImage on Ux500 using U-Boot

The Snowball board usually comes with U-Boot pre-installed so you can use this to boot the board using TFTP over the on-board ethernet connector.

My notes on installing a TFTP server might be helpful to set up the server.

To boot from U-Boot you need a uImage, then:

setenv ethaddr 6e:e6:84:36:8e:9e ; setenv serverip 169.254.1.1 ; setenv ipaddr 169.254.1.2 ; tftpboot 0x01000000 169.254.1.1:uImage ; bootm

Booting a kernel on Samsung Galaxy Xcover 2 (GT-S7710)

The Samsung Xcover 2 was released in 2013 and uses the U8500 SoC. According to the source code release for GT-S7710 the Samsung code name for this product is Skomer.

Prerequisites: dnf -y install abootimg heimdall

The abootimg creates a boot image on the Android-specific format (containing a kernel, a ramdisk and some parameters) and heimdall is a flashing tool to install new firmware into Samsung phones.

Links

Prebuilt images ux500

ArchLinux on the ux500 (especially Snowball)

It's fairly simple to install a generic ArchLinux distribution on the ux500 variants to get some proper root filesystem with some more action. This is based on the Versatile Express installation procedure.

We start by putting it on an SD card and from there to the internal eMMC.

You need to first build a kernel, you can use the prebuilt v4.4 kernel found further down this page.

U-Boot procedure

The following was done on the Snowball which has an on-board 7GiB eMMC which appears as /dev/mmcblk0 and is pre-partitioned with three partitions:

We will proceed to overwrite the uImage in mmcblk0p2 with the latest we have and then overwrite the root filesysystem in mmcblk0p3 with ArchLinux.

Fastboot procedure

If the board has Fastboot installed, we do not need to screw around with FAT partitions etc.

Links