THANNA-OS
Build Petalinux
Dependencies
Install Petalinux-Tools-Dependencies (Ubuntu 22.04.3 LTS):
sudo apt-get install -y iproute2 gawk python3 python2.7 build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint
Maybe you have to activate i386 architecture:
dpkg --add-architecture i386and installlibtool-binLink libtinfo.so.6 to libtinfo.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5Install Petalinux-Tools 2023.2: Download
Source Petalinux-Tools-Settings:
source <PETALINUX-TOOLS-PATH>/settings.sh
Build
cd thannaOSmake
Caching
To preserve the petalinux sstate-cache and downloaded requirements for building the kernel you can create two directories somewhere on your filesystem outside the repository.
Example:
Create directories (replace
$USERwith your actual username)download-dir:
/home/$USER/petalinux/2023.2/downloadssstate-cache-dir:
/home/$USER/petalinux/2023.2/sstate-cache/arm
Create file
thannaOS/project-spec/meta-user/conf/petalinuxbsp.confDL_DIR = "/home/$USER/petalinux/2023.2/downloads" SSTATE_DIR = "/home/$USER/petalinux/2023.2/sstate-cache/arm"
Boot
Boot from SD
non persistent rootfs
Make sure Boot-Jumpers are set to SD-Boot
Format SD-Card with FAT32
cp images/linux/{BOOT.BIN,boot.scr,image.ub} <PATH_TO_SDMOUNT>
persistent rootfs
follow the steps described in the xilinx wiki to format the sd-card
run
petalinux-config, navigate to Image Packaging Configuration->Root filesystem type and change it toEXT4 (SD/eMMC/SATA/USB), save and exitrebuild the project (
petalinux-build, etc.)sudo dd if=./images/linux/rootfs.ext4 of=/dev/sdX(sdX is the ext4 partition you created before)sudo e2fsck -f /dev/sdXsudo resize2fs /dev/sdXcopy boot files to boot-partition
cp images/linux/{BOOT.BIN,boot.scr,image.ub} <PATH_TO_SDMOUNT>
Boot from JTAG
Make sure Boot-Jumpers are set to JTAG-Boot
Start the hardware-server:
hw_serverDownload to Zybo-Board:
petalinux-boot --jtag --fpga --kernel ./images/linux/uImageConnect to SSH/UART
Connecting to the Board
UART
Make sure your user has access to
/dev/ttyUSB*sudo usermod -aG $USER dialout newgrp dialout
screen /dev/ttyUSB1 115200
SSH
plug in ethernet cable
set a password for user
petalinux:passwd petalinuxlook up ip address with
ip aconnect to
petalinux@XXX.XXX.XXX.XXX
VSCode-Remote
Add the following to your ssh_config (on the system vscode is running)
Host XXX.XXX.XXX.XXX Hostname XXX.XXX.XXX.XXX User petalinux StrictHostKeyChecking no
Connect via VSCode
Committing changes
As stated here “A PetaLinux project should be cleaned using
petalinux-build -x mrproperbefore submitting to the source control.” or just runmake clean