Know-How

How to build RPI3 ARMv8 aarch64 build

Alexei Sragovitch | November 2, 2017
RPI3 banner

Introduction

Raspberry Pi 3 (RPi3) currently uses cortex A53, which contains ARMv8 architecture CPU. However, most available documented builds for RPi3 are based on ARMv7 rather than ARMv8. In this post, I’ll explain how to build an RPi3 ARMv8 using Yocto Project on an Ubuntu machine.

The Yocto Project does have an official layer for RPi3, but it’s intended for RPI3 ARMv7 builds. I needed to create a new layer for the Yocto Project that will build a Linux Kernel and rootfs for ARMv8.

After trying a number of different sites, I finally discovered this site, which I was able to use to create a working ARMv8 layer for the RPi3 Yocto Project. My final build included the ability to connect to the board through an SSH connection, which required several modifications.

The modifications I made to the layer allowed it to choose a correct branch and commit. The section below explains how I did this in greater detail.

Creating Yocto ARMv8 aarch64

git clone -b krogoth git://git.yoctoproject.org/poky.git poky64
cd poky64/
git clone -b krogoth ht​tp://git.yoctoproject.org/cgit/cgit.cgi/meta-
raspberrypi/
git clone -b rpi-4.8.y ht​tps://github.com/mickey-happygolucky/meta-rpi3-
aarch64.git
source oe-init-build-env bitbake-layers add-layer ../meta-raspberrypi
bitbake-layers add-layer ../meta-rpi3-aarch64

edit conf/local.conf and set MACHINE ??= “raspberrypi3-64” and add ENABLE_UART = “1”
at the end
modify linux-raspberrypi_4.8.bb to:
SRCREV = “061dccce6cf6705bbb5da29a643f4b0ad1d11630”
SRC_URI = “git://github.com/raspberrypi/linux.git;branch=rpi-4.8.y”
bitbake rpi-basic-image

I now have an image with SSH at: tmp/deploy/images/raspberrypi3-64/rpi-basic-image-raspberrypi3-64.rpi-sdimg

Install and connect to RPI3

To convert from Flash to SD:
sudo dd if=tmp/deploy/images/raspberrypi3-64/rpi-basic-image-raspberrypi3-
64.rpi-sdimg of=/dev/mmcblk0

To install, I set the Ethernet connection on my Ubuntu machine to “Shared to other computers”. The Ubuntu machine gave me an IP address to the RPi3 board once it booted.

Then, I placed the SD card in the RPi3 and connected the Ethernet cable. (You can connect UART to the RPi3, but it’s not necessary.)

After, I booted the board and waited until it received an IP from my Ubuntu machine. Once it received an IP address, it was visible in the UART console.

To get an IP of the device, I ran the following:
cat /var/lib/misc/dnsmasq.leases

To connect to the device:
ssh [email protected]<ip_addr>

This process gave me access to the RPi3 with the ARMv8 build.

RPI3 Build

Learn more about Autonomous Security Solutions

Read more

Get Karamba’s Autonomous Security White Paper

Loc

USA

41000 Woodward Ave
Building East, Suite 350
Bloomfield Hills, MI 48304
Tel: +1 248-574-5171

Loc

Israel

24 HaNagar Street
Hod Hasharon
45277-13
Tel: +972 9 88 66 113

Loc

Japan

6-4 Akashicho
Chuo-ku, Tokyo
104-0044
Tel: +81 3 6853 7401