Prerequisite
sudo apt install gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev zlib1g:i386 screen pax gzip gawk
Install FTP server
sudo apt install tftpd-hpa
service tftpd-hpa restart
Service tftpd-hpa status
Download and Install Petalinux (v2020.2)
Download petalinux installer from official Xilinx web site
chmod +x (installer)
mkdir -p ~/petalinux/2020.2
(installer) -d ~/petalinux/2020.2
Change to Use Bash Shell Script
chsh -s /bin/bash
# Logout and log back in after to observe the sh is changed
Environment Check and Setup
source ~/petalinux/2020.2/setting.sh
# Ensure working environment has been set
echo $PETALINUX
Minimum Hardware Requirement
One TTC (Triple Timer Counter)
External Memory Controller with at least 32MB of memory
UART
QSPI / SD Card
System user dts location (connect with additional peripheral?)
my-petalinux/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
Create and Build the Project
cd ~
petalinux-create --type project --template zynq --name my-petalinux
cd my-petalinux
# Config from xsa
petalinux-config --get-hw-description=(path-containing-xsa)
# Build the package
petalinux-build
# Generate Boot Image
petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system_wrapper.bit --u-boot
Prepare the SD Card
Use fdisk to assign
- 1st partition as W95 FAT32 (Partition Code: b) primary partition, 2048-50000 = ~24MB
- 2nd partition as EXT4, primary partition
sudo fdisk /dev/sd(?)
n = new partition
d = delete partition
t = change partition type (Code)
w = apply changes
a = active partition
mkfs.vfat -F32 vfat /dev/sd(?)1
mkfs.ext4 /dev/sd(?)2
Test U-Boot and Linux Kernel
Copy BOOT.BIN, image.ub and boot.scr into SD card FAT32 partition
Copy rootfs.cpio into EXT4 partition
Make sure the SD jumper is selected
Press reset button, output message will be shown on serial console
CPU: Zynq 7z010
Silicon: v3.1
DRAM: ECC disabled 512 MiB
Flash: 0 Bytes
NAND: 0 MiB
MMC: mmc@e0100000: 0
2010 bytes read in 12 ms (163.1 KiB/s)
Booting Linux on physical CPU 0x0
Linux version 5.4.0-xilinx-v2020.2 (oe-user@oe-host) (gcc version 9.2.0 (GCC)) 1
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt: Machine model: xlnx,zynq-7000
earlycon: cdns0 at MMIO 0xe0000000 (options '115200n8')
printk: bootconsole [cdns0] enabled
Memory policy: Data cache writealloc
cma: Reserved 16 MiB at 0x1f000000
Remarks:
BOOT.BIN:
- fsbl.elf (First stage bootloader)
- u-boot.elf (Second stage bootloader)
- design.bit (FPGA bitstream)
image.ub
- system.dtb
- uImage
- rootfs
沒有留言:
發佈留言