Juno platform software user guide
Contents
1. Notice
The Juno software stack uses the Yocto project to build a Board Support Package (BSP) and the Poky Linux distribution. The Yocto project uses Bitbake to build the software stack.
2. Prerequisites
- These instructions assume that:
- Your host PC is running Ubuntu Linux 18.04 LTS.
- You are running the provided scripts in a bash shell environment.
- The following utilities must be available on your host PC:
- chrpath
- compression library
- diffstat
- gawk
- makeinfo
- openssl headers
- pip
- repo
- yocto
To resolve these dependencies, run:
sudo apt-get update sudo apt-get install chrpath gawk texinfo libssl-dev diffstat wget git-core unzip gcc-multilib \ build-essential socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils \ iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm git-lfs openssl \ curl libncurses-dev libz-dev python-pip repo
- Note that this software has been tested with
- repo version 2.11
- python version 2.7
3. Provided components
Within the Yocto project, each component included in the Juno software stack is specified as a bitbake recipe. The recipes specific to Juno are located at: <workspace>/layers/meta-arm.
4. Syncing and Building software stack
Create a new folder that will be your workspace, which will henceforth be referred to as <workspace> in these instructions
mkdir <workspace> cd <workspace> repo init -u https://git.linaro.org/landing-teams/working/arm/arm-reference-platforms-manifest.git -m juno-yocto.xml -b refs/tags/JUNO-2021.04.27 repo sync -j$(nproc) export DISTRO="poky" export MACHINE="juno" source setup-environment bitbake core-image-minimal
The initial clean build will be lengthy, given that all host utilities are to be built as well as the target images. This includes host executables (python, cmake, etc.) and the required toolchain(s)
Once the build is successful, all images will be placed in the <workspace>/build-poky/tmp-poky/deploy/images/juno directory.
Note that the BSP includes the Poky Linux distribution, which offers BusyBox-like utilities.
4.1. Software Components
4.1.1. Trusted Firmware-A
Based on Trusted Firmware-A
Recipe | <workspace>/layers/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-juno.inc |
Files |
|
4.1.2. System Control Processor (SCP)
Based on SCP Firmware
Recipe | <workspace>/layers/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc |
Files |
|
4.1.3. U-Boot
Based on U-Boot gitlab
Recipe | <workspace>/layers/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot_2020.07.bbappend |
Files |
|
4.1.4. Linux
The recipe responsible for building a 5.4 version of the Yocto Linux kernel
Recipe | <workspace>/layers/openembedded-core/meta/recipes-kernel/linux/linux-yocto_5.4.bb |
Files |
|
4.1.5. Poky Linux distro
The layer is based on the poky Linux distribution. The provided distribution is based on BusyBox and built using glibc.
Recipe | <workspace>/layers/openembedded-core/meta/recipes-core/images/core-image-minimal.bb |
Files |
|
4.2. Running the software on Juno
Copy <workspace>/build-poky/tmp-poky/deploy/image/juno/firmware-image-juno.tar.gz into Juno SDCARD
Connect Juno's serial port and USB type B port (both on the back panel) to the computer Open a terminal emulator (e.g. minicom) on the computer Power on the Juno board On the terminal emulator: Cmd> usb_on On the host computer: (adjust path to JUNO mount point as necessary): rm -rf /media/username/JUNO/* # make a back-up first tar -xf <workspace>/build-poky/tmp-poky/deploy/image/juno/firmware-image-juno.tar.gz -C /media/username/JUNO/ umount /media/username/JUNO/ # may take some time to sync
4.2.1. Disk boot
Prepare a USB stick
Insert a USB stick (min. 8GB) to a computer running Linux, Find out which device it is using "lsblk" if the usb stick already has non-GPT partitions, please delete all the partitions manually before issuing below command Write the image to the USB stick and eject:
sudo dd if=<workspace>/build-poky/tmp-poky/deploy/image/juno/core-image-minimal-juno.ext4 of=/dev/sdX bs=1M sudo eject /dev/sdX Insert the USB stick in Juno board (bottom-right port on the back panel) Refer Juno Getting Started documentation https://developer.arm.com/tools-and-software/development-boards/juno-development-board
4.2.2. NFS boot
Prepare NFS root file system
mkdir /path/to/nfsroot cd /path/to/nfsroot sudo tar xjf <workspace>/build-poky/tmp-poky/deploy/image/juno/core-image-minimal-juno.tar.bz2 # root is required Set up an NFS server and export the nfsroot in /etc/exports: /path/to/nfsroot *(rw,nohide,insecure,no_subtree_check,async,no_root_squash) Restart the NFS server or run: sudo exportfs -a configure u-boot bootcmd https://community.arm.com/developer/tools-software/oss-platforms/w/docs/542/nfs-remote-network-userspace-using-u-boot https://community.arm.com/developer/tools-software/oss-platforms/w/docs/495/tftp-remote-network-kernel-using-u-boot
5. AArch32 builds for Juno development board
yocto support for juno 32-bit is not supported
Copyright (c) 2020, Arm Limited. All rights reserved.