PetaLinux 2022.2 Environment Setup and Build Workflow
Acquiring the SDK Installer
Begin by obtaining the PetaLinux 2022.2 installer package. For offline compilation capabilities, ensure you also download the corresponding pre-built downloads archive. The sstate cache is optional for this workflow as it is typically resilient to network interruptions.
Host Machine Prerequisites
Before initializing the toolchain, the host Ubuntu system requires specific development libraries and utilities. Execute the following commands to install the necessary dependencies:
sudo apt-get update
sudo apt-get install -y iproute2 gawk python3 python build-essential gcc git
sudo apt-get install -y make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev
sudo apt-get install -y flex bison libselinux1 gnupg wget git-core diffstat chrpath
sudo apt-get install -y socat xterm autoconf libtool tar unzip texinfo gcc-multilib
sudo apt-get install -y automake zlib1g:i386 screen pax gzip cpio python3-pip
sudo apt-get install -y python3-pexpect xz-utils debianutils iputils-ping python3-git
sudo apt-get install -y python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3
If specific package vertions conflict with your OS release, utilize aptitude to resolve dependencies. When prompted during the resolution process, decline the first solution and accept the second to allow the installation of compatible legacy libraries.
Toolchain Installation
Navigate to the directory containing the installer in your terminal. Grant execution permissions and run the setup script:
chmod +x petalinux-v2022.2-10141622-installer.run
./petalinux-v2022.2-10141622-installer.run
Follow the on-screen prompts to complete the installation to your desired path.
Workspace Initialization
Establish the project directory structure. Create a root folder for the PetaLinux project and a subdirectory named hardware. Place your hardware description file (XSA) into the hardware folder.
Use the following script to initialize the project and load the hardware configuration:
#!/bin/bash
set -e
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PETALINUX_ROOT="$HOME/tools/petalinux"
# Source the environment settings
source "$PETALINUX_ROOT/settings.sh"
# Create a new Zynq MPSoC project
petalinux-create -t project -n zynq_mp_project --template zynqMP
cd zynq_mp_project
# Import hardware description
petalinux-config --get-hw-description ../hardware/
echo "Configuration complete."
Offline Build Configuration
Within the configuration menu launched by the script, navigate to the Yocto settings. Specify the local paths for the downloaded resources to enable offline compilation. This prevents the build system from attempting to fetch sources from the internet.
Compilation and Packaging
Once configuration is saved, trigger the build process. After completion, package the boot images required for deployment:
petalinux-build
cd images/linux
petalinux-package --boot --u-boot --fpga --force
This generates the necessary binary files, including the bootloader and FPGA bitstream, in the current directory.
SD Card Preparation
Prepare your target SD card by creating two primary partitions. The first partition should be formatted as FAT32 to hold boot files, and the second as EXT4 for the root filesystem. Insure the FAT partition is marked as bootable.
Deployment and Verification
Copy the generated boot binaries (such as BOOT.bin and image.ub) from the images/linux directory to the FAT32 partition of the SD card. Insert the card into the Zynq MPSoC board and power on the device.
Upon successful boot, log in using the default credentials. You will be prompted to set a new password for the petalinux user. Once the shell is accessible, the system is operational.