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
git clone -b krogoth http://git.yoctoproject.org/cgit/cgit.cgi/meta-
git clone -b rpi-4.8.y https://github.com/mickey-happygolucky/meta-rpi3-
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”
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-
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:
To connect to the device:
ssh [email protected]<ip_addr>
This process gave me access to the RPi3 with the ARMv8 build.