Samsung 2017 A series phones

About this

This document describes the information about Samsung A(7/5/3) 2017 midrange phones and u-boot usage steps.

U-Boot can be used as a chain-loaded bootloader to replace Samsung’s original SBOOT bootloader. It is loaded as an Android boot image through SBOOT.

Phone specs

A3 (SM-A320) (a3y17lte)

  • 4.7 AMOLED display

  • Exynos 7870 SoC

  • 16GB flash

  • 2GB RAM

A5 (SM-A520) (a5y17lte)

  • 5.2 AMOLED display

  • Exynos 7880 SoC

  • 32GB flash

  • 3GB RAM

A7 (SM-A720) (a5y17lte)

  • 5.7 AMOLED display

  • Exynos 7880 SoC

  • 32GB flash

  • 3GB RAM

Installation

Building u-boot

First, setup CROSS_COMPILE for aarch64. Then, build U-Boot for your phone, for example a5y17lte:

$ export CROSS_COMPILE=<aarch64 toolchain prefix>
$ make a5y17lte_defconfig
$ make

This will build u-boot.bin in the configured output directory.

Payload

What is a payload?

A payload file is a file to be used instead of linux kernel in android boot image. This file will be loaded into memory, and executed by SBOOT, and is therefore SBOOT’s payload. It may be pure u-boot (with loading u-boot’s payload from flash in mind), or u-boot + u-boot’s payload.

It should be kept in mind, that SBOOT binary patches it’s payload after loading in address range 0x401f8550-0x401f9280. Given SBOOT loads payload to 0x40001000, a range of 0x1f7550-0x1f8280 (2061648-2065024) in a payload file will be corrupted after loading to RAM.

Creating payload file

  • Assemble FIT image for your kernel

  • Create a file for u-boot payload touch sboot-payload

  • Write zeroes till 0x200000 address to be sure SBOOT won’t corrupt your info dd if=/dev/zero of=sboot-payload bs=$((0x200000)) count=1

  • Write u-boot to the start of the payload dd if=<u-boot.bin path> of=sboot-payload

  • Write FIT image to payload from 0x200000 address dd if=<FIT image path> of=sboot-payload seek=1 bs=2M

Creating android boot image

Once payload created, it’s time for android image:

mkbootimg --base 0x40000000 --kernel_offset 0x00000000 --ramdisk_offset 0x01000000 --tags_offset 0x00000100 --pagesize 2048 --second_offset 0x00f00000 --kernel <sboot-payload path> -o uboot.img

Note, that stock Samsung bootloader ignores offsets, set in mkbootimg.

Flashing

Flash like regular android boot image.